2014-03-31 4 views
10

아래에 코드가 있으며 단어 목록에 정지 단어 목록을 적용하려고합니다. 그러나 결과에는 여전히 "a"및 "the"와 같은 단어가 표시되며이 과정에서 제거되었을 것으로 생각됩니다. 잘못된 아이디어는 훌륭합니다.NLTK 스톱 워드 목록

import nltk 
from nltk.corpus import stopwords 

word_list = open("xxx.y.txt", "r") 
filtered_words = [w for w in word_list if not w in stopwords.words('english')] 
print filtered_words 
+0

가능한 복제 (http://stackoverflow.com/questions/19130512/stopword-removal-with-nltk) –

답변

18

몇 가지주의 사항.

  • 목록에서 계속해서 회원 자격을 확인하려는 경우 목록 대신 세트를 사용합니다.

  • stopwords.words('english')소문자 중지 단어 목록을 반환합니다. 소스에 대문자가 들어있어 그 이유 때문에 일치하지 않을 가능성이 큽니다.

  • 파일을 제대로 읽지 못하는 경우 공백으로 분리 된 단어 목록이 아닌 파일 개체를 검사하게됩니다.

모두 함께 퍼팅 :

import nltk 
from nltk.corpus import stopwords 

word_list = open("xxx.y.txt", "r") 
stops = set(stopwords.words('english')) 

for line in word_list: 
    for w in line.split(): 
     if w.lower() not in stops: 
      print w 
[NLTK와 중지 단어 제거]의
+1

주 여전히 구두점을 필터링하지 않는다면, 예를 들어' '; "{] /?.,!'같은 것을 제거하고 싶을 것입니다. – Hooked

+0

똑똑하고 효과적입니다. 파일을 잘못 읽었을 것입니다. 감사합니다. . –

관련 문제