2016-07-15 3 views
3

python2.7, nltk 3.2.1 및 python-crfsuite 0.8.4를 사용하고 있습니다. 나는이 페이지를 따르고있다 : nltk.tag.crf 모듈을위한 http://www.nltk.org/api/nltk.tag.html?highlight=stanford#nltk.tag.stanford.NERTagger. 난 그냥이TypeError : NLTK에서 str이 아닌 유니 코드 여야합니다

from nltk.tag import CRFTagger 
ct = CRFTagger() 
train_data = [[('dfd','dfd')]] 
ct.train(train_data,"abc") 

을 실행에

파이썬 2에서, 나는이 너무

f = open("abc","wb") 
ct.train(train_data,f) 

그러나 나는 다음과 같은 오류를 얻고 시도

File "C:\Python27\lib\site-packages\nltk\tag\crf.py", line 129, in <genexpr> 
    if all (unicodedata.category(x) in punc_cat for x in token): 
TypeError: must be unicode, not str 
+0

"abc"에 데이터를 표시 할 수 있습니까? 오류에 따라 귀하의 문제가 거짓말 ... –

답변

9

를 시작하려면, 일반 따옴표 '...' 또는 "..."은 바이트 문자열을 만듭니다. 유니 코드 문자열을 얻으려면 u'dfd'과 같이 문자열 앞에 u이라는 접두사를 사용하십시오.

파일을 읽으려면 인코딩을 지정해야합니다. 옵션은 Backporting Python 3 open(encoding="utf-8") to Python 2을 참조하십시오. 가장 직접적으로 open()io.open()으로 대체하십시오.

기존 문자열을 변환하려면 unicode() 메서드를 사용하십시오. 일반적으로 decode()을 사용하고 인코딩을 제공하려고합니다.

자세한 내용은 Ned Batchelder의 "Pragmatic Unicode"슬라이드를 반드시 읽으십시오. http://nedbatchelder.com/text/unipain.html

+0

집합 내부에 u '를 추가 한 후 잘 작동 – Backtrack

관련 문제