我正在尝试计算两个词之间的语义相似度。我正在使用基于 Wordnet 的相似性度量,即 Resnik 度量 (RES)、Lin 度量 (LIN)、Jiang 和 Conrath 度量 (JNC) 以及 Banerjee 和 Pederson 度量 (BNP)。
为此,我使用 nltk 和 Wordnet 3.0。接下来,我想组合从不同度量中获得的相似度值。为此,我需要对相似度值进行归一化,因为某些度量给出的值介于 0 和 1 之间,而其他度量给出的值大于 1。
所以,我的问题是如何对从不同度量中获得的相似性值进行归一化。
额外的细节关于我实际想做的事情:我有一套词。我计算单词之间的成对相似度。并删除与集合中其他词不强相关的词。
最佳答案
如何标准化单个度量
让我们考虑一个任意的相似性度量 M
并取一个任意词 w
.
定义m = M(w,w)
.然后 m 取 M
的最大可能值.
让我们定义MN
作为标准化措施 M
.
对于任意两个词 w, u
你可以计算MN(w, u) = M(w, u) / m
.
很容易看出如果M
取非负值,然后 MN
在 [0, 1]
中取值.
如何归一化由多个度量组合而成的度量
为了计算您自己定义的度量 F
k 种不同措施的组合 m_1, m_2, ..., m_k
首先独立标准化每个m_i
使用上面的方法然后定义:
alpha_1, alpha_2, ..., alpha_k
这样alpha_i
表示第 i 个度量的权重。
所有 alpha 总和必须为 1,即:
alpha_1 + alpha_2 + ... + alpha_k = 1
然后计算您自己对 w, u
的度量你这样做:
F(w, u) = alpha_1 * m_1(w, u) + alpha_2 * m_2(w, u) + ... + alpha_k * m_k(w, u)
很明显F
在 [0,1] 中取值
关于python - 如何规范化来自 Wordnet 的相似性度量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969532/