Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 返回Gensim Word2vec中单词的排名_Python_Gensim_Word2vec - Fatal编程技术网

Python 返回Gensim Word2vec中单词的排名

Python 返回Gensim Word2vec中单词的排名,python,gensim,word2vec,Python,Gensim,Word2vec,我现在正在使用Gensim.word2vec进行一个项目,我是这个领域的新手 事实上我已经有一个模特了。有没有办法让我得到一个词与另一个词的相似度等级。例如,单词“girl”最相似的前两个单词是“lady”,然后是“woman”。如果我输入'lady'可以返回1,如果输入'woman'可以返回2,我可以使用哪些函数 谢谢 这方面没有gensim API,但您可以使用基本Python代码查找单词在较长序列中出现的位置(如果有)——例如gensim的most_simular()给出的结果列表 例如:

我现在正在使用Gensim.word2vec进行一个项目,我是这个领域的新手

事实上我已经有一个模特了。有没有办法让我得到一个词与另一个词的相似度等级。例如,单词“girl”最相似的前两个单词是“lady”,然后是“woman”。如果我输入'lady'可以返回1,如果输入'woman'可以返回2,我可以使用哪些函数


谢谢

这方面没有gensim API,但您可以使用基本Python代码查找单词在较长序列中出现的位置(如果有)——例如gensim的
most_simular()
给出的结果列表

例如:

origin_word = 'apple'
query_word = 'orange'
all_sims = w2v_model.most_similar(origin_word, topn=0)  # topn=0 gets all results
query_index = -1
for i, sim_tuple in enumerate(all_sims):
    if sim_tuple[0] == query_word:
        query_index = i
        break 
在此代码末尾,
query\u index
将是所有相似项列表中
'orange'
的(基于0的)位置,或者如果找不到
-1

注意,最昂贵的步骤是创建所有相似单词的
all_sims
有序列表;如果要根据一个源词检查多个查询词的排名,您肯定希望保留
所有sims
,而不是每次都重新计算它

事实上,如果你确定你要做很多这样的查找,可能是从最深的单词开始,你可以做一次简单的操作,将结果变成一个dict:

word_to_sims_index = {}
for i, sim_tuple in enumerate(all_sims):
    word_to_sims_index[i] = sim_tuple[0]
在那之后,找到一个单词的索引将是一个(快速恒定时间)的dict查找

query_index = word_to_sims_index[query_word]
…如果查询词不在dict中,这将抛出一个keyrerror(你可以使用
word\u to\u sims\u index.get(query\u word,-1)
,如果你想要一个默认的
-1
响应,当该键不存在时。)

我认为这是一个,正如他们在另一个答案中所说的,你可以使用
model.rank('girl',lady')==1