2015-12-08 1 views
0

J'utilise le code suivant pour former le modèle:Tous les mots, ceux que j'utilise pour former le modèle word2vec, doivent être dans model.vocab, n'est-ce pas?

norms_train = [ [''], [ u'word', u'to', u'learn', ... ], ...] 
model = word2vec.Word2Vec(norms_train, size=100, window=10) 

Avec procédure pour vérifier les résultats:

i, j = 0, 0 
for text in norms_train: 
    j += len(text) 
    for word in text: 
     if word not in model.vocab: 
      i += 1 
print i, '/', j 

13129/185379

Répondre

1

Tous les mots que vous avez utilisés pour former les Word2Vec Le modèle devrait être dans model.vocab. Il peut y avoir un seuil sur le nombre minimum d'occurrences d'un mot, qui doit être présent pour qu'il soit inclus dans le vocabulaire du modèle. Je suppose que l'argument min_count est défini à 5 par défaut, c'est-à-dire si un mot est apparu moins de 5 fois dans les données d'apprentissage, ce mot ne serait pas présent dans model.vocab.

+0

Oui, maintenant je vois - min_count = 5 –

+0

Essayez de mettre 'min_count' = 0 et ensuite former votre modèle à nouveau. Cela pourrait aider. – KartikKannapur