我需要:
1)从一个单独的 .txt 文件中清除停用词列表。
2)然后计算出前 25 个最常见的单词。
这是我为第一部分想到的解决方案:
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import re
from collections import Counter
f=open("text_to_be_cleaned.txt")
txt=f.read()
with open("stopwords.txt") as f:
stopwords = f.readlines()
stopwords = [x.strip() for x in stopwords]
querywords = txt.split()
resultwords = [word for word in querywords if word.lower() not in stopwords]
cleantxt = ' '.join(resultwords)
第二部分,我正在使用以下代码:
words = re.findall(r'\w+', cleantxt)
lower_words = [word.lower() for word in words]
word_counts = Counter(lower_words).most_common(25)
top25 = word_counts[:25]
print top25
需要清理的源文件如下所示:
(b)
在第二段第一句话中,在“并向高级代表”一词后插入;在第二句话中,将“它将进行一次年度辩论”替换为“每年它将进行两次辩论”,并在末尾插入“包括共同的安全和防御政策”。
停用词列表如下所示: this thises they thee the then thence thenest thener them
当我运行所有内容时,输出结果仍包含停用词列表中的单词:
[('article', 911), ('european', 586), ('the', 586), ('council', 569), ('union', 530), ('member', 377), ('states', 282), ('parliament', 244), ('commission', 230), ('accordance', 217), ('treaty', 187), ('in', 174), ('procedure', 161), ('policy', 137), ('cooperation', 136), ('legislative', 136), ('acting', 130), ('act', 125), ('amended', 125), ('state', 123), ('provisions', 115), ('security', 113), ('measures', 111), ('adopt', 109), ('common', 108)]
正如您可能已经注意到的那样,我刚刚开始学习Python,因此非常感谢易于理解的解释! :)
可以在此处找到使用的文件:
编辑:添加了源文件,停用词文件和输出结果的示例。提供了源文件。
[x.strip() ...
这个推导式。它是多余的。 - sshashank124