Python NLP Absicht Identifikation
Ich bin Neuling in Python und NLP, und mein problem ist, wie um herauszufinden, Absicht, bestimmten Fragen, zum Beispiel habe ich Sätze von Fragen und Antworten wie diese :
question:What is NLP; answer: NLP stands for Natural Language Processing
Habe ich einige grundlegende POS tagger
auf gegebene Fragestellungen in der obigen Frage, die ich erhalten entety [NLP]
ich habe auch String Matching
mit diesem algo.
Im Grunde Stand ich vor folgenden Fragen :
- Wenn Benutzer Fragen
what is NLP
dann wird es wieder genaue Antworten - Wenn Benutzer Fragen
meaning of NLP
dann scheitern - Wenn Benutzer Fragen
Definition of NLP
dann scheitern - Wenn Benutzer Fragen
What is Natural Language Processing
dann scheitern
So, wie ich ermitteln sollte, mit dem Benutzer die Absicht, Ihnen Fragen gegeben, die da in meinem Fall String matching oder pattern matching nicht funktioniert.
- Es ist ein schweres problem, ohne eine einfache (oder definitive) Antwort. Wenn du dich mit NLP, ist dies nicht eine gute Aufgabe, um mit zu beginnen.
- Was ist ein "Vorsatz"?
Intent
bedeutet, dass der Benutzer Frage Fragen, die Absicht für eine ex.:location, whether, order, definition etc
für mehr überprüfen Sie das chat-bot-Architektur
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tun, Absicht, die Identifikation mit DeepPavlov, es unterstützt multi-label-Klassifizierung. Weitere Informationen finden Sie in http://docs.deeppavlov.ai/en/master/components/classifiers.html
Die demo-Seite https://demo.ipavlov.ai
Verwenden Sie diese
https://github.com/RasaHQ/rasa_nlu
Einen guten Rahmen auf Vorsatz Identifikation und entity-Extraktion.
Es ermöglicht auch eine einfache Modell-training.
können Sie spacigen für die Ausbildung eine benutzerdefinierte parser für chat-Vorsatz Semantik.
spacigen die parser-Komponente können verwendet werden, um ausgebildet, um vorherzusagen, jede Art von Struktur über Ihren text eingeben. Sie können auch Vorhersagen, Bäume über ganze Dokumente oder chat-Protokolle, mit verbindungen zwischen den Satz-Wurzeln verwendet, um Anmerkungen zu Diskurs-Struktur.
zum Beispiel:
"zeigen Sie mir das beste hotel in berlin"
Um das Modell zu trainieren müssen Sie die Daten in diesem format:
für mehr details überprüfen Sie Bitte die folgenden link.
https://spacy.io/usage/examples#intent-parser
Für eine Allgemeine wissen und die Liste der ausgezeichneten Beispiele für die Frage und die Beantwortung von Systemen auf der Grundlage der Rangliste von NLP in der Branche sind hier aufgelistet: https://rajpurkar.github.io/SQuAD-explorer/
Dieser Prozess kann tatsächlich zu bekommen, wirklich kompliziert sind abhängig von der Komplexität und den Umfang Ihrer domain. Zum Beispiel, fortgeschrittene Ansätze anwenden, die erste Bestellung + Aussagenlogik und komplexe neuronale Netze.
Eine der beeindruckenden Lösungen, die ich gesehen habe, ist die bidirektionale Aufmerksamkeit flow: https://github.com/allenai/bi-att-flow, demo ist hier: http://beta.moxel.ai/models/strin/bi-att-flow/latest
In der Praxis habe ich festgestellt, dass, wenn Ihr Korpus hat mehr Domänen-spezifische Begriffe, die Sie benötigen, um erstellen Sie Ihr eigenes Wörterbuch. In Ihrem Beispiel, "NLP" und "Natural Language Processing" sind von der selben Firma, so müssen Sie diese in einem Wörterbuch nach.
Grundsätzlich, betrachten Sie sich wirklich glücklich schätzen, wenn Sie Weg erhalten können, mit nur ein rein statistischer Ansatz wie die Cosinus-Distanz. Sie werden wahrscheinlich brauchen, um zu kombinieren mit einem Lexikon-basierte Ansatz als gut. Alle NLP-Projekte, die ich getan habe domänenspezifischer Terminologie und "slang", also habe ich kombiniert sowohl statistische als auch die Lexikon-basierte Methoden, insbesondere für die feature-Extraktion, wie Themen, Absichten und Organisationen.
Ich denke, das hängt wirklich davon ab, wie Sie Ihren Rahmen Ihr problem und Ihre domain. Hier ist ein dataset, die nützlich sein könnten für die Frage geben Klassifikation und hier ist eine Implementierung.
Diese being said, ich denke, Sie brauchen, um Anmerkungen in Ihren text, evtl. durch Chunker, SRL, etc. und extrahieren Sie interessante Muster.
Deep Learning Modelle, Wie CNN mit Word2Vec.
Diese Modelle werden in der Lage sein, um Sie an die Variationen in den Sätzen, die Sie erwähnen.
Check-out Keras Umsetzung hier - https://github.com/sarweshsuman/keras-text-classification
Können Sie die deep-learning-Modell mit einem word-einbetten von Modell und Zeichen einbetten Modell.
Sie können RNN oder CNN(Nach mir CNN ist schneller in der Erwägung, dass RNN robuster für NLP). Sie können jede word2vec Modell wie google-news, spacig, Handschuhe usw.