Frage

Ich suche eine natürliche Sprache Parsing-Bibliothek für ein einfaches Chat-Bot zu verwenden. Ich kann die Teile der Sprache Tags, aber ich frage mich immer. Was tun Sie mit dem PO tun. Wenn ich weiß, die Teile der Rede, was dann?

Ich denke, es mit den Antworten helfen würde. Aber was Datenstrukturen und Architektur können ich verwenden.

War es hilfreich?

Lösung

Ein Part-of-Speech Tagger weist Etiketten auf die Worte im Eingangstext. Zum Beispiel hat der beliebte Penn Treebank tagset rund 40 Labels, wie „Plural“, „vergleichendes Adjektiv“, „Vergangenheits Verb“ usw. Das Tagger löst auch eine gewisse Zweideutigkeit. Zum Beispiel ist viele englischen Wortformen können entweder Substantive oder Verben sein, aber im Zusammenhang mit anderen Worten, ihr Teil der Rede eindeutig. Also, Ihren Text mit POS-Tags kommentiert hat, können Sie beantworten Fragen wie:., Wie viele Substantive habe ich ?, wie viele Sätze enthalten kein Verb ?, etc

Für eine chatbot, müssen Sie natürlich viel mehr als das. Sie müssen die Subjekte und Objekte in den Text, um herauszufinden, und welches Verb (Prädikat) sie heften sich an; Sie müssen Anaphern lösen (das Individuum eine tut er oder sie Punkt), wie ist der Umfang der Negation und quantifiers (zB alle , mehr als 3 ), etc.

Im Idealfall müssen Sie Sie Text in eine logische Darstellung (wie Logik erster Ordnung) auf der Karte, die Sie in Argumentation bringen lassen würde, um zu bestimmen, ob zwei Sätze in der Bedeutung äquivalent sind, oder in einer entailment Beziehung, etc.

Während ein POS-Tagger würde den Satz Karte

Mary likes no man who owns a cat.

auf eine solche Struktur

Mary/NNP likes/VBZ no/DT man/NN who/WP owns/VBZ a/DT cat/NN ./.

würden Sie eher so etwas wie dieses brauchen:

SubClassOf(
   ObjectIntersectionOf(
      Class(:man)
      ObjectSomeValuesFrom(
         ObjectProperty(:own)
         Class(:cat)
      )
   )
   ObjectComplementOf(
      ObjectSomeValuesFrom(
         ObjectInverseOf(ObjectProperty(:like))
         ObjectOneOf(
            NamedIndividual(:Mary)
         )
      )
   )
)

Natürlich, während POS-Tagger Precision und Recall Werte nahe 100%, komplexere automatische Verarbeitung wird durchführt viel schlimmer.

Eine gute Java-Bibliothek für NLP ist LingPipe . Es ist jedoch nicht geht weit über POS-Tagging, Chunking und Entitätserkennung genannt.

Andere Tipps

Die Verarbeitung natürlicher Sprache ist breit und tief, mit Wurzeln zumindest in den 60er Jahren zurückgeht. Sie könnten Lesen auf Computerlinguistik starten in der Regel Erzeugung natürlicher Sprache, generative Grammatiken , Markov-Ketten Chatterbots und so weiter.

Wikipedia hat einen kurze Liste der Bibliotheken denen ich annehmen, dass Sie gesehen haben könnte. Java nicht auf eine lange Tradition in NLP haben, obwohl ich nicht an der Stanford-Bibliotheken ausgesehen haben.

Ich bezweifle, Sie werden ohne Tauchen ziemlich tief in Linguistik und Grammatik sehr beeindruckende Ergebnisse erzielen. Nicht jedermanns Lieblingsschulfach (oder so habe ich gehört, berichtet - loved'em meself!).

Ich werde eine Menge viele Details überspringen und diese einfach zu halten. Teile der Sprache Hilfe Tagging Sie eine analysieren aus einem Satz. Sobald Sie diese haben, versuchen Sie möglichst eindeutig eine Bedeutung zu erkennen. Das Ergebnis dieser Analyseschritt werden Sie große Hilfe eine geeignete Antwort auf Rahmen für Sie Chatterbot.

Sobald Sie Teil der Rede-Tags können Sie zum Beispiel extrahieren, alle Substantive, so dass Sie wissen in etwa, was die Dinge oder Gegenstände jemand redet.

Ihnen ein Beispiel geben:

Jemand sagt " Sie ein neues Fenster öffnen. " Wenn Sie die POS-Tags haben, wissen Sie, sie sprechen nicht über eine können (wie in Container Glas etc., die auch Sinn im Zusammenhang mit open ), sondern ein Fenster machen würde. Sie wissen auch, dass open ein Verb ist.

Mit diesen Informationen Ihr Chat-Bot eine viel bessere Antwort erzeugen kann, die nichts mit zu tun haben Dosenöffner etc.

Hinweis: Sie müssen nicht einen Parser müssen POS-Tags zu erhalten. Ein einfacher POS-Tagger ist genug. Ein Parser werden Sie noch mehr Informationen (zum Beispiel, was ist das Thema, was das Objekt des Satzes?)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top