我想在我的FreqDist中使用我的常用词汇。或者有freq>的单词第
我该怎么做?
查看doc后,我找不到threshold
或cut
之类的内容。此外,只能为每个单独的bin调用freq()函数。
当然我可以编写像
这样的特殊代码[(x,f) for x in FreqDist.samples if FreqDist.freq(x) > p]
但它看起来并不优雅。
答案 0 :(得分:0)
根据您提到的docs,FreqDist
类似dict的方法(keys()
,items()
等)返回样本和/或其频率排序降低频率顺序。因此,您可以使用下面的代码仅过滤掉频率足够高的样本:
above_p = []
for (x, f) in FreqDist.iteritems():
if not f > p:
break
above_p.append((x, f))
或者单行:
from itertools import takewhile
above_p = [(x, f) for (x, f) in takewhile(lambda x, f: f > p, FreqDist.iteritems())]
至于前k:
top_k = FreqDist.items()[:k]
或者:
from itertools import islice
top_k = list(islice(FreqDist.iteritems(), k))