如何在gensim的word2vec模型中查找双词组的相似性

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

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

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

word2vec_model300.most_similar("artifical intelligence")

但我得到了错误

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

那么,提取双词组相似词的正确方法是什么?

先谢谢了!


回答:

在某种程度上,当一个词标记不在一组固定的词向量中时,该词向量集的创建者选择不训练/建模该词。因此,你所做的任何事情都只是对其缺失的粗略解决方法。

请注意,当谷歌准备这些向量时——基于2012年前的新闻文章数据集——他们还对其进行了一些统计多词组合,创建了用连接字符_连接的多词组合。所以,首先检查是否存在'artificial_intelligence'的向量。

如果没有,你可以尝试其他粗略的解决方法,比如将'artificial''intelligence'的向量平均起来——当然,这并不能真正代表人们对这两个词的特定组合的含义,只是由独立的词所暗示的含义。

Gensim的.most_similar()方法可以接受通过平均等操作创建的原始向量,或者甚至可以通过其明确的关键字positive参数接受多个词的列表,这些词它会为你平均。例如:

word2vec_model300.most_similar(positive=[average_vector])

…或者…

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

最后,虽然谷歌的老向量很方便,但它们现在有点过时了,且来自特定领域(流行新闻文章),其中词义可能与其他领域(或最近的)不匹配。所以,你可能需要寻找替代向量,或者如果你有来自你感兴趣领域的足够数据来训练你自己的向量,以获得适当的含义——包括为你选择在数据中标记的任何特定多词组合的向量。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

### 卷积神经网络 – 1D – 特征分类错误

我正在尝试修改下面的示例,以模拟我的数据集的CNN,并…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注