加载GoogleNews-vectors-negative300.bin和predict_output_word

时间:2018-06-13 14:30:55

标签: word2vec

我尝试加载GoogleNews-vectors-negative300.bin并尝试使用predict_output_word方法,

我测试了三种方法,但每次失败,每种方式的代码和错误如下所示。

import gensim
from gensim.models import Word2Vec
  1. 第一个:
  2. 我首先使用这一行:

    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.
    
    1. 第二个:
    2. 然后我尝试了:

      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'
      
      1. 第三个: model = gensim.models.Word2Vec.load(' GoogleNews-vectors-negative300.bin') 打印(model.wv.predict_output_word(['王''人&#39],TOPN = 10))
      2. 错误:     _pickle.UnpicklingError:无效的加载密钥,' 3'。

        我在

        阅读了该文件

        https://radimrehurek.com/gensim/models/word2vec.html

        但仍然不知道predict_output_word所在的命名空间。

        有人可以帮忙吗?

        感谢。

1 个答案:

答案 0 :(得分:0)

GoogleNews向量集只是原始向量 - 没有完整的训练模型(包括内部权重)。所以它:

  • 无法作为功能齐全的gensim Word2Vec模型加载
  • 可以作为仅查找KeyedVectors加载,但该对象本身并不具备进一步模型培训或其他功能所需的数据或协议

Google尚未发布用于创建GoogleNews矢量集的完整模型。

另请注意,predict_output_word()中的gensim函数应被视为实验性好奇心。它在分层 - softmax模型中不起作用(因为它不像生成排名预测那么简单)。它与训练期间使用的相同的上下文窗口权重并不完全匹配。

预测单词并不是word2vec算法的重点 - 并且许多imeplementation都没有提供任何接口来在稀疏批量训练过程之外进行单独的单词预测。更确切地说,word2vec使用(sloppily)尝试进行预测来训练单词向量,这对于其他非单词预测目的非常有用。