2013-05-17 42 views
1

我想读取一个文本文件(foo1.txt),删除所有nltk定义的停用词并在另一个文件(foo2.txt)中写入。代码如下: 需要进口:从nltk.corpus进口停用词删除NLTK中的停用词

def stop_words_removal(): 
    with open("foo1.txt") as f: 
      reading_file_line = f.readlines() #entire content, return list 
      #print reading_file_line #list 
      reading_file_info = [item.rstrip('\n') for item in reading_file_line] 
      #print reading_file_info #List and strip \n 
      #print ' '.join(reading_file_info) 
      '''-----------------------------------------''' 
      #Filtering & converting to lower letter 
      for i in reading_file_info: 
       words_filtered = [e.lower() for e in i.split() if len(e) >= 4]     
       print words_filtered 

      '''-----------------------------------------''' 
      '''removing the strop words from the file''' 
      word_list = words_filtered[:] 
      #print word_list 
      for word in words_filtered: 
         if word in nltk.corpus.stopwords.words('english'): 
          print word 
          print word_list.remove(word) 

      '''-----------------------------------------''' 
      '''write the output in a file''' 
      z = ' '.join(words_filtered) 
      out_file = open("foo2.txt", "w") 
      out_file.write(z) 
      out_file.close() 

的问题是代码“从文件中删除滑索的话”的第二部分不起作用。任何建议将不胜感激。谢谢。

Example Input File: 
'I a Love this car there', 'positive', 
'This a view is amazing there', 'positive', 
'He is my best friend there', 'negative' 

Example Output: 
['love', "car',", "'positive',"] 
['view', "amazing',", "'positive',"] 
['best', "friend',", "'negative'"] 

我想,因为它在这个link建议,但他们没有工作

+0

你确定这是你想要的输出吗?你需要标点符号吗? – elyase

+3

@elyase感谢您的回复。其实我不需要方括号,但我需要明确分隔每一行。您发布的以下代码仅适用于文件的最后一行。我想删除文本每一行中的停用词。 – J4cK

+0

好的我编辑了我的答案 – elyase

回答

2

这是我会做什么,你的函数中:

with open('input.txt','r') as inFile, open('output.txt','w') as outFile: 
    for line in inFile: 
     print(''.join([word for word in line.lower().translate(None, string.punctuation).split() 
       if len(word) >=4 and word not in stopwords.words('english')]), file=outFile) 

不要忘了补充:

from __future__ import print_function     

如果你在Python 2.x.