MeCab&mecab-pythonをインストール その2
http://d.hatena.ne.jp/fuyumi3/20120113/1326383644
の続きです.といっても修正したtest.pyを貼りつけるだけですが.
追記:2012/01/18 ----------------------------------------------
どうやらversion 0.99にバグがあったみたいで修正版の0.991がリリースされました。
それに伴ってコード見直してみたら一部漏れがあったので、以下のコードの代わりに
http://d.hatena.ne.jp/fuyumi3/20120118/1326830586
を参照してください。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
newTest.py
#!/usr/bin/python # -*- coding: utf-8 -*- import MeCab import sys import string sentence = "太郎はこの本を二郎を見た女性に渡した。" try: print MeCab.VERSION tagger = MeCab.Tagger (" ".join(sys.argv)) print tagger.parse (sentence) m = tagger.parseToNode (sentence) while m: print m.surface, "\t", m.feature m = m.next print "EOS" lattice = MeCab.Lattice() lattice.set_sentence(sentence) len = lattice.size() for i in range(len + 1): b = lattice.begin_nodes(i) e = lattice.end_nodes(i) while b: print "B[%d] %s\t%s" % (i, b.surface, b.feature) b = b.bnext while e: print "E[%d] %s\t%s" % (i, e.surface, e.feature) e = e.bnext print "EOS" d = tagger.dictionary_info() while d: print "filename: %s" % d.filename print "charset: %s" % d.charset print "size: %d" % d.size print "type: %d" % d.type print "lsize: %d" % d.lsize print "rsize: %d" % d.rsize print "version: %d" % d.version d = d.next except RuntimeError, e: print "RuntimeError:", e
これでちゃんと動くようになります.
0.99から新たにLatticeクラスが追加されたのに従って,Taggerクラスからいくつかのメソッドが削除されてLatticeクラスに移行されたんですよねー
mecab-rubyに付属するサンプルコード(test.rb)を参考に修正したんですが,RubyとPython見比べながら作業すると似てるからまあ混乱してしょうがないねw