2016-07-18 2 views
-8

Ich arbeite an einem Chatbot, wo der Bot mit Kunden interagieren wird. Ich möchte einen intelligenten, AI-ähnlichen Bot bauen.Künstliche Intelligenz in Chatbots

Ich habe ein bisschen getan, aber ich würde Vorschläge schätzen, um es zu verbessern.

Wenn der Kunde betritt:

A) I want to know the cost of XXX car. 
B) Send me the price of car XXX. 
C) What is the cost of XXX car? 
D) Specifications of XXX car 

Wie kann ich einen Bot bauen, so wäre es auf diese Antworten wieder zurück? Wenn ich einen vollständigen Satz anpasse, funktioniert es nicht.

Meine Kunden konnten alles schreiben, konnten alles fragen. Könnte jemand helfen, sicherzustellen, dass der Bot verschiedene Phrasierungen der gleichen Frage versteht?

Vielen Dank im Voraus.

Antwort

5

Verwenden Sie eine der vorhandenen NLP-Bibliotheken wie Opennlp oder StanfordNlp für POSTagging oder Stimmungsanalyse Ihrer Benutzereingabe, um den Namen des Autos zu erhalten (wie in Ihrem Beispiel erwähnt) oder einen Teil des Satzes zu verstehen.

können Sie viele grundlegende Unterstützung here und here

0

Dieses Problem erfordert Semantic Parsing finden, aber ich glaube, dass Dienste wie Wit.ai Ihrem Fall lösen kann, ohne in eine komplexere Lösung zu bewegen.

0

Sie NLP verwenden können, und versuchen Sie Ihr A bis D Beispiele zu analysieren und zu einigen vordefinierten Antworten entsprechen.

Zum Beispiel:

ein Modell, das gut in kurzen Sätzen arbeitet (https://gate.ac.uk/wiki/twitter-postagger.html), wie Tweets und nach etwas Reinigung innerhalb des Satzes zu tun, um unnötigen Geräusche zu entfernen, müssen Sie das Ergebnis wie folgt. Das Modell des Autos wird als Eigenname, Auto und Kosten als Substantive usw. bezeichnet. Wenn Sie das wissen, können Sie die Frage viel besser als zuvor auf Ihre vordefinierten Antworten filtern.

{'car': 'NN', 'cost': 'NN', 'know': 'VBP', 'want': 'VBP', 'XXX': 'NNP'} 

Ein Beispiel ein benutzerdefiniertes Modell mit der nltk Bibliothek ist:

from nltk.tag import pos_tag 

def pos_tag_sentence(sentence): 
    """Takes a list of words and returns their matching part of speech""" 

    default_tagger = nltk.data.load(nltk.tag._POS_TAGGER) 
    train_model = g.train_model # the custom model as a dictionary 
    tagger = nltk.tag.UnigramTagger(model=train_model, backoff=default_tagger) # Unigram works best in short text 
    return dict(tagger.tag(sentence)) 

dies ein bisschen weiter zu nehmen, wenn Sie einen Datensatz haben, bestehend aus Beispielfragen und Antworten übereinstimmt, können Sie versuchen, überwachte Lernalgorithmen, wobei zum Beispiel der Wortbestandteil und Wörter als Merkmale verwendet werden (scikit-learn ist eine großartige Bibliothek).

Kurz gesagt, es braucht Zeit und Versuche, um es so gut wie möglich zu bekommen, und es gibt keine gute Lösung für diese Art von Problemen.

Hoffe, das hilft, Viel Glück!

edit: Ich habe gerade festgestellt, dass Sie keine bestimmte Programmiersprache erwähnt haben, aber meine Beispiele sind in Python.Es gibt jedoch viele großartige Bibliotheken in jeder Sprache, also einfach suchen und versuchen :)

Verwandte Themen