【问题标题】:Pointwise mutual information on text文本的逐点互信息
【发布时间】:2012-11-09 10:36:15
【问题描述】:

我想知道如何计算文本分类的逐点互信息。更准确地说,我想对推文进行分类。我有一个推文数据集(带注释),并且每个属于该类别的单词类别都有一个字典。鉴于此信息,如何计算每条推文的每个类别的 PMI,以将推文分类为其中一个类别。

【问题讨论】:

    标签: statistics machine-learning nlp


    【解决方案1】:

    PMI 是衡量特征(在您的情况下为单词)与类别(类别)之间的关联,而不是文档(推文)与类别之间的关联。公式可在Wikipedia

                      P(x, y)
    pmi(x ,y) = log ------------ 
                      P(x)P(y)
    

    在该公式中,X 是模拟单词出现的随机变量,Y 模拟某个类的出现。对于给定的单词x 和给定的类y,您可以使用 PMI 来确定一个特征是否具有信息性,并且您可以在此基础上进行特征选择。拥有更少的特征通常可以提高分类算法的性能并大大加快它的速度。然而,分类步骤是分开的——PMI 仅帮助您选择更好的特征来输入您的学习算法。


    编辑: 我在原帖中没有提到的一件事是 PMI 对词频很敏感。我们把公式改写为

                      P(x, y)             P(x|y)
    pmi(x ,y) = log ------------ = log ------------ 
                      P(x)P(y)             P(x)
    

    xy 完全相关时,P(x|y) = P(y|x) = 1,所以pmi(x,y) = 1/P(x)。频率较低的x-es(单词)的 PMI 分数将高于频率较高的x-es,即使两者都与y 完全相关。

    【讨论】:

    • P(x) 是单词x(小写)出现的概率,即包含该单词的文档数与文档总数之比。 P(y) 是类(类别)y 的概率,以类似的方式计算。 P(x,y) 如果 both 标签 y 并包含单词 x 的文档数与文档总数之间的比率。
    • 您真的需要通过除以文档数将计数归一化为概率吗?我知道你得到一个不同的 pmi() 数字,但是不同对 (X,Y) 之间的相对 pmi() 保持不变,并且 pmi 的实际值无论如何都没有任何意义,对吧?如果比较不同文档集(具有不同文档数)的 pmi,我只能看到规范化有用
    • Gerlof Bouma 写了一篇题为“Normalized (Pointwise) Mutual Information in Collocation Extraction”的论文,我相信它解决了对词频的敏感性问题。基本上只需将 pmi 除以-log(P(x, y))
    • @mbatchkarov 感谢您的详细回答。我有一个小的后续问题。如果 P(x,y) 等于 0 怎么办? Log(0) 未定义,我该怎么办?它告诉我什么?它是否告诉我 x 总是与 y' 相关联,因此非常重要还是应该忽略它?
    • P(x, y) == 0 表示在 y 类的文档中从未观察到单词 x。你应该使用平滑来解决这个问题。平滑本身就是一门艺术,但您可以做的最简单的事情是为所有概率添加一个小的正数。查找additive smoothing
    猜你喜欢
    • 1970-01-01
    • 2014-04-02
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多