83's

Top > Archives > 2006 > April > 06 > JumanのRubyバインディング

Jumanの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)

more

Comments

http://とかhttps://が入ってるとPOSTできません。ttp://のように適宜変えてください。