我正在尝试计算两个单词之间的语义相似度。我正在使用基于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]中的值。

如何将多种量度结合起来的量度归一化

为了计算由k个不同度量组成的自己定义的度量Fm_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/

10-13 03:42