我正在尝试计算两个单词之间的语义相似度。我正在使用基于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个不同度量组成的自己定义的度量F
,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/