Ответ 1
Исправлена проблема с:
from gensim import models
w = models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
print w["queen"]
Я получаю AttributeError
при загрузке модели gensim, доступной в репозитории word2vec:
from gensim import models
w = models.Word2Vec()
w.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
print w["queen"]
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-3-8219e36ba1f6> in <module>()
----> 1 w["queen"]
C:\Anaconda64\lib\site-packages\gensim\models\word2vec.pyc in __getitem__(self, word)
761
762 """
--> 763 return self.syn0[self.vocab[word].index]
764
765
AttributeError: 'Word2Vec' object has no attribute 'syn0'
Это известная проблема?
Исправлена проблема с:
from gensim import models
w = models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
print w["queen"]
Чтобы разделить код векторного запроса между различными обучающими algos (Word2Vec, Fastext, WordRank, VarEmbed), авторы разделили хранение и запрос векторов слов в отдельный класс KeyedVectors.
Два метода и несколько атрибутов в классе word2vec устарели.
Методы
Атрибуты
Они были перенесены в класс KeyedVectors.
После обновления до этой версии вы можете получить исключения об устаревших методах или отсутствующих атрибутах.
Чтобы удалить исключения, вы должны использовать
KeyedVectors.load_word2vec_format (instead ofWord2Vec.load_word2vec_format)
word2vec_model.wv.save_word2vec_format (instead of word2vec_model.save_word2vec_format)
model.wv.syn0norm instead of (model.syn0norm)
model.wv.syn0 instead of (model.syn0)
model.wv.vocab instead of (model.vocab)
model.wv.index2word instead of (model.index2word)
В настоящее время, поскольку models.Word2Vec
устарела, вам нужно использовать models.KeyedVectors.load_word2vec_format
вместо models.Word2Vec.load_word2vec_format
как показано ниже.
from gensim import models
w = models.KeyedVectors.load_word2vec_format('model.bin', binary=True)
from gensim import models
w = models.KeyedVectors.load_word2vec_format('model.bin', binary=True)
когда я его использую, он выдаст ошибку:
/usr/local/lib/python3.6/dist-packages/smart_open/smart_open_lib.py:398: UserWarning: This function is deprecated, use smart_open.open instead. See the migration notes for details: https://github.com/RaRe-Technologies/smart_open/blob/master/README.rst#migrating-to-the-new-open-function
'See the migration notes for details: %s' % _MIGRATION_NOTES_URL
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-22-894908fd0f6c> in <module>()
----> 1 model=gensim.models.KeyedVectors.load_word2vec_format('hi.bin',binary=True)
2 frames
/usr/local/lib/python3.6/dist-packages/gensim/utils.py in any2unicode(text, encoding, errors)
357 if isinstance(text, unicode):
358 return text
--> 359 return unicode(text, encoding, errors=errors)
360
361
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte