2014-09-28 4 views
3

제발, 제발 도와주세요. NLTK를 사용하여 분석하려는 텍스트 파일로 채워진 폴더가 있습니다. 어떻게 그것을 코퍼스로 가져 와서 NLTK 명령을 실행합니까? 나는 아래의 코드를 함께 넣어했지만 그것은 나에게 오류를주고 :NLTK 자료 가져 오기 및 사용

raise error, v # invalid expression 
sre_constants.error: nothing to repeat 

코드 :

import nltk 
import re 
from nltk.corpus.reader.plaintext import PlaintextCorpusReader 

corpus_root = '/Users/jt/Documents/Python/CRspeeches' 
speeches = PlaintextCorpusReader(corpus_root, '*.txt') 

print "Finished importing corpus" 

words = FreqDist() 

for sentence in speeches.sents(): 
    for word in sentence: 
     words.inc(word.lower()) 

print words["he"] 
print words.freq("he") 
+1

우리에게 많은 것을주지는 않을 것입니다. 간단히 말해 ** 어디에서 ** 오류가 있습니까? 처음에는 오류 추적을 모두 포함시킨 다음 단계별로 프로그램을 진행하십시오. 당신의 코퍼스는'CRspeeches' 디렉토리에'.txt' 파일로 구성되어 있습니까? 'speeches'를 초기화 한 후에'print (speeches.fileids()) '를 사용하여 파일 목록을 얻으십니까? 'speeches.sents()'가 반환해야하는 문장을 _print_ 할 수 있습니까? – alexis

답변

3

나는이 문제가 알려진 bug (? 어쩌면 기능이다)과 관련이있다 이해, 부분적으로 this answer에 설명되어 있습니다. 간단히 말해서, 빈 물건에 대한 특정 정규 표현식이 폭발합니다.

오류의 출처는 speeches =입니다. 다음과 같이 변경해야합니다.

speeches = PlaintextCorpusReader(corpus_root, r'.*\.txt') 

그러면 모든 것이 로딩되고 컴파일됩니다.

+0

감사합니다! 완벽한 솔루션. –

+0

코퍼스를 사용할 때마다 계속로드해야합니까? 아니면 이제 nltk 스크립트 상단에 가져 오기 연설을 쓸 수 있습니까? –

+0

음, @mixedmath를 발견했습니다! 하지만 버그가 아닙니다 :'*'로 시작하는 정규 표현식이 잘못되었습니다. (오류 메시지는 더 유익했을 것입니다.) – alexis