4

我正在使用 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

4

1 回答 1

5

我认为通过“更新”,您或多或少地回答了您自己的问题。

一个是距离,另一个是相似性,这是两个计算之间的唯一区别。作为笔记本,您在相关部分链接笔记:

大规模杀伤性武器是距离的量度。WmdSimilarity 中的相似性只是负距离。注意不要混淆距离和相似性。两个相似的文档会有很高的相似度得分和很小的距离;两个非常不同的文档将具有较低的相似度得分和较大的距离。

正如您摘录的代码所示,那里使用的相似性度量并不完全是“负”距离,而是按比例缩放,因此所有相似性值都从 0.0(不包括)到 1.0(包括)。(也就是说,零距离变成 1.0 的相似度,但越来越大的距离变得越来越接近 0.0。)

于 2017-08-07T16:59:10.527 回答