2017-07-04 2 views
0

Für meine Bachelorarbeit entwickle ich die Natural Language Understanding Unit für einen Chatbot. Im Augenblick stehe ich vor folgendem Problem:Fuzzy String Matching zum Auffinden von Synsets in Deutsch WordNet (GermaNet)

Ich habe ein Wort, sagen wir "Auto", das ist das deutsche Äquivalent von Auto. Jetzt könnte der Benutzer 'autto' als Eingabe geben, weil er einfach einen kleinen Tippfehler (Hinzufügen eines zusätzlichen 't') und in der Regel in einer Chat-Oberfläche verwendet hat, die Benutzer nicht die Groß-/Kleinschreibung beachten, sondern alles eingeben in Kleinbuchstaben.

Für meinen NLU-Algorithmus muss ich für jedes Wort das richtige Synset in GermaNet finden (was in etwa dem WordNet für Englisch entspricht). Ein Synset ist ein Knoten im Wortnetz, der alle Synonyme eines Wortsinns in einen Knoten abstrahiert. Wie zum Beispiel im Deutschen haben "Auto" (Auto) und "Automobil" die gleiche Bedeutung und sind daher Darstellungen des gleichen Synset.

Die Frage ist nun, wie kann ich das richtige Synset finden, wenn ich keine orthographisch korrekte Version des Wortes habe? Ich meine, die Suche im ganzen Wortnetz ist rechnerisch komplex für jedes Wort.

Ich denke, N-Grams könnte eine Lösung für das Problem bieten, aber mir ist kein Algorithmus bekannt.

Was ich für die Implementierung verwenden: Python3 mit NLTK, Stanford CoreNLP und Pygermanet.

Antwort

0

Wenn das Eingabewort nicht in GermaNet vorhanden ist, können Sie zuerst die Rechtschreibkorrektur anwenden, z. B. mit PyEnchant, und den korrigierten Ausdruck nachschlagen.