2013-01-23 2 views
1

모든 내용 단어를 빈도 차순으로 제공하는 스크립트를 작성해야합니다. 가장 자주 나오는 10 개의 단어가 필요합니다. 따라서 가장 자주 나오는 10 개의 단어 목록을 작성해야 할뿐만 아니라 모든 내용 단어 (및 또는 구두점 ...)를 필터링해야합니다. . 내가 지금까지 가지고하는 것은이 나에게 주파수의 순서를 분야별로 모든 단어의 아주 깔끔한 목록을 제공하는 다음Fdist 및 상위 10 개 함수 단어

fileids=corpus.fileids() 
text=corpus.words(fileids) 
wlist=[] 
ftable=nltk.FreqDist (text) 
wlist.append(ftable.keys()) 

이지만, 어떻게 밖으로 함수 단어를 필터링 할 수 있습니까?

감사합니다.

답변

1

단어 집합 (불용어)을 걸러 내고 싶습니다. 복용 core idea from this SO answer : 다음 줄을 추가 그냥

fileids=corpus.fileids() 
text=corpus.words(fileids) 

후 : 중지 단어의 목록을 작성하고 텍스트

에서 그들을 필터링 당신은 당신의 코드에 라인의 몇 가지를 소개합니다

#get a list of the stopwords 
stp = nltk.corpus.stopwords.words('english') 

#from your text of words, keep only the ones NOT in stp 
filtered_text = [w for w in text if not w in stp] 

지금과 같이 계속 당신 것

,

희망이 도움이됩니다.

+0

왜 NLTK에 스톱 어블리스트가 내장되어 있는지 몰랐습니다. – Shifu

+1

예, NLTK는 환상적인 리소스이며 항상 새로운 보물을 발견하고 있습니다. –

관련 문제