“)) for word_tokenize(input_file)中的行: 如果行中的stop_words: line = line +“NOTRELATED \ n” output_file.write(线)
样本输入(文本文件):该成本的损伤至
农业 </跨度> 和基础设施在区满目疮痍通过台风兰多具有飙升至更多比P6.3十亿。
输出文件):该成本NOTRELATED损伤到了NOTRELATED
农业 </跨度> 和NOTRELATED基础设施在NOTRELATED区。。。
您的输出行需要位于实际读取该行的循环中。试试这个...
stop_words = set(stopwords.words('english')) for line in word_tokenize(input_file): if stop_words in line: line = line + " NOTRELATED\n" output_file.write(line)
有几个问题。首先,您应该检查输入文件中的单词是否在停用词集中,而不是相反。所以
if stop_words in line:
应该:
if line in stop_words:
其余的看起来大多像是缩进问题。而不是写作 line 之后的文件 for 循环完成,在循环期间写入文件。和 word 将是一个更好的选择 line :
line
for
word
stop_words = set(stopwords.words('english')) for word in word_tokenize(input_file): print(word, 'NOTRELATED' if word in stop_words else '', file=output_file)
问题是 line 每次循环开始时都会被覆盖尝试下面的代码,看看这是否有帮助。
stop_words = set(stopwords.words('english')) file_content = set() for line in word_tokenize(input_file): if line in stop_words: line += " NOTRELATED" line += '\n' file_content.add(line) output_file.write(''.join(file_content))