Erweitern JChronic kann Ihre beste Wette sein. Ich denke, angesichts der Antworten auf this question ist es unwahrscheinlich, dass eine vorgefertigte Bibliothek dafür existiert (obwohl es so aussieht, als könnte so etwas nützlich sein ... Ich nehme an, dass die wichtigsten Anwendungsfälle für das Parsen von Daten natürlicher Sprache dies wären noch nützlicher sein, wenn sie zusätzliche Daten aus vom Benutzer bereitgestellten Strings extrahieren konnten.
Implementations-weise, wahrscheinlich die einfachste Sache zu tun ist, um JChronic zu erweitern, da es einen beträchtlichen Teil Ihres Anwendungsfalles unterstützt, aber mehr als as you can see from the unit test irrelevante Informationen sollten bereits vom Framework ignoriert werden. Zum Glück, auch wenn Sie the main class betrachten, sollte es nicht zu schwer sein, die parse() -Methode zu erweitern/modifizieren/umbrechen, um einen benutzerdefinierten Scanner für einen Ereignistitel zu unterstützen. (Meine eigene Präferenz von diesen würde sein, das Rahmenwerk zu umwickeln und nicht zu forkieren und es zu modifizieren, weil Sie dadurch leichter von irgendwelchen Verbesserungen des zugrunde liegenden Codes profitieren können).
Was am einfachsten ist, ist, einen Regex-Parser zu erzeugen, der das meiste ignoriert, was JChronic zu erfassen versucht (und das würde bedeuten, sich mit dem JChronic-Quellcode vertraut zu machen). Wie bei jedem NLP-Projekt müssen Sie so viele Beispiele wie möglich haben, vorzugsweise als automatisierte Komponententests (letztendlich sogar, wenn die Testfälle die gleiche Funktionalität mehrmals duplizieren) , es ist besser, mehr Beispiele zu haben als weniger). Glücklicherweise sollten solche Testfälle, da wir über natürliche Sprache sprechen, besonders leicht zu bekommen sein, da sogar Nicht-Programmierer-Freunde, Familie usw. in der Lage sein sollten, Ihnen "Ereignisbeschreibungen" (oder was auch immer Sie anrufen möchten) zur Verfügung zu stellen Sie). Sie sollten sich auch besonders auf Edge-Fälle konzentrieren, bei denen das Datum-Parsing-Bit das Ort/Titel-Parsing-Bit stören könnte (zum Beispiel in "sigur rós at 20pm" ist das "at" eindeutig Teil der Zeit, während in "party bei phoebes samstag "ist es eindeutig nicht.
Ich weiß, dass ich ziemlich viel über JChronic gesagt habe, aber ich denke, dass es eine natürliche Wahl für Ihr Problem ist, da es bereits einen Großteil des "harten Teils" der Analyse von natürlichsprachlichen "Terminen" abdeckt, dh die Unschärfe von unsere Sprache, die wir für die Zeit verwenden und die bereits in der Sprache implementiert ist, auf die Sie ausgerichtet sind.
möglich Duplikat [Natural Language Datum und Uhrzeit Parser für Java] (http verteilt Freigabe verwenden /stackoverflow.com/questions/1410408/natural-sprach-date-and-time-parser-for-java) – nawfal