示例#1
0
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()
示例#3
0
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
示例#4
0
 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
示例#5
0
 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
示例#6
0
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)
            })
示例#7
0
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)
示例#8
0
    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"))
示例#9
0
文件: juego.py 项目: Ataone11/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)
示例#10
0
    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:
示例#11
0
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...")