JumanのRubyバインディング
- April 06, 2006 19:36:12
- Comments (0)
- Trackbacks (1)
Ruby
Jumanの RubyバインディングRuby-Jumanを作ってみたよ。
(; ・∀・)つ[rubyjuman_wrap.c] サッ
SWIGでやったので、そのファイルもうpしときますね。これ使えばPerlとかもいけるんではないかと。
ホントカヨ…(; ・∀・)つ[rubyjuman.i] コソーリ
$ tar zxvf juman-5.1.tar.gz $ cp rubyjuman_wrap.c juman-5.1/lib $ cd juman-5.1 $ ./configure $ make (# make install ←Jumanがインストールされていない場合) $ cd lib $ gcc -c -fPIC -I/usr/lib/ruby/1.8/i386-linux rubyjuman_wrap.c $ gcc -shared *.o -o Juman.so
-Iのところは人それぞれ。ruby.hのあるディレクトリを指定。
なんかmakeとか良くわかんない。こんなんでいいのかな。一応動いたけど。
できあがったJuman.soを一応確認。
$ ls
Juman.so* getid.lo japanese.c katuyou.c ……
$ irb -r Juman
irb(main):001:0> Juman.init
=> nil
irb(main):002:0> $KCODE = 'E'
=> "E"
irb(main):003:0> puts Juman.parse("徹夜でネットしてました。")
徹夜 てつや 徹夜 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:徹夜"
で で で 助詞 9 格助詞 1 * 0 * 0 NIL
ネット ねっと ネット 名詞 6 普通名詞 1 * 0 * 0 "代表表記:ネット"
して して する 動詞 2 * 0 サ変動詞 16 タ系連用テ形 11 "付属動詞候補(基本) 代表表記:する"
ました ました ます 接尾辞 14 動詞性接尾辞 7 動詞性接尾辞ます型 31 タ形 5 NIL
。 。 。 特殊 1 句点 1 * 0 * 0 NIL
=> nil
うまくいったら、Juman.soを/usr/local/lib/site_ruby/1.8とかそういうところにコピー。
使い方。
require 'Juman' #初期化 Juman.init #1文を形態素解析 Juman.parse(sentence)
出力形式は、jumanのデフォルトです。つまりjumanってやっただけ(またはjuman -B -e2)と同じ。
オプション渡せるといいんだけど、どうも-eと-e2のコードしか書かれてないように見えたので、 めんどくさいから-Bも固定。
以前同じように作ろうとして失敗してたのは、 オプションを格納する変数を初期化してなくて(当然-eでも-e2でもなくて)、 パースしても出力がmallocされなかったためにこけたのではないかと推測。
とりあえずソースほっとんど読んでないうえにヘタレなので、はっきり言って自信ないです。 しかも多分自分使わないので、これ以上良くなるわけもなく。 できればエロい人にもっといいものを……。
そういえばreturn書き忘れたり、ifの前に(を書いてしまったり(←これ5回はやった)した。 そろそろC書けなくなるかも……。
Trackbacks
Trackback Ping URL: http://fg-180.katamayu.net/trackback/280
JUMAN Python バインディング (SWIG) / kh.log
形態素解析器JUMANをPythonモジュールとして使うためのバインディングを作りました。 JUMANは-Sオプションをつけて起動すると、サーバーモードで動作します。サーバーモードのJUMANは他のプ...(Wed Nov 15 23:50:49 JST 2006)
