如何使用NLTK的BigramAssocMeasures.ch_sq

2 投票
1 回答
3212 浏览
提问于 2025-04-17 19:02

我有一堆单词,我想通过看它们一起出现的情况来计算两个单词之间的相关性。我在一篇论文中发现,可以用一种叫做皮尔逊卡方检验的方法来计算这个相关性。另外,我还发现了一个叫nltk.BigramAssocMeasures.ch_sq()的工具,可以用来计算卡方值。

我可以用这个工具来满足我的需求吗?我该如何使用nltk来找到卡方值呢?

1 个回答

5

可以看看这个来自Streamhacker的博客,里面有很好的解释和代码示例。

在信息增益的评估中,卡方检验是一个非常好的指标。NLTK(自然语言工具包)在它的BigramAssocMeasures类中包含了这个功能。使用它之前,我们需要先计算每个词的一些频率:包括这个词的总频率和它在每个类别中的频率。我们可以用FreqDist来计算词的总频率,而用ConditionalFreqDist来计算在不同类别下的频率。一旦得到了这些数字,我们就可以用BigramAssocMeasures.chi_sq函数来给词打分,然后根据分数对词进行排序,选出前10000个。接着,我们把这些词放进一个集合中,并在特征选择函数中使用集合成员测试,只选择那些出现在集合中的词。这样,每个文件就可以根据这些高信息量的词来进行分类。

撰写回答