0

我在某些句子中使用以下方法找到了二元组的频率:

import nltk 
from nltk import ngrams
mydata = “xxxxx"
mylist = mydata.split()
mybigrams =list(ngrams(mylist, 2))
fd = nltk.FreqDist(mybigrams)
print(fd.most_common())

在打印出具有最常见频率的二元组时,一个出现了 7 次,而所有其他 95 个二元组只出现了 1 次。然而,当将二元组与我的句子进行比较时,我看不到所有频率为 1 的二元组被打印出来的逻辑顺序。有谁知道 .most_common() 打印二元组的方式是否有任何逻辑,或者它是随机生成的

提前致谢

4

1 回答 1

3

简短的回答,基于collections.Counter.most_common的文档:

具有相同计数的元素是任意排序的:

在当前版本的 NLTK 中,nltk.FreqDist基于nltk.compat.Counter. 在 Python 2.7 和 3.x 上,collections.Counter将从标准库中导入。在 Python 2.6 上,NLTK 提供了自己的实现。

详情看源码:
https ://github.com/nltk/nltk/blob/develop/nltk/compat.py

总之,在不检查所有可能的版本配置的情况下,您不能期望对频率相同的单词进行排序。

于 2016-05-15T16:45:01.107 回答