Welche Algorithmen können verwendet werden, um eine einigermaßen gute Vorhersage des nächsten Wortes zu erreichen?

10

Was ist ein guter Weg, um "Vorhersage des nächsten Wortes" zu implementieren? Beispielsweise gibt der Benutzer "Ich bin" ein und das System schlägt "a" und "nicht" (oder möglicherweise andere) als nächstes Wort vor. Mir ist eine Methode bekannt, die Markov-Ketten und einen Trainingstext (offensichtlich) verwendet, um dies mehr oder weniger zu erreichen. Aber ich habe irgendwo gelesen, dass diese Methode sehr restriktiv ist und für sehr einfache Fälle gilt.

Ich verstehe die Grundlagen neuronaler Netze und genetischer Algorithmen (obwohl ich sie noch nie in einem ernsthaften Projekt verwendet habe) und vielleicht könnten sie hilfreich sein. Ich frage mich, ob es Algorithmen gibt, die bei entsprechendem Schulungstext (z. B. Zeitungsartikeln und der eigenen Eingabe des Benutzers) angemessen geeignete Vorschläge für das nächste Wort liefern können. Wenn nicht (Links zu) Algorithmen, sind allgemeine Methoden auf hoher Ebene zur Behebung dieses Problems willkommen.

Yati Sagade
quelle

Antworten:

9

Schauen Sie sich n-Gramm an . Ein n-Gramm ist eine Folge von nWörtern. In deinem Fall willst du nsein 3, da du zwei query wordsund a brauchst resulting word. Ein 3-Gramm wäre zum Beispiel "Ich bin müde", ein anderes "Ich bin glücklich".

Was Sie dann brauchen, ist eine Sammlung dieser 3-Gramm, die über Ihre Zielsprache gesammelt werden, sagen wir Englisch. Da Sie es nicht über alles sammeln können, was jemals auf Englisch geschrieben wurde, müssen Sie eine Auswahl treffen. Diese Auswahl repräsentativer Texte heißt a corpus. Wenn Ihr Korpus gut ist, erfahren Sie, wie oft eine Folge von drei bestimmten Wörtern auf Englisch zusammen vorkommt. Daraus können Sie die Wahrscheinlichkeit eines 3-Gramms berechnen.

Das Sammeln dieser Art von Daten ist der schwierigste Teil. Sobald Sie die Liste aller 3-Gramm zusammen mit ihrer Wahrscheinlichkeit haben, können Sie Ihre Liste nach allen 3-Gramm filtern, beginnend mit "Ich bin". Dann sortieren Sie diese Liste nach Wahrscheinlichkeit und Voilà: Ihrer Vorhersage.

sebastiangeiger
quelle
Okay, und gibt es einen optimalen Wert, der ngute Ergebnisse liefert? Es muss nicht immer hat das dritte Wort sein , die vorhergesagt wird, sehen Sie
yati sagade
2
Nun, eine größere nListe ergibt eine längere Liste, die Ihnen eine genauere Vorhersage liefert, aber auch teurer in der Suche ist. Es ist also ein Kompromiss zwischen Präzision und Rechenzeit.
Sebastiangeiger
2
Außerdem benötigen Sie einen größeren Korpus, damit größere n-Gramm praktisch nützlich sind.
Liori
4
ähm, das ist buchstäblich eine Markov-Kette ... nicht nur das, sondern buchstäblich das beste Lehrbuchbeispiel ...
Justin L.
2

Es sieht so aus, als ob die Problemdomäne eine Teilmenge der Zeichenfolgensuche ist. Durch Erweitern von Wörtern um Leerzeichen kann hier der Fuzzy-String-Abgleich angewendet werden.

Möglicherweise möchten Sie alle Benutzereingaben während des Trainings zusätzlich zu Ihrem Wörterbuch als ein Wort betrachten / zulassen. Auf diese Weise können Sie das nächste Wort vorschlagen, aber auch die automatische Vervollständigung von Wörtern oder Phrasen vorschlagen.

Hier ist ein Link zu einer Zusammenstellung von Fuzzy-String-Suchalgorithmen

http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search.html

Dorward Villaruz
quelle
1

Sie suchen ein (statistisches) Sprachmodell .

Ein statistisches Sprachmodell ordnet einer Folge von m Wörtern P(w_1,...,w_m)mittels einer Wahrscheinlichkeitsverteilung eine Wahrscheinlichkeit zu ...

Bei der Spracherkennung und bei der Datenkomprimierung versucht ein solches Modell, die Eigenschaften einer Sprache zu erfassen und das nächste Wort in einer Sprachsequenz vorherzusagen ...

user3287
quelle
Beeindruckend. Aber ich denke, die Antwort von @ sebastiangeiger erklärt dies für n = 3.
Yati Sagade
Seine Antwort beschreibt ein bestimmtes Sprachmodell, nämlich n-Gramm-Modelle. Es gibt andere Sprachmodelle, z. B. syntaktische Sprachmodelle ( goo.gl/ffPOg ).
user3287