2016-07-15 9 views
3

私はpython2.7、nltk 3.2.1とpython-crfsuite 0.8.4を使用しています。私はこのページに従っています:http://www.nltk.org/api/nltk.tag.html?highlight=stanford#nltk.tag.stanford.NERTagger(nltk.tag.crfモジュール用)。私はちょうどこのTypeError:NLTKではstrでなくUnicodeでなければなりません

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

を実行して

は、Python 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

を開始するには、通常の引用符'...'または"..."バイト文字列を作成します。 Unicode文字列を取得するには、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