python - 如何规范化来自 Wordnet 的相似性度量

标签 python nlp nltk similarity wordnet

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

如何归一化由多个度量组合而成的度量

为了计算您自己定义的度量 F k 种不同措施的组合 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/

相关文章:

java - 使用多个模型进行实体提取 - OpenNLP

machine-learning - 如何改进我的文本主题分类器?

c++ - 将 c++ 异常传播到 cython - python 异常

python - 如何不等待异步循环?

nlp - CPU 速度和内存的限制是否会阻碍我们创建人工智能系统?

python - NLTK 荷兰语 alpino 至 英语

Python lxml xpath XPathEvalError : Invalid expression -- why?

python - Django sql 检查

python - 调用 process.extract 时出现 TypeError : ('expected string or bytes-like object' , 'occurred at index 0' )

python - 检查两个词是否相互关联