【问题标题】:Gensim Word2Vec lacks vectors for input wordsGensim Word2Vec 缺少输入词的向量
【发布时间】:2019-10-15 13:53:44
【问题描述】:

我训练过的 Gensim Word2Vec 缺少某些单词的向量。也就是说,虽然我有一个词“yuval”作为输入,但模型缺少它的向量。是什么原因?

【问题讨论】:

    标签: gensim word2vec


    【解决方案1】:

    您要么没有提供'yuval' 作为具有正确格式语料库的标记,要么出现次数低于模型的min_count。 (对于Word2Vec 模型来说,丢弃低频词通常有帮助 - 如果只有几个词的例子,更多的数据并不会自动变得更好。)

    仔细检查'yuval' 是否出现在语料库中,出现了多少次,以及这是否足以让单词在min_count 修剪中存活下来。

    【讨论】:

      【解决方案2】:

      为了扩展 @gojomo 的答案,Word2Vec 模型在训练期间被告知丢弃低于 min_count 的标记,因为它们被认为是无信息的,意味着无法推断有用的上下文。

      这意味着,这些标记不会有向量。

      要检查这一点,您需要加载模型,并检查词汇表中是否包含您感兴趣的标记:

      >>> import gensim
      >>> model = gensim.models.KeyedVectors.load(...)
      >>> 'car' in model
      True
      >>> 'yuval' in model
      False
      

      由于 'yuval' 不在词汇表中,所以用in 运算符找不到它,如果使用会抛出一个关键错误。

      >>> model['car']
      ...
      ...
      <numpy array>
      >>> model['yuval']
      ...
      ...
      KeyError: "word 'yuval' not in vocabulary"
      

      如果您真的希望单词应该在词汇表中,您也可以随时将它们打印出来:

      >>> for token in model.wv.vocab.keys():
      ...     print(token)
      ... 
      

      【讨论】:

        猜你喜欢
        • 2017-07-19
        • 2017-03-20
        • 2018-11-27
        • 1970-01-01
        • 2021-06-26
        • 2017-07-22
        • 2017-10-09
        • 2016-09-05
        • 2016-12-04
        相关资源
        最近更新 更多