Gibt es eine gute Bibliothek zur Verarbeitung natürlicher Sprache [geschlossen]

90

Ich muss etwas NLP in meinem aktuellen Modul implementieren. Ich suche eine gute Bibliothek, die mir hier helfen kann. Ich bin auf 'LingPipe' gestoßen, konnte aber nicht vollständig nachvollziehen, wie man es benutzt.
Grundsätzlich müssen wir eine Funktion implementieren, mit der die Anwendung Kundenanweisungen (Lieferanweisungen) entschlüsseln kann, die in einfachem Englisch eingegeben wurden. Z.B:

  • Wird morgen um 12:00 Uhr abholen
  • Lieferung nach dem 10. Juni anfordern
  • Bitte nicht vor Mittwoch senden
  • Fügen Sie der Bestellung 10 weitere Einheiten XYZ hinzu
Vini
quelle

Antworten:

78

LingPipe ist sehr schön und gut dokumentiert. Sie können auch einen Blick darauf werfen:

Das letzte könnte speziell für Sie von Interesse sein, obwohl ich nicht weiß, ob es leicht verfügbare Java-Implementierungen gibt (und vielleicht ist das sowieso eine zu große Waffe für Ihr Problem :-)

Pauls Idee, ein DSL zu verwenden, ist wahrscheinlich einfacher und schneller zu implementieren und für Ihre Kunden zuverlässiger zu verwenden. Ich würde auch empfehlen, dies zuerst zu untersuchen.

n3rd
quelle
1
Ich präsentierte meinen Bericht basierend auf den Beiträgen, die ich aus diesem Forum und anderen Stellen im Internet gesammelt habe. Ich habe auch die anderen von Ihnen vorgeschlagenen Optionen vorgeschlagen, und das Unternehmen hat beschlossen, diese Option auf Eis zu halten (Jetzt beginnt die Forschung und Entwicklung, um den bestmöglichen Kandidaten zu finden).
Vini
1
Wenn Sie LingPipe mit anderen vergleichen, die Sie aufgelistet haben, welches würden Sie bevorzugen? Ich frage dies nicht nur für @ Winnies Frage, ich frage es für allgemeine Zwecke.
Kamaci
1
Check out MALLET: mallet.cs.umass.edu
Samik R
11

Ich denke, ob Sie NLP verwenden oder nicht, hängt möglicherweise von den spezifischen Anforderungen für Ihr System ab. Ist es erforderlich, dass Freiform-Englisch akzeptiert wird, oder werden nur bestimmte Anweisungen akzeptiert? Es ist möglicherweise einfacher, eine domänenspezifische Sprache zu erstellen , die das unterstützt, was Ihre Benutzer vermitteln müssen, als eine vollständige semantische Analyse von Freiformtext durchzuführen.

Im Java-Bereich unterstützt Groovy das Erstellen von DSLs .

Paul Morie
quelle
Hier einige Zeilen aus dem Anforderungsdokument: '.. und der Benutzer sollte in der Lage sein, eine Notiz oder eine spezielle Anweisung in einfachem Englisch einzugeben. Das System sollte dann die Benutzeranweisung analysieren und die relevanten Felder (falls vorhanden) der Bestellung mit den richtigen Werten füllen. "
Vini
10
Das ist eine ziemlich vage Anforderung. Muss die Notiz beispielsweise grammatikalisch korrekt sein? Ich bin mir nicht sicher, ob die Parteien, die die Anforderungen formuliert haben, mit dem Stand der NLP vertraut sind, aber das Problem, das sie beschrieben haben, ist im Wesentlichen das Leseverständnis oder das Verständnis der natürlichen Sprache, das eines der Probleme ist, die als „das Heilige“ bezeichnet werden Gral 'von NLP. Es ist für mich zweifelhaft, dass Sie ein Paket finden, das dies nur für Sie tun kann - es ist wahrscheinlich weitaus realistischer, dem Benutzer eine Benutzeroberfläche zu geben, in der er eine begrenzte Anzahl spezieller Anweisungen angeben kann.
Paul Morie