Word2Vec-Einbettungen mit TF-IDF

11

Wenn Sie das word2vec-Modell trainieren (z. B. mit gensim), geben Sie eine Liste mit Wörtern / Sätzen an. Es scheint jedoch keine Möglichkeit zu geben, Gewichte für die Wörter anzugeben, die beispielsweise mit TF-IDF berechnet wurden.

Ist es üblich, die Wortvektor-Einbettungen mit dem zugehörigen TF-IDF-Gewicht zu multiplizieren? Oder kann word2vec diese irgendwie organisch nutzen?

SFD
quelle

Antworten:

9

Word2Vec Algorithmen (Überspringen Gram und CBOW) behandeln jedes Wort gleich, weil ihr Ziel zu berechnen Wort Einbettungen. Die Unterscheidung wird wichtig, wenn mit Sätzen oder Dokumenteneinbettungen gearbeitet werden muss : Nicht alle Wörter repräsentieren gleichermaßen die Bedeutung eines bestimmten Satzes. Und hier werden verschiedene Gewichtungsstrategien angewendet, TF-IDF ist eine davon und laut einigen Veröffentlichungen ziemlich erfolgreich. Aus dieser Frage von StackOverflow :

In dieser Arbeit wurden Tweets mit drei Arten der Textdarstellung modelliert. Das erste ist ein mit tf-idf gewichtetes Wortsackmodell (Termhäufigkeit - inverse Dokumenthäufigkeit) (Abschnitt 2.1.1). Der zweite stellt einen Satz dar, indem die Worteinbettungen aller Wörter (im Satz) gemittelt werden, und der dritte stellt einen Satz dar, indem die gewichteten Worteinbettungen aller Wörter gemittelt werden. Das Gewicht eines Wortes wird durch tf-idf angegeben (Abschnitt 2.1.2 ).

Maxime
quelle
2

Trainiere einen tfidfvectorizer mit deinem Korpus und benutze den folgenden Code:

tfidf = Tfidfvectorizer () dict(zip(tfidf.get_feature_names(), tfidf.idf_)))

Jetzt haben Sie ein Wörterbuch mit Wörtern als Schlüssel und Gewichten als entsprechenden Werten.

Lassen Sie mich wissen, ob es funktioniert hat.

Aayush Shrivastav
quelle
Ja tut es. Danke für Ihre Hilfe.
Tanveer