如何从Wordnet中规范化相似性度量

时间:2013-07-31 11:48:17

标签: python nlp nltk similarity wordnet

我正在尝试计算两个单词之间的语义相似度。我正在使用基于Wordnet的相似性度量,即Resnik测量(RES),Lin测量(LIN),Jiang和Conrath测量(JNC)以及Banerjee和Pederson测量(BNP)。

为此,我使用的是nltk和Wordnet 3.0。接下来,我想结合从不同度量获得的相似度值。要做到这一点,我需要规范化相似度值,因为某些度量值介于0和1之间,而其他值则给出大于1的值。

所以,我的问题是如何规范化从不同测量中获得的相似度值。

关于我实际上要做的事情的

额外细节:我有一套单词。我计算单词之间的成对相似性。并删除与集合中其他单词没有密切关联的单词。

1 个答案:

答案 0 :(得分:9)

如何规范化单一措施

让我们考虑单个任意相似性度量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个度量的权重。

所有alphas必须总和为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]

中的值