2013-08-25 3 views
0

나는 nltk로 일부 NLP를 배우기위한 실습 텍스트로 Tolkein의 Silmarillion을 사용하려고합니다.Silmarillion에서 가져온 텍스트에 NLTK를 사용할 수 없습니다.

텍스트 인코딩 문제가 발생하여 시작하는 데 문제가 있습니다.

NLTK 주위에 TextBlob 래퍼 (https://github.com/sloria/TextBlob)를 사용하기 때문에 훨씬 쉽습니다. TextBlog가에서 볼 수 있습니다 :

내가 구문 분석 할 수 없습니다 문장입니다 :

"But Húrin did not answer, and they sat beside the stone, and did not speak again". 

나는 그것이 문제의 원인 Hurin에 특수 문자 믿습니다.

내 코드 :이로

from text.blob import TextBlob 
b = TextBlob('But Húrin did not answer, and they sat beside the stone, and did not speak again') 
b.noun_phrases 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) 

난 그냥이 텍스트와 일부 속성을 추출을 사용하여 몇 가지 기본적인 처리를 수행 할 수 있으려면, 그냥 재미로하는 프로젝트입니다.

초기 인코딩이 무엇인지 모르면 어떻게하면이 텍스트를 ASCII로 변환 할 수 있습니까? UTF8에서 디코딩을 시도한 다음 ASCII로 다시 인코딩합니다.

>>> asc = unicode_text.decode('utf-8') 
>>> asc = unicode_text.encode('ascii') 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128) 

그래도 걱정하지 않아도됩니다. 어떤 제안이라도 고맙게 여기고 있습니다. 특수 문자를 잃어 버리면 문서 전체에서 일관되게 끝나면 괜찮습니다.

필자는 Python 2.6.8을 사용하여 필요한 모듈도 올바르게 설치했습니다.

+2

유니 코드 문자열을 사용해 보셨습니까? 현의 앞쪽에 'u'를 붙이고 어떻게되는지보십시오. – user2357112

+2

초기 인코딩이 무엇인지 모르는 경우 : 그림을 그려보십시오. 또한 유니 코드가 무엇인지에 관해서는 혼란 스럽다고 생각합니다. http://regebro.wordpress.com/2011/03/23/unconfusing-unicode-what-is-unicode/ '디코드. (' utf8 ')'아스키로 인코딩하면 나중에 이해가되지 않습니다. –

+0

또한 : 여전히 작동하지 않는다면 추적 코드를 사용하여 정확한 코드를 표시해보십시오. –

답변

2

먼저 최신 업데이트에서 유니 코드 수정이 있으므로 TextBlob를 최신 버전 (이 글을 쓰는 시점에서는 0.6.0)으로 업데이트하십시오.

from text.blob import TextBlob 
b = TextBlob(u'But Húrin did not answer, and they sat beside the stone, and did not speak again') 
noun_phrases = b.noun_phrases 
print noun_phrases 
# WordList([u'h\xfarin']) 
print noun_phrases[0] 
# húrin 

이 TextBlob 0.6.0 파이썬 2.7.5에 대한 확인하지만, 파이썬 2.6와 함께 작동한다 : 이것은 다음

$ pip install -U textblob 

수행 할 수 있습니다, 그래서 같이 리터럴 유니 코드를 사용 .8뿐만 아니라.