Chatbots sind nicht sehr neu, einer der wichtigsten dieser Art ist ELIZA, welche in den frühen 1960er Jahren enstand. Um eine Chatbot erfolgreich zu erstellen, sollten sie die folgenden Frangen klären:
- Wer ist die Zielgruppe?
- Wie ist die gängige Sprache in der Kommunikation?
- Was ist die Absicht oder der Wunsch der Zielgruppe?
- Welche Antworten müssen bereitgestellt werden?
Die NLTK Bibliothek hat ein Modul, nltk.chat, das den Aufbau dieses Engines durch ein generisches Framework vereinfacht.
In diesem Blog werden 2 Importe von nltk.chat.util verwendet:
Chat: Dies ist eine Klasse, die die gesamte Logik hat, die vom Chatbot verwendet wird.
Reflections: Dies ist ein Dictionary, das einen Satz von Eingabewerten und die zugehörigen Ausgabewerte enthält. Es ist ein optionales Wörterbuch, das Sie verwenden können. Sie können auch Ihr eigenes Dictionary im gleichen Format wie unten erstellen und es in Ihrem Code verwenden. Wenn du nltk.chat.util checkst, siehst du seine Werte wie folgt:
from nltk.chat.util import Chat from nltk.chat.util import reflections reflections Out[3]: {'i am': 'you are', 'i was': 'you were', 'i': 'you', "i'm": 'you are', "i'd": 'you would', "i've": 'you have', "i'll": 'you will', 'my': 'your', 'you are': 'I am', 'you were': 'I was', "you've": 'I have', "you'll": 'I will', 'your': 'my', 'yours': 'mine', 'you': 'me', 'me': 'you'}
Sie können auch Ihr eigenes Reflection Dictionary im gleichen Format wie oben erstellen und es in Ihrem Code verwenden. Hier ist ein Beispiel dafür:
my_dummy_reflections= { "go" : "gone", "hello" : "hey there" }
Als nächstes erstellen wir eine Liste von Paaren (pairs), die, ähnlich wie bei Reflections, Ein- und Ausgabewerte für Fragen und Antworten enthält.
pairs = [ [ r"my name is (.*)", ["Hello %1, How are you today ?",] ], [ r"what is your name ?", ["My name is Chatty and I'm a chatbot ?",] ], [ r"how are you ?", ["I'm doing good\nHow about You ?",] ], [ r"sorry (.*)", ["Its alright","Its OK, never mind",] ],…]
Die Chatbots von nltk.chat funktionieren im Regex- Format auf Keywords, die in Ihrer Frage enthalten sind. So können Sie eine beliebige Anzahl von Fragen in einem geeigneten Format hinzufügen.
Als nächstes wird eine Instanz der Chat-Klasse erstellt, die Paare (Liste der Tupel mit einer Reihe von Fragen und Antworten) und Reflections (siehe oben) enthält.
chat = Chat(pairs, reflections)
Nun starten wir den Chatbot:
chat.converse() >how are you? I'm doing good How about You ? >quit None
Mit "quit" beenden Sie das Gespräch.
Mit dem obigen Konzept aus der NLTK- Bibliothek von Python können Sie einen einfachen Chatbot erstellen, ohne Machine Learning Algorithmen oder Deep Learning zu verwenden.
Quellen:
https://www.nltk.org/py-modindex.html
https://www.kdnuggets.com/2019/05/build-chatbot-python-nltk.html