依存構造解析済みコーパス

入門自然言語処理、12章を読み進め中。p.475にて。文字コード関係のことで少し詰まったこと。

>>> print '\n\n'.join( '%s' % tree for tree in knbc.parsed_sents()[0:2] )

で出力するものが文字化けしてしまう。nltk.tree.Treeクラスとやらは%sに文字列として渡されるとき、shift-jis以外のエンコードで8ビット文字列となっていると見た。(windows環境なのでコマンドプロンプトではshift-jisで日本語を出力しないといけない)

すこし調べるとTreeクラスのインスタンス→文字列と変換するとエンコードが'utf-8'になっていた。以下のようにunicode文字列に逐一デコードするように変更

print '\n\n'.join(str(tree).decode('utf-8') for tree in knbc.parsed_sents()[0:5])

よし、文字化け修正完了。素人考えでutf-8の方がやっぱりpythonと相性が良いのかな、と思う。mac欲しい。shift-jisって名前はなんか垢抜けていないイメージ。