wmd(字移动距离)和基于wmd的相似性有什么区别?

时间:2017-08-04 08:59:17

标签: nlp nltk gensim word2vec word-embedding

我正在使用WMD计算句子之间的相似度。例如:

distance = model.wmdistance(sentence_obama, sentence_president)

参考:https://markroxor.github.io/gensim/static/notebooks/WMD_tutorial.html

然而,还有基于WMD的相似性方法(WmdSimilarity).

参考: https://markroxor.github.io/gensim/static/notebooks/WMD_tutorial.html

除了明显的一个是距离和另一个相似性之外,两者之间有什么区别?

更新:两者完全相同,只是表达方式不同。

n_queries = len(query)
result = []
for qidx in range(n_queries):
    # Compute similarity for each query.
    qresult = [self.w2v_model.wmdistance(document, query[qidx]) for document in self.corpus]
    qresult = numpy.array(qresult)
    qresult = 1./(1.+qresult)  # Similarity is the negative of the distance.

    # Append single query result to list of all results.
    result.append(qresult)

https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/similarities/docsim.py

1 个答案:

答案 0 :(得分:3)

我认为更新'你或多或少地回答了你自己的问题。

这是一个距离,另一个是相似性,是两个计算之间的唯一区别。作为笔记本,您可以在relevant section

中链接备注
  

大规模杀伤性武器是距离的衡量标准。 WmdSimilarity的相似之处仅仅是负距离。小心不要混淆距离和相似之处。两个相似的文件将具有高相似性得分和小距离;两个截然不同的文件将具有较低的相似性得分和较大的距离。

正如您摘录的代码所显示的那样,使用的相似性度量并不完全是“否定”。距离,但缩放,所以所有相似度值从0.0(不包括)到1.0(包括)。 (也就是说,零距离变为1.0相似度,但是越来越大的距离变得越来越接近0.0。)