应用word2vec寻找所有相似度阈值以上的单词

7

命令model.most_similar(positive=['france'], topn=100)会返回与单词“France”最接近的前100个单词。但是,我想知道是否有一种方法可以输出相似度高于给定单词的相似度阈值的最相似单词。是否有以下方法?: model.most_similar(positive=['france'], threshold=0.9)

2个回答

3
不,你需要请求大量的词汇(或者全部,加上`topn=0`),然后自己应用截断。 理论上说,你所需的内容可以作为一个选项添加。但是,余弦相似度的绝对值意义不一定稳定,例如不同模型运行时的“90%相似”等。它们的分布可能会根据模型训练参数(例如向量`size`)而变化,并且通常只在与同一模型中其他成对值的排序比较中解释。 例如,“cold” 最相似的前100个单词在具有不同训练参数的模型中可能非常相似,但是#1到#100单词的绝对相似度值范围可能会有很大的差异。 因此,如果您选择一个绝对阈值,您可能会想要根据观察到的模型或其他模型训练元参数来调整截止点。

3

好的,假设你可以。请尝试以下代码:

def find_most_similar(model, wrd, threshold=0.75):
    res = [item for item in model.wv.most_similar(wrd, topn=len(model.wv.vocab)) if item[1] > threshold]
    return res

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接