维基百科两个词之间的主题相似性语义PMI

机器算法验证 文本挖掘 相似之处 自然语言 互信息 主题模型
2022-04-21 04:30:58

我正在尝试使用维基百科作为数据源来计算逐点互信息(PMI)。给定两个词,PMI 定义了两个词之间的关系。公式如下。

pmi(word1,word2) = log [probability(number of times both words appears in a document together)/probability(word1)*probability(word2)].

因此,要计算 PMI,我需要 word1 和 word2 的联合概率和单个概率。我查看了两个词之间的维基百科矿工相关性分数。他们正在实施 Milne 和 Witten 算法。然而,对于定义主题相似性,PMI 是一个更好的分数。

有谁知道如何使用 dbpedia 或 wikipedia miner 或任何其他软件计算两个单词的 PMI 分数。

拉姆基

1个回答

您可以使用 Wikipedia 计算 PMI,如下所示:

1) 使用 Lucene 索引 Wikipedia 转储

2)使用Lucene API,很容易得到:

  • 包含 word1 的文档数 (N1) 和包含 word2 的文档数 (N2)。因此,Prob(word1) = (N1 + 1) / N 和 Prob(word2) = (N2 + 1) / N,其中 N 是 Wikipedia 中的文档总数,公式中的“1”用于避免零计数。

  • 两个词一起出现在文档中的次数 (N3)。您还可以设置强约束,以便这两个单词出现在 10 个单词(或 20 个单词)的窗口上下文中。同样,Prob(word1, word2) = (N3 + 1) / N。

我们有:PMI(word1, word2) = Log(Prob(word1, word2) / (Prob(word1) * Prob(word2)))

此外,我建议您查看最近的 WSDM 2015 论文“探索主题连贯性度量的空间”及其相关的工具包 Palmetto ( https://github.com/AKSW/Palmetto ),它实现了主题连贯性计算。Palmetto 包含 PMI 和其他主题连贯性分数的实现。