2017-09-11 5 views
0

Je cours le code word2vec gensim sur un corpus de CV (mots d'arrêt enlevés) pour identifier des mots de contexte similaires dans le corpus à partir d'une liste de mots-clés prédéfinis.Pourquoi la fonction most_similar() de Word2Vec donne-t-elle des résultats insensés à l'entraînement?

Malgré plusieurs itérations avec paramètres d'entrée, suppression de mots vides, etc., les mots de contexte similaires n'ont aucun sens (en termes de distance ou de contexte) Par exemple. la corrélation et la matrice se produit dans la même fenêtre plusieurs fois matrix encore doesnt baisse des résultats most_similar pour la corrélation

Voici les détails du système et les codes gensim 2.3.0, Courir sur Python 2.7 Anaconda Formation CV: 55,418 phrases mots en moyenne par phrase: 3-4 mots (suppression de poste mots vides) code:

wordvec_min_count=int() 
    size = 50 
    window=10 
    min_count=5 
    iter=50 
    sample=0.001 
    workers=multiprocessing.cpu_count() 
    sg=1 
    bigram = gensim.models.Phrases(sentences, min_count=10, threshold=5.0) 
    trigram = gensim.models.Phrases(bigram[sentences], min_count=10, threshold=5.0) 
    model=gensim.models.Word2Vec(sentences = trigram[sentences], size=size, alpha=0.005, window=window, min_count=min_count,max_vocab_size=None,sample=sample, seed=1, workers=workers, min_alpha=0.0001, sg=sg, hs=1, negative=0, cbow_mean=1,iter=iter) 

model.wv.most_similar('correlation') 
Out[20]: 
[(u'rankings', 0.5009744167327881), 
(u'salesmen', 0.4948525130748749), 
(u'hackathon', 0.47931140661239624), 
(u'sachin', 0.46358123421669006), 
(u'surveys', 0.4472047984600067), 
(u'anova', 0.44710394740104675), 
(u'bass', 0.4449636936187744), 
(u'goethe', 0.4413239061832428), 
(u'sold', 0.43735259771347046), 
(u'exceptional', 0.4313117265701294)] 

Je suis perdu pourquoi les résultats sont si aléatoires? Y at-il de toute façon de vérifier l'exactitude de word2vec?

Y a-t-il aussi une alternative de word2vec pour la fonction most_similar()? J'ai lu au sujet de gloVE mais n'a pas pu installer le paquet.

Toute information à cet égard serait utile

Répondre

1

Activer la journalisation niveau INFO et assurez-vous qu'il indique la formation réelle se passe. (C'est, vous voyez des progrès supplémentaires en prenant le temps sur le nombre attendu de textes, sur le nombre attendu d'itérations.)

Vous pouvez frapper ce open bug issue in Phrases, où demander la phrase-promotion (comme trigram[sentences]) offre seulement simple-itération, plutôt que l'objet de collection multiplier-itérable dont Word2Vec a besoin.

Word2Vec doit passer sur le corpus une fois pour la découverte du vocabulaire, puis iter fois de plus pour l'entraînement. Si sentences ou les phraseurs-wrappers ne supportent qu'une seule itération, seul le vocabulaire sera découvert - l'apprentissage s'arrêtera instantanément et le modèle apparaîtra sans formation. Comme vous le verrez dans ce problème, une solution de contournement consiste à effectuer la transformation Phrases et enregistrer les résultats dans une liste en mémoire (si elle correspond) ou à un corpus de texte distinct sur le disque (qui a déjà été phrase -combiné). Ensuite, utilisez un itérable vraiment réitérable sur cela - qui permettra également d'économiser un peu de traitement redondant.