我正在尝试计算两个单词之间的语义相似度。我正在使用基于Wordnet的相似性度量,即Resnik测量(RES),Lin测量(LIN),Jiang和Conrath测量(JNC)以及Banerjee和Pederson测量(BNP)。
为此,我使用的是nltk和Wordnet 3.0。接下来,我想结合从不同度量获得的相似度值。要做到这一点,我需要规范化相似度值,因为某些度量值介于0和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]