-3
I’m wanting my Chatbot to recognize the names using JSON, but they always return "not understood" when not right. Any hint to fix this ?
import json
class Chatbot():
def __init__(self, nome):
try:
memoria = open(nome + '.json','r')
except FileNotFoundError:
memoria = open(nome + '.json','w')
memoria.write ('["Hiago","Diego"]')
memoria.close()
memoria = open(nome + '.json','r')
self.nome = nome
self.conhecidos = json.load(memoria)
memoria.close()
self.historico = []
self.frases = {'oi': 'Olá, qual o seu nome', 'tchau': 'Tchau'}
def escuta(self):
frase = input('>: ')
frase = frase.lower()
frase = frase.replace('é', 'eh')
return frase
def pensa(self,frase):
if frase in self.frases:
return self.frases[frase]
if frase == 'aprende':
chave = input('Digite a frase:')
resp = input('Digite a resposta:')
self.frases[chave] = resp
return 'Aprendido'
if self.historico == 'olá, qual o seu nome?':
nome = self.pegaNome(frase)
frase = self.respondeNome(frase)
return frase
try:
resp = eval(frase)
return resp
except:
pass
return 'Não entendi'
def pegaNome(self, nome):
if 'o meu nome eh ' in nome:
nome = nome
nome = nome.title()
return nome
def respondeNome(self, nome):
if nome in self.conhecidos:
frase = 'Eae '
else:
frase = 'Muito prazer'
self.conhecidos.append(nome)
memoria = open(self.nome+'.json', 'w')
json.dump(self.conhecidos, memoria)
memoria.close()
return frase+nome
def fala(self, frase):
print(frase)
self.historico.append(frase)
Bot = Chatbot('Cleitin')
while True:
frase = Bot.escuta()
resp = Bot.pensa(frase)
Bot.fala(resp)
if resp == 'Tchau':
break
print('tchau')
Please clarify your problem or provide additional details in order to highlight exactly what you need. The way it’s written these days it’s hard to tell exactly what you’re asking.
–