2017-10-27 4 views
0

Was ist der beste Weg herauszufinden, welche Wörter in der Nähe eines Wortes X häufig vorkommen? (Anmerkung: NICHT, welche Wörter dem Wort X am ähnlichsten sind)Finden, welche Wörter mit dem Wort X am wahrscheinlichsten vorkommen

Ich habe GloVe Wortvektoren, also stellt jeder Vektor eine Verteilung eines Wortes über verschiedene Umgebungen dar (jede Dimension ist eine Umgebung). Wie kann ich Wörter aus jeder dieser Umgebungen abrufen? Mit anderen Worten, wie kann ich Wörter abrufen, die nur in einer der Dimensionen ähnlich sind?

Ich habe versucht, nach Wörtern zu suchen, die näher an X entlang nur einer Dimension sind, den Rest ignorierend, aber das gab mir Müllwörter.

P.S. Was ich bisher gefunden habe, finde die N nächsten Wörter (durch Kosinusähnlichkeit) zu Wort X, und wende K-Means Clustering auf diese Wörter an. Es funktioniert ziemlich gut, aber ich bin besorgt, dass die N nächsten Wörter nicht unbedingt die Wörter sind, die nahe Wort X erscheinen, sondern, Wörter, die in ähnlichen Umgebungen zu Wort X erscheinen.

EDIT: Klarstellung: einfach sammeln n Grammzählungen werden nicht ausreichen, da ich nach einer Möglichkeit suche, dies nur mit den Vektoren zu tun, dh ohne Zugriff auf das Korpus selbst. Der Grund dafür ist, dass einige frei verfügbare vortrainierte Vektoren auf Terrabytes von Daten trainiert wurden. Das Speichern der gesamten N-Gram-Zählwerte für gemeinsames Crawlen würde beispielsweise sehr verschwenderisch sein, wenn diese Information irgendwie von den vortrainierten Vektoren erhalten werden könnte.

Antwort

0

Wenn Sie wirklich wollen, "welche Wörter in der Nähe von Wort X erscheinen", brauchen Sie die Art von 'dichten' Wortvektoren von word2vec/gar nicht. Scanne einfach dein Korpus und tale die Co-Vorkommen (innerhalb deines Interessenfensters).

Sie haben dann genaue Zählungen, nicht irgendeine Schätzung von anderen indirekt bezogenen Darstellungen.

(für Ressourcen Suche in Bezug auf [Wort Co-Vorkommen Matrix], wenn Sie weitere Hinweise, wie brauchen eine solche tally zu tun.)

+0

Danke. Ich bin mir dessen bewusst. Ich möchte jedoch diese Informationen aus trainierten Wortvektoren, nicht aus dem Korpus herausholen. Der Grund dafür ist, dass ich derzeit nicht über die Ressourcen verfüge, um den gesamten Crawl zu scannen, also versuche ich, einen Weg zu finden, die freien Common-Crawl-Vektoren von Stanford NLP zu diesem Zweck zu verwenden. – MetaInstigator

+0

Ich habe keine Möglichkeit gesehen, Co-Vorkommen von dichten Vektoren zu rekonstruieren, daher könnte es sich um ein 'spekulatives Forschungsprojekt' Gebiet handeln.Und um die Gültigkeit jeder vermuteten Methode zur Vorhersage von Ko-Ereignissen zu testen, müssten Sie gegen ... die tatsächlichen Ko-Vorkommen auswerten. (Wenn man ein voll trainiertes word2vec NN hat, einschließlich versteckter/ausgegebener Gewichte, ist es plausibel, aber ineffizient, seine Ausgaben als Wahrscheinlichkeitsverteilung von Co-Vorkommen zu lesen. Aber AFAIK die Stanford NLP GloVe Vektoren, wie die meisten vortrainierten Vektorsätze, nicht ' t Einschließlich des vollständigen NN-Modells.) – gojomo

+0

Ein weiteres Projekt, das auf Common Crawl basiert, wird auf der Seite mit den öffentlichen Datensätzen von AWS - https://aws.amazon.com/public-datasets/common-crawl/#N-gram_and_Language_Models - und möglicherweise erwähnt haben Sie einen überschaubaren Datensatz (eine Anzahl von allen 5-Gramm), die immer noch nützlich für Ihre gemeinsamen Vorkommen ist. – gojomo

0

Während glaube ich, ist die einfache Zählung von cooccurrences wird besser sein, Sie kann dies auch mit vielen Einbettungsansätzen tun.

Word2vec erstellt tatsächlich zwei Zuordnungen. Ein Encoder und ein Decoder.

Normalerweise verwenden wir nur den Encoder, und beide Vektoren sollten ziemlich ähnlich sein. Aber zum Zweck der Suche nach zusammenhängenden Wörtern ist der naheliegende Ansatz, mit dem Codierer zu codieren und dann die ähnlichsten Vektoren in dem Decoder zu finden. weil diese Modelle den Kontext.

Aber Vorsicht: Die gehypten "neuronalen Worteinbettungen" konzentrieren sich wirklich auf Substituierbarkeit. Welches Wort könnten wir ersetzen? So werden Sie wahrscheinlich zuerst Synonyme und solche Wörter sehen, dann Wörter mit einem ähnlichen Kontext aber anderer Rolle.

Mit den einfachen zählbasierten Ansätzen können Sie besser steuern, was sie tun: Vorhersage der Wahrscheinlichkeit, dass Wörter zusammen auftreten.

Verwandte Themen