2

日本語テキストの構文解析を行う MeCab というプログラムを使用しようとしています。私が抱えている問題は、バイト文字列を返し、それを印刷しようとすると、ほとんどすべての文字に疑問符が表示されることです。ただし、使用しようとすると.decode、エラーがスローされます。これが私のコードです:

#!/usr/bin/python
# -*- coding:utf-8 -*-

import MeCab
tagger = MeCab.Tagger("-Owakati")
text = 'MeCabで遊んでみよう!'

print text
result = tagger.parse(text)
print result

result = unicode(result, 'utf-8')
print result

これは私の出力です:

MeCabで遊んでみよう!
MeCab �� �� ��んで�� �� ��う! 

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    result = unicode(result, 'utf-8')
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 6-7: invalid continuation byte

------------------
(program exited with code: 1)
Press return to continue

また、私の端末は日本語の文字を正しく表示できます。たとえば、print '日本語'完全に正常に動作します。

何か案は?

4

2 に答える 2

1

MeCab はデフォルトで UTF8 を返しません。以下は、次のリンクからの引用です (Google 翻訳経由)。

http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#charset

特に指定のない限り、euc が使用されます。utf8 や shift-jis を使いたい場合は、configure options 辞書で文字セットを変更し、辞書を再構築してください。これで、shift-jis と、utf8 のディクショナリが作成されました。

試してみてくださいresult = tagger.parse(text).decode('euc-jp')

于 2013-06-29T23:07:29.837 に答える
0

MeCab が UTF8 文字列を返すというあなたの仮定は間違っているようです。したがって、への変換では、unicode他のエンコーディングを使用する必要があります (たとえばiso2022_jp、エンコーディングの正確な選択は MeCab 内部に依存します)。

于 2013-06-29T12:19:14.583 に答える