"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
。
在我下面的简单 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
。