Tensorflow: Word2vec CBOW-Modell

8

Ich bin neu bei Tensorflow und bei Word2vec. Ich habe gerade die word2vec_basic.py studiert, die die Modell mit Skip-Gram Algorithmus. Jetzt möchte ich mit CBOW Algorithmus trainieren. Stimmt es, dass dies erreicht werden kann, wenn ich einfach train_inputs und train_labels umkehren?

    
gladys0313 23.05.2016, 15:29
quelle

3 Antworten

12

Ich denke, CBOW -Modell kann nicht einfach erreicht werden, indem train_inputs und train_labels in Skip-gram umgedreht werden, da die CBOW -Modellarchitektur die Summe der Vektoren der umgebenden Wörter als eine einzige Instanz für die Klassifikator zur Vorhersage. Z. B. sollten Sie [the, brown] zusammen verwenden, um quick vorherzusagen, anstatt the zu verwenden, um quick vorherzusagen.

Um CBOW zu implementieren, müssen Sie eine neue generate_batch Generatorfunktion schreiben und die Vektoren der umgebenden Wörter zusammenfassen, bevor Sie die logistische Regression anwenden. Ich habe ein Beispiel geschrieben, auf das du dich beziehen kannst: Ссылка

    
Zichen Wang 21.06.2016 15:07
quelle
5

Grundsätzlich ja:

für den angegebenen Text the quick brown fox jumped over the lazy dog: wären die CBOW-Instanzen für die Fenstergröße 1

%Vor%     
Sung Kim 24.05.2016 02:16
quelle
4

Für CBOW müssen Sie nur wenige Teile des Codes ändern word2vec_basic.py . Insgesamt sind Ausbildungsstruktur und -methode identisch.

Welche Teile soll ich in word2vec_basic.py ändern?

1) Wie er Trainingsdatenpaare generiert. Weil Sie in CBOW das zentrale Wort und nicht die Kontextwörter vorhersagen.

Die neue Version für generate_batch wird

sein %Vor%

Dann wären neue Trainingsdaten für CBOW

%Vor%

im Vergleich zu den Daten von Skip-gram

%Vor%

2) Daher müssen Sie auch die variable Form ändern

%Vor%

bis

%Vor%

3) Verlustfunktion

%Vor%

Beachten Sie Eingaben = tf.reduce_sum (einbetten, 1) , wie Zichen Wang es erwähnte.

Das ist es!

    
Aaron 09.07.2017 04:41
quelle

Tags und Links