首页 > 解决方案 > 在 Gensim 中找不到 Word2Vec 单词,但出现在 TensorFlow 嵌入投影仪上?

问题描述

我最近开始尝试使用预训练的词嵌入来提高我的 LSTM 模型在 NLP 任务中的性能。在这种情况下,我查看了 Google 的 Word2Vec。根据在线教程,我首先下载了 Word2Vecwget https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz并使用 python 的gensim包来查询嵌入,使用以下代码。

from gensim.models import KeyedVectors

if __name__ == "__main__":
    model = KeyedVectors.load_word2vec_format("./data/word2vec/GoogleNews-vectors-negative300.bin", binary=True)
    print(model["bosnia"])

然而,在注意到模型中没有找到许多常用词后,我开始怀疑是否有问题。bosnia如上所示,我尝试在嵌入存储库中搜索,但没有找到。所以,我继续使用TensorFlow 嵌入投影仪,加载 Word2Vec 模型,然后搜索bosnia——它就在那里。

所以,我的问题是:为什么会这样?我下载的Word2Vec版本不完整吗?还是 gensim 无法将所有单词加载到内存中,因此省略了一些?

标签: python-3.xdeep-learningnlpword2vecword-embedding

解决方案


您应该检查下载文件的长度,以确保它符合预期(以防它被截断或下载不完整)。

您应该仔细检查是否在两个地方都使用了相同的文件,并通过两个路径检查完全相同的标记(例如'bosnia'vs )。( https://projector.tensorflow.org/下拉列表'Bosnia'中的 5 个选项均不对应300-d、3-million-token 数据集,并且该按钮似乎不支持 word2vec文件,所以我我不确定如何使用它来交叉检查该文件中的内容。)GoogleNewsload.bin

(在 gensim 中没有任何已知的错误load_word2vec_format()可以解释它缺少实际存在的向量。)


推荐阅读