我写了一个简单的函数。
def common_long_words(text):
sorted(w for w in set(text) if len(w) > 7 and (FreqDist(text))[w] > 7)
这个卡住了。
同样,[w for w in set(text5) if len(w) > 7 and FreqDist(text5)[w] > 7
失败,它只是卡住了。
然而,这是可行的:
fdist5 = FreqDist(text5)
[w for w in set(text5) if len(w) > 7 and fdist5[w] > 7
它在Python中不是这样工作的吗?为什么会这样?还有,为什么会卡住,如果这是错误的,它应该作为错误,语法或运行时出来。
这工作,完美和快速:
>>> def common_long_words(text):
... fdist = FreqDist(text)
... print(sorted(w for w in set(text) if len(w) > 7 and fdist[w] > 7))
...
>>> for t in all_texts:
... common_long_words(t)
1条答案
按热度按时间ftf50wuq1#
为了停止循环的条件,你已经调用了两个方法,它们的大小是未知的,正如你在评论中提到的,你应该得到答案FreqDist(text),然后把它应用到你的条件上(这里,考虑一下你给出的FreqDist(text)的长度)这个例子是在nltk(text5)的第五本书上实现的。
结果是: