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 :)