Ich bin auf der Suche nach einer Java-Bibliothek, um eine anfängliche Rechtschreibprüfung / Datennormalisierung bei benutzergenerierten Textinhalten durchzuführen. Stellen Sie sich die Interessen vor, die in einem Facebook-Profil eingegeben wurden.
Dieser Text wird zu einem bestimmten Zeitpunkt (vor oder nach der Korrektur des Zauberspruchs, was auch immer besser funktioniert) und einige davon als Schlüssel für die Suche nach (exakte Übereinstimmung) verwendet. Es wäre schön, Rechtschreibfehler und ähnliches zu reduzieren, um mehr Matches zu produzieren. Es wäre noch besser, wenn die Korrektur auf Token, die länger als nur ein Wort sind, z.B. "trinking coffee" würde "Kaffee trinken" und nicht "Kaffee denken".
Ich habe die folgenden Java-Bibliotheken zur Rechtschreibkorrektur gefunden:
Irgendwelche Vorschläge sind willkommen!
Was Sie implementieren möchten, ist kein Korrektor, sondern eine unscharfe Suche. Peter Norvigs Aufsatz ist ein guter Ausgangspunkt, um aus Kandidaten, die mit einem Wörterbuch verglichen werden, eine unscharfe Suche zu erstellen.
Alternativ werfen Sie einen Blick auf BK-Trees.
Ein N-Gram-Index (von Lucene verwendet) liefert bessere Ergebnisse für längere Wörter. Der Ansatz, Kandidaten bis zu einer bestimmten Bearbeitungsdistanz zu erzeugen, wird wahrscheinlich gut genug für Wörter im normalen Text funktionieren, aber nicht gut genug für Namen, Adressen und wissenschaftliche Texte. Es erhöht jedoch Ihre Indexgröße.
Wenn Sie die Texte indiziert haben, haben Sie Ihren Textkorpus (Ihr Wörterbuch). Nur was in Ihren Daten enthalten ist, kann trotzdem gefunden werden. Sie müssen kein externes Wörterbuch verwenden.
Eine gute Quelle ist Einführung in Information Retrieval - Wörterbücher und toleranter Abruf Es gibt eine kurze Beschreibung der kontextsensitiven Rechtschreibkorrektur.
Im Hinblick darauf, einen Lucene-Index als Grundlage für eine Rechtschreibprüfung zu füllen, ist dies ein guter Weg, um das Problem zu lösen. Lucene hat eine aus der Box Rechtschreibprüfung , die Sie verwenden können .
Es gibt viele Wörterbücher im Internet, die Sie herunterladen und als Grundlage für Ihren Lucene-Index verwenden können . Ich würde vorschlagen, diese mit einer Anzahl von domänenspezifischen Texten sowie z.B. Wenn Ihre Benutzer Mediziner sind, dann ergänzen Sie vielleicht das Wörterbuch mit Quelltexten aus medizinischen Thesen und Publikationen.
Sie können das Gutenberg-Projekt oder das Internet Archive für viele und viele Korpus.
Ich denke auch, dass der Wiktionary Ihnen helfen könnte. Sie können sogar einen direkten Download machen.
Ссылка ist eine gute Java-Bibliothek zur Rechtschreibprüfung, aber ich stimme Thomas Jung zu möglicherweise nicht die Antwort auf Ihr Problem.
Tags und Links java spell-checking lucene