def chat_admin( ): ####################### C H A T ################################### chatbot = ChatBot( 'RobotUPB', storage_adapter='chatterbot.storage.MongoDatabaseAdapter', #database_uri='mongodb://localhost:27017/PrototipoDB', #database='./database.sqlite', #./database.sqlite5 fichero de la base de datos (si no existe se creará automáticamente) input_adapter= 'chatterbot.input.TerminalAdapter', #indica que la pregunta se toma del terminal output_adapter= 'chatterbot.output.TerminalAdapter', #indeica que la respuesta se saca por el terminal output_format="text", trainer='chatterbot.trainers.ListTrainer', logic_adapters=[ "chatterbot.logic.BestMatch", 'chatterbot.logic.MathematicalEvaluation', { 'import_path': 'chatterbot.logic.BestMatch', 'default_response': 'Lo siento pero no entiendo..', 'maximum_similarity_threshold': 1 }, ], preprocessors=['chatterbot.preprocessors.clean_whitespace'], ) treiner = ChatterBotCorpusTrainer(chatbot) treiner2 = ListTrainer(chatbot) treiner.train("./PreguntasYRespuestas.yml") #treiner.train("chatterbot.corpus.spanish") levenshtein_distance = LevenshteinDistance() disparate = Statement( 'Mala Respuesta') #convertimos una frase en un tipo statement entradaDelUsuario = "" #variable que contendrá lo que haya escrito el usuario entradaDelUsuarioAnterior = "" print( "***Recuerda: para corregir una PQRS escribe >>> Mala Respuesta <<< y >>> adios <<< para salir." ) while entradaDelUsuario != "adios": entradaDelUsuario = input(">>> ") if entradaDelUsuario == '': print('Digiste un algo') else: respuesta = chatbot.get_response(Statement(entradaDelUsuario)) print('Bot:' + str(respuesta)) if levenshtein_distance.compare(Statement(entradaDelUsuario), Statement(disparate)) > 0.51: print('¿Qué debería haber dicho?') entradaDelUsuarioCorrecta = input(">>> ") treiner2.train( [entradaDelUsuarioAnterior, entradaDelUsuarioCorrecta]) print("He aprendiendo que cuando digas: {}. Debo responder: {}". format(entradaDelUsuarioAnterior, entradaDelUsuarioCorrecta)) entradaDelUsuarioAnterior = entradaDelUsuario
def bot_coversacional(message): chatbot = ChatBot( 'chatpet', input_adapter='chatterbot.input.TerminalAdapter', output_adapter='chatterbot.output.TerminalAdapter', trainer='chatterbot.trainers.ListTrainer', logic_adapters=[{ "import_path": "chatterbot.logic.BestMatch", "statement_comparison_function": "chatterbot.comparisons.levenshtein_distance", }], preprocessors=['chatterbot.preprocessors.clean_whitespace'], ) traine = ListTrainer(chatbot) trainer = ChatterBotCorpusTrainer(chatbot) trainer.train("chatterbot.corpus.spanish") trainer.train("./chattrain.yml") trainer.train("./psico.yml") trainer.train("./conversation.yml") trainer.train("./covid.yml") trainer.train("./mentals.yml") trainer.train("./medcurio.yml") levenshtein_distance = LevenshteinDistance() error = Statement('Te has equivocado') entradaDelUsuarioAnterior = "" respuesta = chatbot.get_response(message) if levenshtein_distance.compare(Statement(message), error) > 0.60: bot.reply_to(message, "¿Qué debería haber dicho?") entradaDelUsuarioCorreccion = message traine.train([entradaDelUsuarioAnterior, entradaDelUsuarioCorreccion]) bot.reply_to( message, "Bot: He aprendiendo que cuando digas {} debo responder {}".format( entradaDelUsuarioAnterior, entradaDelUsuarioCorreccion)) entradaDelUsuarioAnterior = message bot.reply_to(message, respuesta) mensaje = open("respuesta.txt", "w") mensaje.write(respuesta) mensaje.close()
def search_commands(message, commandList): for commandName in commandList: for commandString in commandList[commandName]['Sentences']: Levenshtein = LevenshteinDistance.compare( 'self', Statement(text=commandString), Statement(text=message.text)) #Synset = SynsetDistance(commandString, message.text) #Jaccard = JaccardSimilarity(commandString, message.text) if (Levenshtein > float(botParams['min_confidence_rate'])): return commandName return False
def can_process(self, statement): phrases = [ ' '.join(x) for x in itertools.product([ "ile do wyplaty", "kiedy wyplata", "kiedy bedzie wyplata", "wyplata", "ile dni do", "wyplata" ], ["500", "500+", "500 plus", "piecet plust", "piecet"]) ] best = max([ LevenshteinDistance().compare(statement, Statement(p)) for p in phrases ]) return best > 0.8
def can_process(self, statement): phrases = [ "opowiedz kawal", "opowiedz dowcip", "opowiedz mi dowcip", "opowiedz zart", "opowiedz mi aart", "rozbaw mnie", "opowiedz coś śmiesznego", "znasz jakis kawal", "znasz jakis dowcip" ] best = max([LevenshteinDistance().compare(statement, Statement(p.lower())) for p in phrases]) return best > 0.8
def chat_users(): bd_data_copia() stats = bd_data_copia() chatbot = ChatBot( 'RobotUPB', storage_adapter='chatterbot.storage.MongoDatabaseAdapter', #database_uri='mongodb://localhost:27017/PrototipoDB', #database='./database.sqlite', #./database.sqlite5 fichero de la base de datos (si no existe se creará automáticamente) input_adapter= 'chatterbot.input.TerminalAdapter', #indica que la pregunta se toma del terminal output_adapter= 'chatterbot.output.TerminalAdapter', #indeica que la respuesta se saca por el terminal output_format="text", trainer='chatterbot.trainers.ListTrainer', logic_adapters=[ "chatterbot.logic.BestMatch", 'chatterbot.logic.MathematicalEvaluation', { 'import_path': 'chatterbot.logic.BestMatch', 'default_response': 'Lo siento pero no entiendo..', 'maximum_similarity_threshold': 1 }, ], preprocessors=['chatterbot.preprocessors.clean_whitespace'], ) treiner = ChatterBotCorpusTrainer(chatbot) treiner2 = ListTrainer(chatbot) treiner.train("./PreguntasYRespuestas.yml") #treiner.train("chatterbot.corpus.spanish") levenshtein_distance = LevenshteinDistance() #disparate=Statement('Mal')#convertimos una frase en un tipo statement entradaDelUsuario = "" #variable que contendrá lo que haya escrito el usuario entradaDelUsuarioAnterior = "" print("***Recuerda, escribe >>> adios <<< para salir del ChatBot***") while entradaDelUsuario != "adios": entradaDelUsuario = input(">>> ") if entradaDelUsuario == '': print('Digite su PQRS!') else: respuesta = chatbot.get_response(Statement(entradaDelUsuario)) print('ChatBotUPB:' + str(respuesta)) stats.insert_one({ "pqrs_usuario": entradaDelUsuario, "respuesta_pqrs": str(respuesta) })
def conversation(var): entradaDelUsuario = Statement(var) # Elegir la forma de medir la similitud entre dos frases levenshtein_distance = LevenshteinDistance() # synset_distance = SynsetDistance() sentiment_comparison = SentimentComparison() # jaccard_similarity = JaccardSimilarity() # hablar("el tipo de entrada es {0}".format(type(entradaDelUsuario))) disparate = Statement( 'te equivocaste') # convertimos una frase en un tipo statement if levenshtein_distance.compare(entradaDelUsuario, disparate) > 0.51: hablar('¿Qué debería haber dicho?') entradaDelUsuarioCorreccion = saveWord() trainer.train([entradaDelUsuario, entradaDelUsuarioCorreccion]) hablar("He aprendiendo que cuando digas {} debo responder {}".format( entradaDelUsuario.text, entradaDelUsuarioCorreccion.text)) # leemos la entrada del usuario elif levenshtein_distance.compare(entradaDelUsuario, Statement('¿que hora es?')) > 0.51: hora = str(now.hour) minutos = str(now.minute) hablar('son las {0} y {1}'.format(hora, minutos)) elif levenshtein_distance.compare( entradaDelUsuario, Statement('¿cual es la definicion de ?')) > 0.51: zen = TextBlob(var) palabra = zen.words[-1] for i in Word(palabra).definitions: tras = TextBlob(i).translate('es') hablar(tras) elif levenshtein_distance.compare(entradaDelUsuario, Statement('chao')) > 0.51: hablar('hasta luego') response = chatbot.generate_response(entradaDelUsuario) # print(statement) #statement contiene el mismo valor que entradaDelUsuario hablar(response.text)
def on_return_pressed(self): chatbot=ChatBot('chatpet', input_adapter='chatterbot.input.TerminalAdapter', output_adapter='chatterbot.output.TerminalAdapter', trainer='chatterbot.trainers.ListTrainer', logic_adapters =[ { "import_path": "chatterbot.logic.BestMatch", "statement_comparison_function": "chatterbot.comparisons.levenshtein_distance", } ], preprocessors=[ 'chatterbot.preprocessors.clean_whitespace' ], ) traine=ListTrainer(chatbot) trainer=ChatterBotCorpusTrainer(chatbot) trainer.train("chatterbot.corpus.spanish") trainer.train("./chattrain.yml") trainer.train("./psico.yml") trainer.train("./conversation.yml") trainer.train("./covid.yml") trainer.train("./mentals.yml") trainer.train("./medcurio.yml") levenshtein_distance = LevenshteinDistance() error=Statement('Te has equivocado') entradaDelUsuarioAnterior="" request=str(self.useredit.text()) if request=='grabar audio': r = sr.Recognizer() with sr.Microphone() as source: response=("Di algo...") audio = r.listen(source) try: request = r.recognize_google(audio, language='es-ES') response("Lo que dijiste: {}".format(request)) except: response("Lo siento, no te entiendo!") response=chatbot.get_response(str(request)) if levenshtein_distance.compare(Statement(request),error)>0.51: response=("¿Qué debería haber dicho?") entradaDelUsuarioCorreccion = str(self.useredit.text()) traine.train([entradaDelUsuarioAnterior,entradaDelUsuarioCorreccion]) response=("He aprendiendo que cuando digas {} debo responder {}".format(entradaDelUsuarioAnterior,entradaDelUsuarioCorreccion)) self.textEdit.append(str(request)) self.textEdit.setAlignment(QtCore.Qt.AlignRight) self.useredit.clear() self.textEdit.append(str(response)) self.textEdit.setAlignment(QtCore.Qt.AlignLeft) self.useredit.setFocus() def retranslateUi(self, chatbots): _translate = QtCore.QCoreApplication.translate chatbots.setWindowTitle(_translate("chatbots", "chatbots")) self.enviar.setText(_translate("chatbots", "Enviar")) self.atras.setText(_translate("chatbots", "Atrás")) self.titulo.setText(_translate("chatbots", "Chatbot"))
# "Hola!", # "Hola", # "Como estas?", #"Bien y tu?", #"Bien tambien", #]) #chatbott.train([ #"Te casarias conmigo?", #"El sistema se ha caido, intente mas tarde", #"rayos", #"te gustaria ser mi amigo?" #"no te preocupes yo trato de entendenrte" # ]) usuario = "" levenshtein_distance = LevenshteinDistance() disparate = Statement('que?') while True: entradaDelUsuarioAnterior = Statement(usuario) usuario = "" usuario = input(">>> ") entrada = Statement(usuario) respuesta = chatbot.get_response(usuario) # chatterbot.utils.get_response_time(chatbot, declaración='Hola') if levenshtein_distance.compare(entrada, disparate) > 0.71: print('¿Qué debería haber dicho?') correcccion = input(">>>> ") entradaDelUsuarioCorreccion = Statement(correcccion)
trainer = ChatterBotCorpusTrainer(chatbot) trainer.train("chatterbot.corpus.spanish") trainer.train("./trainer/IA.yml") trainer.train("./trainer/conversación.yml") trainer.train("./trainer/dinero.yml") trainer.train("./trainer/emociones.yml") trainer.train("./trainer/saludos.yml") trainer.train("./trainer/perfilBot.yml") trainer.train("./trainer/psicología.yml") trainer.train("./trainer/trivia.yml") trainer.train("./trainer/cruises_ES.yml") trainer.train("./trainer/auto_aprendizaje.yml") levenshtein_distance = LevenshteinDistance() inputAnterior = "" aprender = Statement(text="Emily aprende") while True: try: inputUser = Statement(text=input()) # if "Emily aprende" not in inputUser.text: if levenshtein_distance.compare(inputUser, aprender) > 0.51: print(feedback(inputAnterior.text)) else: bot_output = chatbot.get_response(inputUser) print(bot_output) inputAnterior = inputUser except (KeyboardInterrupt, EOFError, SystemExit) as e:
from django.http import JsonResponse from chatterbot.trainers import ChatterBotCorpusTrainer import random from dashboard.models import Conversacion, Reporte import string from chatterbot.comparisons import LevenshteinDistance from chatterbot.parsing import datetime_parsing from chatterbot.response_selection import get_most_frequent_response from datetime import datetime from chatterbot.trainers import ListTrainer from django.core.mail import send_mail, BadHeaderError from .forms import ContactForm from django.http import HttpResponse, HttpResponseRedirect from users_auth.forms import ReporteForm levenshtein_distance = LevenshteinDistance() class ChatterBotApiView(View): bot = ChatBot(**settings.CHATTERBOT) def post(self, request, *args, **kwargs): input_data = json.loads(request.body.decode('utf-8')) if input_data['text'] == '' or input_data['id'] == '': return JsonResponse( {'text': ['El atributo texto o id son requeridos']}, status=400) else: conversa = Conversacion(texto=input_data['text'], enviadopor=input_data['id'], response='USER')
'chatterbot.output.TerminalAdapter', #indeica que la respuesta se saca por el terminal logic_adapters=[ #'chatterbot.logic.MathematicalEvaluation', #Este es un logic_adapter que responde preguntas sobre matemáticas en inglés #'chatterbot.logic.TimeLogicAdapter', #Este es un logic_adapter que responde preguntas sobre la hora actual en inglés { "import_path": "chatterbot.logic.BestMatch", "statement_comparison_function": "chatterbot.comparisons.levenshtein_distance", "response_selection_method": get_most_frequent_response, } ], preprocessors=['chatterbot.preprocessors.clean_whitespace'], ) trainer = ChatterBotCorpusTrainer(chatbot) trainer.train('./soporte.yml') levenshtein_distance = LevenshteinDistance() #synset_distance = SynsetDistance() #sentiment_comparison = SentimentComparison() #jaccard_similarity = JaccardSimilarity() disparate = Statement( 'Te has equivocado') #convertimos una frase en un tipo statement entradaDelUsuario = "" #variable que contendrá lo que haya escrito el usuario while entradaDelUsuario != "adios": entradaDelUsuario = Statement(text=input()) #leemos la entrada del usuario respuesta = chatbot.generate_response(entradaDelUsuario) try: fecha = datetime_parsing(entradaDelUsuario.text) fecha = fecha[0] print(fecha[0])
"chatterbot.comparisons.levenshtein_distance", }], preprocessors=['chatterbot.preprocessors.clean_whitespace'], ) traine = ListTrainer(chatbot) trainer = ChatterBotCorpusTrainer(chatbot) trainer.train("chatterbot.corpus.spanish") trainer.train("./chattrain.yml") trainer.train("./psico.yml") trainer.train("./conversation.yml") trainer.train("./covid.yml") trainer.train("./mentals.yml") trainer.train("./medcurio.yml") levenshtein_distance = LevenshteinDistance() error = Statement('Te has equivocado') request = "" entradaDelUsuarioAnterior = "" while True: if request == 'salir': break request = input("Yo: ") if request == 'grabar audio': r = sr.Recognizer() with sr.Microphone() as source: print("Di algo...")