Python的collections.Counter和nltk.probability.FreqDist之间的区别
Python的collections.Counter和nltk.probability.FreqDist之间的区别
我想计算文本语料库中单词的词频。我一直使用NLTK的word_tokenize,然后使用probability.FreqDist来完成这个任务。word_tokenize返回一个列表,然后通过FreqDist将其转换为频率分布。然而,我最近发现了collections中的Counter函数(collections.Counter),它似乎做的是完全相同的事情。FreqDist和Counter都有一个most_common(n)函数,返回前n个最常见的单词。有人知道这两者之间有什么区别吗?哪个更快?有没有某些情况下一个能工作而另一个不能?
Python的collections.Counter和nltk.probability.FreqDist之间的区别是什么?这个问题的出现是因为在文档中提到了nltk.probability.FreqDist是collections.Counter的一个子类。在速度上,创建Counter和FreqDist应该是相同的。主要区别是FreqDist提供了一些用于统计/概率自然语言处理(NLP)的函数,例如找到hapaxes。当使用FreqDist.most_common()时,实际上使用的是来自Counter的父函数,因此检索排序后的most_common列表的速度对于两种类型来说是相同的。个人而言,当我只想获取计数时,我使用collections.Counter。但是当我需要进行一些统计操作时,我要么使用nltk.FreqDist,要么将Counter转储到pandas.DataFrame。