web-dev-qa-db-fra.com

Gensim Word2vec en python3 vocab manquant

J'utilise l'implémentation gensim de Word2Vec. J'ai l'extrait de code suivant:

print('training model')
model = Word2Vec(Sentences(start, end))
print('trained model:', model)
print('vocab:', model.vocab.keys())

Lorsque j'exécute cela en python2, cela fonctionne comme prévu. L'impression finale est tous les mots du vocabulaire.

Cependant, si je l'exécute en python3, j'obtiens une erreur:

trained model: Word2Vec(vocab=102, size=100, alpha=0.025)
Traceback (most recent call last):
  File "learn.py", line 58, in <module>
    train(to_datetime('-4h'), to_datetime('now'), 'model.out')
  File "learn.py", line 23, in train
    print('vocab:', model.vocab.keys())
AttributeError: 'Word2Vec' object has no attribute 'vocab'

Que se passe-t-il? Gensim Word2vec n'est-il pas compatible avec python3?

15
Sam Lee

Utilisez-vous la même version de gensim aux deux endroits? Gensim 1.0.0 déplace vocab vers un objet d'assistance, alors que dans les versions antérieures à 1.0.0 de gensim (dans Python 2 ou 3), vous pouvez utiliser:

model.vocab

... dans gensim 1.0.0+, vous devriez plutôt utiliser (dans Python 2 ou 3) ...

model.wv.vocab
25
gojomo