2016-03-28 13 views
1

Ich benutze Gensim in Ubuntu. Version ist 0.12.4. Mein Word2vec-Modell ist nicht konsistent. Jedes Mal, wenn ich das Modell aufbaue, das auf denselben genauen Sätzen und demselben Parameter basiert, haben sie immer noch unterschiedliche Darstellungen der Wörter.gensim word2vec gibt inkonsistente Ergebnisse

hier ist der Code (die ich von der ersten Post gestohlen)

>>> from nltk.corpus import brown 
>>> from gensim.models import Word2Vec 
>>> sentences = brown.sents()[:100] 
>>> model = Word2Vec(sentences, size=10, window=5, min_count=5, workers=4) 
>>> model[sentences[0][0]] 
array([ 0.04913874, 0.04574081, -0.07402877, -0.03270053, 0.06598952, 
     0.04157289, 0.05075986, 0.01770534, -0.03796235, 0.04594197], dtype=float32) 
>>> model = Word2Vec(sentences, size=10, window=5, min_count=5, workers=4) 
>>> model[sentences[0][0]] 
array([ 0.04907205, 0.04569579, -0.07379777, -0.03273782, 0.06579078, 
     0.04167712, 0.05083019, 0.01780009, -0.0378389 , 0.04578455], dtype=float32) 
>>> model = Word2Vec(sentences, size=10, window=5, min_count=5, workers=4) 
>>> model[sentences[0][0]] 
array([ 0.04906179, 0.04569826, -0.07382379, -0.03274316, 0.06583244, 
     0.04166647, 0.0508585 , 0.01777468, -0.03784611, 0.04578935], dtype=float32) 

Ich habe auch Samen zu einer festen int zu setzen versucht, aber dies scheint nicht zu helfen. Ich versuchte auch, Gensim neu zu installieren, das auch nicht half.

Irgendeine Idee, wie man mein Modell stabilisiert ??

+1

hier angegeben Wenn ich könnte, die Instabilität auffallen, ist genug nicht ausreichend, um einen signifikanter Fehler zu propagieren. Änderungen in der dritten oder vierten Dezimalstelle sind immer klein genug, um ignoriert zu werden. Beachten Sie auch, dass 'float32' (tatsächlich alle Gleitkommawerte) einen Genauigkeitsverlust aufweisen - es ist ein Kompromiss zwischen der Fähigkeit, die Genauigkeitsstufe zu speichern, die Sie überhaupt sehen. –

+0

der Unterschied kann tatsächlich signifikant sein. Das von mir gepostete Beispiel verwendet sehr kleine Datenmengen. Sie können das Modell stabilisieren, indem Sie nur 1 Arbeiter verwenden, und dies wird konsistente Ergebnisse liefern. –

+0

Wirklich? Was war der maximale Unterschied, den du beobachtet hast? Könnte sehr nützlich sein, um zu wissen. –

Antwort