如何从Wordnet中归一化相似度度量

6
我正在尝试计算两个单词之间的语义相似度。我正在使用基于Wordnet的相似度度量,即Resnik度量(RES),Lin度量(LIN),Jiang和Conrath度量(JNC)以及Banerjee和Pederson度量(BNP)。
为了做到这一点,我正在使用nltk和Wordnet 3.0。接下来,我想将从不同度量得到的相似性值组合起来。为此,我需要规范化相似性值,因为某些度量给出介于0和1之间的值,而其他度量给出大于1的值。
那么,我的问题是如何规范化从不同度量获得的相似性值。
额外的细节:我有一组词。我计算词之间的成对相似度,并删除与集合中其他词不强相关的词。
1个回答

11

如何对单个度量进行归一化

假设有一个任意的相似度量 M 和一个任意的单词 w

定义 m = M(w,w)。然后,m 取得 M 的最大可能值。

让我们将 MN 定义为标准化度量 M

对于任意两个单词 w, u,可以计算出 MN(w, u) = M(w, u) / m

很容易看出,如果 M 取非负值,则 MN 取值在 [0, 1] 范围内。

如何对多个度量组合进行归一化

为了计算由 k 个不同度量 m_1, m_2, ..., m_k 组合而成的自定义度量 F,首先使用上述方法独立地对每个 m_i 进行归一化,然后定义:

alpha_1, alpha_2, ..., alpha_k

其中alpha_i表示第i个度量的权重。

所有的权重之和必须为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]


似乎您需要至少15点声望才能这样做。我只有5点:)。不过我已经“接受”了答案。 - nish
2
@pkacprzak 我使用了nltk和它的相似度方法,但在一些方法中,比如jcn_similarity,它返回inf(在nltk的情况下是1e300),而对于一些方法,不同方法的M(w,w)甚至不相等!例如,如果w是'escape.n.01',则res_similarity(w,w)为8.4,如果w是'car.n.01',则res_similarity(w,w)为7.5,对于某些方法,如jcn_sim结果为inf,我该怎么办?问题出在哪里? - maanijou
@MiladM 精确值可能取决于实际测量。我建议查看这些度量的文档。 - pkacprzak
@pkacprzak 是的,经过一些研究,我发现某些方法中的最大值取决于语料库中单词w的概率P(w)(例如brown corpus)。因此,在某些情况下,M(w,w)不是最大值。但是,有一些度量方法(如lch_similarity),其中M(w,w)是最大值,或者在某些情况下最大值为1(lin和wup度量)。因此,在其他情况下,我们应该在语料库中找到所有可能的值。也许你可以更新你的答案 ;) - maanijou
@MiladM 我认为对于给定的 w,无论其确切值如何,集合 {M(w, s) | s 是语言中的单词} 中的 M(w, w) 仍然是最大的。 - pkacprzak
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接