我的问题:为什么我必须两次评估代码才能实际工作?我想过滤20分以上的分数。我不知道为什么我必须对它进行两次评估才能实际工作。有一个滞后,cp似乎没有意识到我已经改变了使用哪个文档(doclist [3]与doclist [4])。如果我对doclist [4]进行了这样的更改,代码最初会根据doclist输出结果[3]。我必须再次评估它,让我得到doclist [4]
的结果fw_2 = filterwords(doclist[3])
scored = finder.score_ngrams(bgm.likelihood_ratio)
finder = BigramCollocationFinder.from_words(fw_2)
# only bigrams that appear 3+ times
finder.apply_freq_filter(2)
fw_2 = [i for i in scored[0:20] if i[1] > 15]
示例输出。
[(('social', 'entrepreneurship'), 127.45178656939063),
(('business', 'school'), 99.39518918596669),
(('skoll', 'foundation'), 89.99535318543879),
(('skoll', 'centre'), 79.35035637864716),
(('said', 'business'), 75.04493764654694),
(('silicon', 'valley'), 67.94234171558752),
(('world', 'forum'), 54.48210837540238),
(('issues', 'schools'), 48.55122043259024),
答案 0 :(得分:2)
scored
,将过滤器应用于finder
:
finder = BigramCollocationFinder.from_words(fw_2)
# only bigrams that appear 3+ times
finder.apply_freq_filter(2)
scored = finder.score_ngrams(bgm.likelihood_ratio)
fw_2 = [i for i in scored[0:20] if i[1] > 15]
您必须运行两次代码,因为定义finder
后对scored
所做的更改不会影响scored
。