Loops &引用;For loop";不';t遍历文件
在下面的简单for循环中,我迭代了3600个文本,对它们进行标记并将它们保存到列表中:Loops &引用;For loop";不';t遍历文件,loops,for-loop,nltk,tokenize,Loops,For Loop,Nltk,Tokenize,在下面的简单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)
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)
),然后在一个循环中为列表中的标记:
分配most_common()
我建议。扩展
令牌列表,将所有令牌收集到一个简单的单词列表中,然后通过将列表传递到nltk.FreqDist()
方法获得前10个最常见的令牌:
l=[]
对于文本中的文本:
tokenize=nltk.word\u tokenize(文本)
l、 扩展(标记化)
频率=nltk.FreqDist(l)
最常见=频率最常见(10)
请注意,list
是Python内置的,不要这样命名变量。我在上面的代码中选择了l
。Wiktor,你已经解决了我的许多问题!!非常感谢!关于变量的名称,感谢您的提示,我肯定会使用Python内置的Abrevisions!