Chatbot returning "I don’t understand" when it doesn’t work

Asked

Viewed 21 times

-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.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.