"For loop" 不遍历文件

"For loop" doesn't iterate through the files

在我下面的简单 for 循环中,我迭代了 3600 条文本,将它们标记化并将它们保存到列表中:

import glob
import nltk


list = []

for file in glob.glob('C:\Users\User\Desktop\fake\*.txt'):
text = open(file,'r',encoding='utf-8').read()
tokenize = nltk.word_tokenize(text)
list.append(tokenize)

但是,当我尝试使用另一个 for 循环打印出这些标记中最常见的 10 个单词时,如下所示,

for tokens in list:
freq = nltk.FreqDist(tokens)
most_common = freq.most_common(10)

我收到一条消息,指出它找到了以下 10 个最常用的词:

[('``', 25), ("''", 23), ('que', 18), ('.', 16), ('você', 14), ('ou', 14), ('o', 12), ('e', 11), ('de', 10), ('a', 10)]

这显然是错误的,因为 3600 条文本已被标记化。我在这里错过了什么?

您将文档标记收集到列表列表中,list (list.append(tokenize)),然后在 for tokens in list: 循环中将 most_common() 值分配给 most_common 变量因此仅获取最后一个文档的最常用术语。

我建议 .extend 词条列表将所有词条收集到一个 flat 单词列表中,然后通过传递获得前 10 个最常见的词条nltk.FreqDist() 方法的列表:

l = []
for text in texts:
    tokenize = nltk.word_tokenize(text)
    l.extend(tokenize)
freq = nltk.FreqDist(l)
most_common = freq.most_common(10)

请注意 list 是一个 Python 内置变量,不要那样命名变量。我在上面的代码中选择了l