我尝试加载GoogleNews-vectors-negative300.bin并尝试使用predict_output_word方法,
我测试了三种方法,但每次失败,每种方式的代码和错误如下所示。
import gensim
from gensim.models import Word2Vec
我首先使用这一行:
model=Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin',binary=True)
print(model.wv.predict_output_word(['king','man'],topn=10))
错误:
DeprecationWarning: Deprecated. Use gensim.models.KeyedVectors.load_word2vec_format instead.
然后我尝试了:
model = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin',binary=True)
print(model.wv.predict_output_word(['king','man'],topn=10))
错误:
AttributeError: 'Word2VecKeyedVectors' object has no attribute 'predict_output_word'
错误: _pickle.UnpicklingError:无效的加载密钥,' 3'。
我在
阅读了该文件https://radimrehurek.com/gensim/models/word2vec.html
但仍然不知道predict_output_word所在的命名空间。
有人可以帮忙吗?
感谢。
答案 0 :(得分:0)
GoogleNews
向量集只是原始向量 - 没有完整的训练模型(包括内部权重)。所以它:
gensim
Word2Vec
模型加载KeyedVectors
加载,但该对象本身并不具备进一步模型培训或其他功能所需的数据或协议 Google尚未发布用于创建GoogleNews
矢量集的完整模型。
另请注意,predict_output_word()
中的gensim
函数应被视为实验性好奇心。它在分层 - softmax模型中不起作用(因为它不像生成排名预测那么简单)。它与训练期间使用的相同的上下文窗口权重并不完全匹配。
预测单词并不是word2vec算法的重点 - 并且许多imeplementation都没有提供任何接口来在稀疏批量训练过程之外进行单独的单词预测。更确切地说,word2vec使用(sloppily)尝试进行预测来训练单词向量,这对于其他非单词预测目的非常有用。