如何在gensim word2vec模型中寻求二元相似度

How to seek for bigram similarity in gensim word2vec model

这里我有一个word2vec模型,假设我使用google-news-300模型

import gensim.downloader as api
word2vec_model300 = api.load('word2vec-google-news-300')

想找“AI”或“人工智能”的相似词,所以想写

word2vec_model300.most_similar("artifical intelligence")

我遇到了错误

KeyError: "word 'artifical intelligence' not in vocabulary"

那么二元词提取相似词的正确方法是什么?

提前致谢!

在一个层面上,当单词标记不在一组固定的单词向量中时,该组单词向量的创建者选择不 train/model 该单词。因此,您所做的任何事情都只是一种粗略的解决方法。

不过请注意,当 Google 根据 2012 年之前的新闻文章数据集准备这些向量时,他们还在其上 运行 一些统计多重组合,创建具有连接的多重组合_ 个字符。因此,首先检查 'artificial_intelligence' 的向量是否存在。

如果不是,您可以尝试其他粗略的解决方法,例如对 'artificial''intelligence' 的向量进行平均——当然这并不是人们所说的不同这些词的组合,只是独立词所暗示的意思。

Gensim .most_similar() 方法可以采用您通过平均等操作创建的原始向量,甚至可以通过其显式关键字 positive参数。例如:

word2vec_model300.most_similar(positive=[average_vector])

...或...

word2vec_model300.most_similar(positive=['artificial', 'intelligence'])

最后,虽然 Google 的旧向量很方便,但它们现在有点旧了,而且来自特定领域(流行新闻文章),其中感官可能与其他领域(或最近)。因此,您可能想要寻找替代向量,或者如果您有足够的来自您感兴趣的领域的数据来训练自己的向量以具有适当的含义——包括您选择在数据中标记化的任何特定多重字母的向量。