Create  Edit  Diff  pmsdwecm  Index  Search  Changes  History  Source  RSS  wikifarm  Login

online drugstore - History

{{toc}}

[[RAA:ruby-chasen]] 
[[ChaSen|http://plantl.org/l/munou/margarine/hiki/hiki.cgi?ChaSen]] 用 Ruby binding 

![[ChaSen|http://chasen.aist-nara.ac.jp]] のビルド
!!CygwinでChaSen

''chasen-2.2.9'' を使う。Linuxで Darts のコンパイル他ではまったので日和ってみた。

''6/2追記'':Cygwinでは成功したが、案の定 MinGWではコンパイル出来なかった>Darts

ChaSen自体のビルドは特に問題なかったので省略。INSTALL-ja に書かれてる通り。とりあえず /usr/local 以下にインストールまでしておく。chasenコマンドを確認しとくとか。

!!Mingw32でChaSen

 % tar xfvz chasen-2.2.9.tar.gz
 % cd chasen-2.2.9
 % CC='gcc -mno-cygwin' CXX='g++ -mno-cygwin' ./configure \
  --disable-shared --target=i686-mingw32 \
 % vim lib/Makefile chasen/Makefile

DEFS = ... の最後に『-DNO_SERVER』 を追加。
./configure の前に DEFS=-DNO_SERVER で良さそうなものだが。

 % make
 % make install

!ipadic のビルド

 % tar xfvz ipadic-2.5.1.tar.gz
 % cd ipadic-2.5.1
 % ./configure && make
 % make install

Cygwinで作った辞書は当然MinGW32版からも使える。中身は EUC-JPなのに注意。

!ruby-chasen
!!Cygwin版
extconf.rb が何か変なので適当に。
 % ruby -rmkmf -e 'dir_config("chasen","/usr/local"); \
  create_makefile("chasen") if have_library("chasen")'
 checking for main() in -lchasen... yes
 creating Makefile
 % make
 % ruby -I. sample/test.rb|nkf -s
 (感動詞 こんにちは こんにちは)
 (句点 。 。)
 EOS
 % make install

nkf -s は、コンソール(DOS窓)が Shift_jis な出力のため。

!!MinGW32版
Cygwin版と同様だがビルドしといたライブラリの場所を --with-chasen-lib で指定してやる。

 % i686-mingw32-ruby -rmkmf -e \
 'dir_config("chasen"); \
  create_makefile("chasen") if have_library("chasen")' \
  -- --with-chasen-lib=../chasen-2.2.9/lib/.libs
 checking for main() in -lchasen... yes
 creating Makefile
 % make
 % cp /usr/local/etc/chasenrc .
 % vi chasenrc

(GRAMMAR ...)の行のChaSenの辞書の場所をMinGW32が理解出来る形式に変更しとく。Cygwinにおける /usr/local/share/chasen/dic/ipadic は

 % cygpath -w /usr/local/share/chasen/dic/ipadic
 C:\cygwin\usr\local\share\chasen\dic\ipadic

で判る。

 % CHASENRC=./chasenrc i686-mingw32-ruby -I. sample/test.rb|nkf -s
 (感動詞 こんにちは こんにちは)
 (句点 。 。)
 EOS

!!MSWin32版
MinGW32で作ったファイルをコピーして Makefileを書き換える。

 % mkdir rbchasen1.6-mswin; cd rbchasen1.6-mswin
 % cp -r ../rbchasen1.6/* .
 % vi Makefile
 
 -RUBY_SO_NAME = mingw32-$(RUBY_INSTALL_NAME)16
 +RUBY_SO_NAME = mswin32-$(RUBY_INSTALL_NAME)16
 
 % make
 gcc -mno-cygwin -DIMPORT -DNT -D__NO_ISOCEXT -Os -march=i686 -I.
 -IC:/CYGWIN/USR/LOCAL/I686-PC-MINGW32/lib/ruby/1.6/i686-mingw32
 -I. -c -o chasen.o chasen.c
 dllwrap --target=mingw32 --as=as --dlltool-name=dlltool 
 --driver-name=gcc -mno-cygwin --export-all -s 
 --def=chasen.def -L. 
 -LC:/CYGWIN/USR/LOCAL/I686-PC-MINGW32/lib -o chasen.so 
 chasen.o -L. -lmswin32-ruby16 -lchasen -lcrypt -lwsock32 -lmsvcrt
 % CHASENRC=chasenrc i586-mswin32-ruby -I. sample/test.rb |nkf -s
 (感動詞 こんにちは こんにちは)
 (句点 。 。)
 EOS

!注意点
全般的な設定を chasenrc ファイルに、辞書ファイルの場所をその chasenrcファイルの GRAMMARに記述する必要がある。

 chasenrc ファイルは形態素解析プログラムに必要な様々な選択肢を
 定義するために用いられる.これらの定義は通常,REFIX/etc/chasenrc
 に記述されるが,利用者のホームディレクトリの‘.chasenrc’ という
 ファイルに記述することもできる.起動時オプションなどによって
 chasenrc ファイルを指定することもできる.具体的には次のような
 優先順位でchasenrc ファイルが読み込まれる.
   1. 起動時に-r オプションで指定されたファイル.
   2. 環境変数CHASENRC で指定されたファイル.
   3. 利用者のホームディレクトリにある.chasen2rc.
   4. 利用者のホームディレクトリにある.chasenrc.
   5. PREFIX/etc/chasenrc(デフォルトではインストールされない).
 設定項目一覧を以下に示す.このうち,「PATDIC」または「SUFDIC」,
 「未知語品詞」,「品詞コスト」は必ず指定しなければならない.
 (chasen付属のmanual-j.pdfより抜粋)

よって、コマンドラインから環境変数CHASENRCを使うか、スクリプト内でChasen.getopt にて -r でファイル指定をする必要がある。

なお、Cygwin環境では /usr/local/etc/chasenrc がインストールされていた。

----
!コメント、ぷりぃず
{{bbs}}
Last modified:2019/05/22 03:28:01
Keyword(s):
References: