【发布时间】:2012-11-09 10:36:15
【问题描述】:
我想知道如何计算文本分类的逐点互信息。更准确地说,我想对推文进行分类。我有一个推文数据集(带注释),并且每个属于该类别的单词类别都有一个字典。鉴于此信息,如何计算每条推文的每个类别的 PMI,以将推文分类为其中一个类别。
【问题讨论】:
标签: statistics machine-learning nlp
我想知道如何计算文本分类的逐点互信息。更准确地说,我想对推文进行分类。我有一个推文数据集(带注释),并且每个属于该类别的单词类别都有一个字典。鉴于此信息,如何计算每条推文的每个类别的 PMI,以将推文分类为其中一个类别。
【问题讨论】:
标签: statistics machine-learning nlp
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)
当x 和y 完全相关时,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 的文档数与文档总数之间的比率。
-log(P(x, y))。
P(x, y) == 0 表示在 y 类的文档中从未观察到单词 x。你应该使用平滑来解决这个问题。平滑本身就是一门艺术,但您可以做的最简单的事情是为所有概率添加一个小的正数。查找additive smoothing