Machine learning 获取word2vec中两个单词之间最频繁的上下文

Machine learning 获取word2vec中两个单词之间最频繁的上下文,machine-learning,nlp,word2vec,gensim,Machine Learning,Nlp,Word2vec,Gensim,我已经使用gensim word2vec构建了自己的Skip Gram模型。我知道我可以得到两个单词之间的相似性分数,例如model.wv.相似性'car','truck'->0.75。现在我想知道为什么它们如此相似 既然Skip Gram已经用上下文单词进行了训练,我想有一种方法可以让汽车和卡车之间共享最频繁的上下文单词。另一个例子:如果我有以下句子,我想让单词slow作为最常见的上下文: 这辆车很慢 卡车慢了 这辆车是红色的 请注意,红色不会出现在truck中,因此不应作为最常见的上下文返回

我已经使用gensim word2vec构建了自己的Skip Gram模型。我知道我可以得到两个单词之间的相似性分数,例如model.wv.相似性'car','truck'->0.75。现在我想知道为什么它们如此相似

既然Skip Gram已经用上下文单词进行了训练,我想有一种方法可以让汽车和卡车之间共享最频繁的上下文单词。另一个例子:如果我有以下句子,我想让单词slow作为最常见的上下文:

这辆车很慢 卡车慢了 这辆车是红色的 请注意,红色不会出现在truck中,因此不应作为最常见的上下文返回

有什么方法可以做到这一点吗?

gensim Word2Vec模型不存储所有文本或共现统计信息。从本质上讲,训练的行为是迫使一个太小的模型在进行附近的文本预测时,仍然尽可能地执行所有此类共现

所以,没有直接的方法来问它,给定N个邻近的词,最常见的上下文词是什么。此外,培训的重点是创建碰巧在其他方面有用的词向量,而不是实际创建最佳的邻近词预测。因此,Word2Vec模型的内部预测很少通过接口方法实现——例如,谷歌的原始Word2Vec.c代码没有提供接口

gensim中有一种新的实验方法预测输出单词,该方法在一定程度上模拟了给定一定数量上下文单词的模型预测。然而,它并不像在训练中那样对上下文单词进行加权,并且不能在所有模型模式下工作。尽管如此,它可能有类似于您最初目标的有用输出,因此请查看:


如果你真的需要一份精确的报告,说明哪些单词最常出现在语料库中的W点到N个其他单词中,那么你必须使用其他非Word2Vec代码来构建必要的共现查找表,或者为每个查询重新扫描语料库。

使用gensim,你可以获得与给定嵌入最接近的N个单词。为什么不试着得到car和truck[vcar+vtruck]/2的平均向量,然后在模型中查询最接近该平均向量的单词