Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据单词的矢量(而不是单词本身),获取最相似的单词_Python_Gensim_Word2vec - Fatal编程技术网

Python 根据单词的矢量(而不是单词本身),获取最相似的单词

Python 根据单词的矢量(而不是单词本身),获取最相似的单词,python,gensim,word2vec,Python,Gensim,Word2vec,使用gensim.models.Word2Vec库,您可以提供一个模型和一个“word”,以便查找最相似的单词列表: model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True) model.most_similar(positive=[WORD], topn=N) 我想知道是否有可能给系统输入模型和“向量”,并要求系统返回最上面的相似单词(它们的向量非常接近给定向量)。类似于: model.most_

使用
gensim.models.Word2Vec
库,您可以提供一个模型和一个“word”,以便查找最相似的单词列表:

model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True)
model.most_similar(positive=[WORD], topn=N)
我想知道是否有可能给系统输入模型和“向量”,并要求系统返回最上面的相似单词(它们的向量非常接近给定向量)。类似于:

model.most_similar(positive=[VECTOR], topn=N)
我需要这个双语设置的功能,其中我有两个模型(英语和德语),以及一些英语单词,我需要找到它们最相似的德语候选词。 我想做的是从英语模型中得到每个英语单词的向量:

model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True)
vector_w_en=model_EN[WORD_EN]
然后用这些向量查询德国模型

model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True)
model_DE.most_similar(positive=[vector_w_en], topn=N)
我使用word2vec包中的原始距离函数在C中实现了这一点。但是,现在我需要使用python,以便能够将其与其他脚本集成

您知道在
gensim.models.Word2Vec
library或其他类似的库中是否已经有一种方法可以实现这一点吗?我需要自己实现吗?

该方法通过向量返回前N个最相似的单词:

similar_by_vector(vector, topn=10, restrict_vocab=None)

我不认为你试图实现的目标能给出一个准确的答案。因为这两个模型是分别训练的。尽管英语和德语模式在各自的词向量之间有相似的距离。无法保证“House”的vector与“Haus”的vector方向相同

简单来说,如果您使用向量大小=3训练两个模型。 “豪斯”有向量[0.5,0.2,0.9],但不能保证“豪斯”会有向量[0.5,0.2,0.9],甚至与之相近

为了解决这个问题,您可以首先将英语单词翻译成德语,然后使用该单词的向量在德语模型中查找类似的单词

TL:DR
你不能仅仅将向量从一种语言模型插入到另一种语言模型中,然后期望得到准确的结果。

大多数类似的(…)是否也会将分数返回给你?我正在描绘一个你编写的自定义函数,它为向量中的每个单词调用
最相似的
,将所有结果添加到同一个列表中,然后根据分数和返回进行排序。谢谢你。如果没有现成的方法可以做到这一点,我必须按如下方式实现:对于词汇表中的每个单词,从模型中获取对应的向量。计算输入向量和返回向量的余弦相似性。然后返回最上面的相似项。但是,我认为这样的方法可能存在;这似乎不是。嗨,阿明,你实施你的方法了吗?如果是这样的话,那么我想知道为什么用余弦相似性来代替欧几里得距离?嗨@MiNdFrEaK,这是我自己实现的。嗯,实际上这没什么大不了的,但当时我只是想知道它是否已经实现了,我可以在货架上使用它。不幸的是,在那之后很短的时间内,我就停止了这个话题的研究。我需要查看我的代码以找到我的实现。一旦我找到它,我会让你知道的。好吧,如果嵌入是单独训练的,并且在两个不同的空间中,你是对的。我当时想做的是联合训练双语单词嵌入,或者通过可训练的映射函数和一些词汇或平行语料库将两种语言的嵌入映射到一个共享空间。