这里我有一个新闻模型,假设我使用google- word2vec -300模型
import gensim.downloader as api
word2vec_model300 = api.load('word2vec-google-news-300')我想为"AI“或"artifical intelligence”找到相似的单词,所以我想写
word2vec_model300.most_similar("artifical intelligence")我得到了一些错误
KeyError: "word 'artifical intelligence' not in vocabulary"那么,从二元词组中提取相似词的正确方法是什么呢?
提前感谢!
发布于 2021-11-10 23:39:22
在某种程度上,当单词标记不在一组固定的单词向量中时,这组单词向量的创建者选择不对该单词进行训练/建模。因此,您所做的任何事情都只是对它的缺失的一种粗略的解决办法。
不过,请注意,当谷歌准备这些向量时-基于2012年前的新闻文章数据集-他们还在上面运行了一些统计多词组合,创建了连接_字符的多词。因此,首先检查是否存在'artificial_intelligence'的向量。
如果不是,你可以尝试其他粗略的变通方法,比如将'artificial'和'intelligence'的向量平均在一起-当然,这并不是人们所说的这两个单词的不同组合,而是独立单词所暗示的含义。
通过显式的关键字positive参数,Gensim关键字方法可以接受您通过平均等操作创建的原始向量,甚至可以接受它将为您平均的多个单词的列表作为参数。例如:
word2vec_model300.most_similar(positive=[average_vector])...or...
word2vec_model300.most_similar(positive=['artificial', 'intelligence'])最后,尽管Google的旧矢量很方便,但它们现在有点旧了&来自某个特定领域(流行新闻文章),在这个领域中,感觉可能与其他领域(或最近使用的)不匹配。因此,您可能想要寻找替代向量,或者如果您从感兴趣的领域获得足够的数据,则训练自己的向量,以获得适当的含义-包括您选择在数据中标记化的任何特定多元语法的向量。
https://stackoverflow.com/questions/69909863
复制相似问题