質問: "今日は朝から良い天気ですが、夕方から雨が降りそう。外出時は、傘を忘れ" #(34文字) >python test3.py 今日は朝から良い天気ですが、夕方から雨が降りそう。外出時は、傘を忘れ > > r /t 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー ←「今日」でなく、なぜ「r」となる? > は /t 助詞,係助詞,*,*,*,*,は,ハ,ワ > 朝 /t 名詞,副詞可能,*,*,*,*,朝,アサ,アサ > から /t 助詞,格助詞,一般,*,*,*,から,カラ,カラ > 良い /t 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ > 天気 /t 名詞,一般,*,*,*,*,天気,テンキ,テンキ > です /t 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス > が /t 助詞,接続助詞,*,*,*,*,が,ガ,ガ > 、 /t 記号,読点,*,*,*,*,、,、,、 > 夕方 /t 名詞,副詞可能,*,*,*,*,夕方,ユウガタ,ユーガタ > から /t 助詞,格助詞,一般,*,*,*,から,カラ,カラ > 雨 /t 名詞,一般,*,*,*,*,雨,アメ,アメ > が /t 助詞,格助詞,一般,*,*,*,が,ガ,ガ > 降り /t 動詞,自立,*,*,一段,連用形,降りる,オリ,オリ > そう /t 名詞,接尾,助動詞語幹,*,*,*,そう,ソウ,ソー > 。 /t 記号,句点,*,*,*,*,。,。,。 > 外出 /t 名詞,サ変接続,*,*,*,*,外出,ガイシュツ,ガイシュツ > 時 /t 名詞,接尾,副詞可能,*,*,*,時,ジ,ジ > は /t 助詞,係助詞,*,*,*,*,は,ハ,ワ > 、 /t 記号,読点,*,*,*,*,、,、,、 > 傘 /t 名詞,一般,*,*,*,*,傘,カサ,カサ > を /t 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ > 忘れ /t 動詞,自立,*,*,一段,連用形,忘れる,ワスレ,ワスレ > None
回答: テストコード1については、特に根拠はありませんが、`mecab-python`側がよろしく文字コード変換してくれると思うので、そのまま`str`型(UNICODE)のまま渡してよいと思います。(encode/decode不要) テストケース2については、`mecab`側のバグが原因のようです。 python3 + mecabでnode.surfaceが取得できないバグへの対応 下記のようなテストコードにて、`t.parse('')`を実行することで正常に表示されました。 ``` import MeCab as mc t = mc.Tagger('-Ochasen') sentence = "今日は朝から良い天気ですが、夕方から雨が降りそう。外出時は、傘を忘れないようにね。" #(41文字) sentence = sentence.replace('\n', ' ') print(sentence) # python3 + mecabでnode.surfaceが取得できないバグへの対応 # http://qiita.com/piruty_joy/items/ce218090eae53b775b79 t.parse('') node = t.parseToNode(sentence) while(node): print('node surface[%s] feature[%s]' %(node.surface, node.feature)) if node.surface != "": # ヘッダとフッタを除外 print(node.surface, '/t', node.feature) node = node.next ``` ``` 今日は朝から良い天気ですが、夕方から雨が降りそう。外出時は、傘を忘れないようにね。 node surface[] feature[BOS/EOS,*,*,*,*,*,*,*,*] node surface[今日] feature[名詞,副詞可能,*,*,*,*,今日,キョウ,キョー] 今日 /t 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー node surface[は] feature[助詞,係助詞,*,*,*,*,は,ハ,ワ] は /t 助詞,係助詞,*,*,*,*,は,ハ,ワ node surface[朝] feature[名詞,副詞可能,*,*,*,*,朝,アサ,アサ] 朝 /t 名詞,副詞可能,*,*,*,*,朝,アサ,アサ node surface[から] feature[助詞,格助詞,一般,*,*,*,から,カラ,カラ] から /t 助詞,格助詞,一般,*,*,*,から,カラ,カラ node surface[良い] feature[形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ] 良い /t 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ node surface[天気] feature[名詞,一般,*,*,*,*,天気,テンキ,テンキ] 天気 /t 名詞,一般,*,*,*,*,天気,テンキ,テンキ node surface[です] feature[助動詞,*,*,*,特殊・デス,基本形,です,デス,デス] です /t 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス node surface[が] feature[助詞,接続助詞,*,*,*,*,が,ガ,ガ] が /t 助詞,接続助詞,*,*,*,*,が,ガ,ガ node surface[、] feature[記号,読点,*,*,*,*,、,、,、] 、 /t 記号,読点,*,*,*,*,、,、,、 node surface[夕方] feature[名詞,副詞可能,*,*,*,*,夕方,ユウガタ,ユーガタ] 夕方 /t 名詞,副詞可能,*,*,*,*,夕方,ユウガタ,ユーガタ node surface[から] feature[助詞,格助詞,一般,*,*,*,から,カラ,カラ] から /t 助詞,格助詞,一般,*,*,*,から,カラ,カラ node surface[雨] feature[名詞,一般,*,*,*,*,雨,アメ,アメ] 雨 /t 名詞,一般,*,*,*,*,雨,アメ,アメ node surface[が] feature[助詞,格助詞,一般,*,*,*,が,ガ,ガ] が /t 助詞,格助詞,一般,*,*,*,が,ガ,ガ node surface[降り] feature[動詞,自立,*,*,一段,連用形,降りる,オリ,オリ] 降り /t 動詞,自立,*,*,一段,連用形,降りる,オリ,オリ node surface[そう] feature[名詞,接尾,助動詞語幹,*,*,*,そう,ソウ,ソー] そう /t 名詞,接尾,助動詞語幹,*,*,*,そう,ソウ,ソー node surface[。] feature[記号,句点,*,*,*,*,。,。,。] 。 /t 記号,句点,*,*,*,*,。,。,。 node surface[外出] feature[名詞,サ変接続,*,*,*,*,外出,ガイシュツ,ガイシュツ] 外出 /t 名詞,サ変接続,*,*,*,*,外出,ガイシュツ,ガイシュツ node surface[時] feature[名詞,接尾,副詞可能,*,*,*,時,ジ,ジ] 時 /t 名詞,接尾,副詞可能,*,*,*,時,ジ,ジ node surface[は] feature[助詞,係助詞,*,*,*,*,は,ハ,ワ] は /t 助詞,係助詞,*,*,*,*,は,ハ,ワ node surface[、] feature[記号,読点,*,*,*,*,、,、,、] 、 /t 記号,読点,*,*,*,*,、,、,、 node surface[傘] feature[名詞,一般,*,*,*,*,傘,カサ,カサ] 傘 /t 名詞,一般,*,*,*,*,傘,カサ,カサ node surface[を] feature[助詞,格助詞,一般,*,*,*,を,ヲ,ヲ] を /t 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ node surface[忘れ] feature[動詞,自立,*,*,一段,未然形,忘れる,ワスレ,ワスレ] 忘れ /t 動詞,自立,*,*,一段,未然形,忘れる,ワスレ,ワスレ node surface[ない] feature[助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ] ない /t 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ node surface[よう] feature[名詞,非自立,助動詞語幹,*,*,*,よう,ヨウ,ヨー] よう /t 名詞,非自立,助動詞語幹,*,*,*,よう,ヨウ,ヨー node surface[に] feature[助詞,副詞化,*,*,*,*,に,ニ,ニ] に /t 助詞,副詞化,*,*,*,*,に,ニ,ニ node surface[ね] feature[助詞,終助詞,*,*,*,*,ね,ネ,ネ] ね /t 助詞,終助詞,*,*,*,*,ね,ネ,ネ node surface[。] feature[記号,句点,*,*,*,*,。,。,。] 。 /t 記号,句点,*,*,*,*,。,。,。 node surface[] feature[BOS/EOS,*,*,*,*,*,*,*,*] ```