Wie erstelle ich eine Liste verwandter Wörter, die auf anfänglichen Stichwörtern basieren?

19

Ich habe kürzlich eine coole Funktion gesehen, die einst in Google Sheets verfügbar war : Sie schreiben zunächst einige verwandte Keywords in aufeinanderfolgende Zellen, z. B. "blau", "grün", "gelb", und es werden automatisch ähnliche Keywords generiert (in diesem Fall andere Farben). Weitere Beispiele finden Sie in diesem YouTube-Video .

Ich möchte dies in meinem eigenen Programm reproduzieren. Ich denke darüber nach, Freebase zu verwenden, und es würde intuitiv so funktionieren:

  1. Rufen Sie die Liste der angegebenen Wörter in Freebase ab.
  2. Finden Sie ihren / ihre "gemeinsamen Nenner" und konstruieren Sie darauf basierend eine Distanzmetrik.
  3. Bewerten Sie andere Konzepte anhand ihrer "Distanz" zu den ursprünglichen Keywords.
  4. Zeigen Sie die nächstgelegenen Konzepte an.

Da ich mit diesem Bereich nicht vertraut bin, lauten meine Fragen:

  • Gibt es einen besseren Weg, dies zu tun?
  • Welche Tools stehen für jeden Schritt zur Verfügung?
nassimhddd
quelle
Ich vermute, dass dies auf Lernthemen in einem großen Korpus basiert.
Tschakravarty
Wenn Sie ihre Erklärung finden möchten, gab es meines Erachtens einen Artikel über die zugrunde liegende Methode namens Google Sets.
Jamesmf
1
Dieses Problem wird als "Abfrageerweiterung" bezeichnet.
Emre

Antworten:

15

Der word2vec-Algorithmus kann eine gute Möglichkeit sein, mehr Elemente für eine Liste ähnlicher Wörter abzurufen. Es handelt sich um einen unbeaufsichtigten "Deep Learning" -Algorithmus, der zuvor anhand von auf Wikipedia basierenden Trainingsdaten demonstriert wurde (Hilfsskripte finden Sie auf der Google-Codepage).

Derzeit gibt es C- und Python- Implementierungen. Dieses Tutorial von Radim Řehůřek , dem Autor der Themenmodellierungsbibliothek von Gensim , ist ein hervorragender Einstieg.

Die Demonstration " Einzelthema " im Lernprogramm ist ein gutes Beispiel für das Wiederfinden ähnlicher Wörter zu einem einzelnen Begriff (versuchen Sie, nach "Rot" oder "Gelb" zu suchen). Es sollte möglich sein, diese Technik zu erweitern, um die Wörter zu finden, die die größte allgemeine Ähnlichkeit mit einem Satz von Eingabewörtern aufweisen.

joews
quelle
5

Haben Sie über einen frequenzbasierten Ansatz nachgedacht, bei dem das Zusammentreffen von Wörtern in Korpora ausgenutzt wird? Zumindest habe ich das gesehen, was die meisten Leute dafür benutzt haben. Ich denke, es könnte kurz in Mannings und Schützes Buch behandelt werden, und ich erinnere mich an so etwas als Hausaufgabe in der Grundschule ...

Weitere Hintergrundinformationen finden Sie hier: http://nlp.stanford.edu/IR-book/html/htmledition/automatic-thesaurus-generation-1.html

Für diesen Schritt:

Bewerten Sie andere Konzepte anhand ihrer "Distanz" zu den ursprünglichen Keywords.

Es gibt mehrere semantische Ähnlichkeitsmetriken, die Sie untersuchen können. Hier ist ein Link zu einigen Folien, die ich für ein Klassenprojekt unter Verwendung einiger dieser Ähnlichkeitsmetriken in WordNet zusammengestellt habe: http://www.eecis.udel.edu/~trnka/CISC889-11S/lectures/greenbacker-WordNet-Similarity. pdf

Charlie Greenbacker
quelle
3

Dies ist eines der schönen Probleme, bei denen der Umfang von einer Hausaufgabe zu einem Projekt in Google-Größe variieren kann.

In der Tat können Sie mit dem gleichzeitigen Auftreten der Wörter beginnen (z. B. bedingte Wahrscheinlichkeit). Sie werden schnell feststellen, dass Sie die Liste der Stoppwörter erhalten, die mit den meisten Wörtern verwandt sind, weil sie sehr beliebt sind. Wenn Sie den Lift der bedingten Wahrscheinlichkeit verwenden, werden die Stoppwörter berücksichtigt, aber die Beziehung wird in einer kleinen Anzahl fehleranfällig (in den meisten Fällen). Sie könnten es mit Jacard versuchen, aber da es symmetrisch ist, wird es viele Beziehungen geben, die es nicht findet.

Dann können Sie Relationen berücksichtigen, die nur in geringer Entfernung vom Basiswort auftreten. Sie können (und sollten) Beziehungen berücksichtigen, die auf allgemeinen Korpussen (z. B. Wikipedia) und benutzerspezifischen (z. B. seinen E-Mails) basieren.

In Kürze werden Sie viele verwandte Maßnahmen haben, wenn alle Maßnahmen gut sind und einige Vorteile gegenüber den anderen haben.

Um solche Maßnahmen zu kombinieren, möchte ich das Problem in ein Klassifizierungsproblem reduzieren.

Sie sollten einen Datensatz aus Paris von Wörtern erstellen und diese als "verwandt" kennzeichnen. Um einen großen beschrifteten Datensatz zu erstellen, können Sie:

  • Verwenden Sie Quellen bekannter verwandter Wörter (z. B. gute alte Wikipedia-Kategorien) für Positive
  • Die meisten nicht als verwandt bekannten Wörter sind nicht verwandt.

Verwenden Sie dann alle Kennzahlen, die Sie als Merkmale der Paare haben. Jetzt befinden Sie sich in der Domäne des Problems der überwachten Klassifizierung. Erstellen Sie einen Klassifikator für den Datensatz, der gemäß Ihren Anforderungen ausgewertet wird, und ermitteln Sie ein Ähnlichkeitsmaß, das Ihren Anforderungen entspricht.

DaL
quelle