すもももももももものうち
「すもももももももものうち」という文章を分解すると
「すもも」「も」「もも」「も」「もも」「の」「うち」となります。
人間が簡単に理解できることもコンピュータにやらせると難しいので
形態素解析という技術が発達しました。
今回は形態素解析ツールであるMeCab(和布蕪)を試してみます。
どうやらインストールされているようなのでそのまま使うことにします。
%mecab -D
filename: /usr/local/lib/mecab/dic/ipadic/sys.dic
version: 102
charset: euc-jp
type: 0
size: 392126
left size: 1316
right size: 1316
あららcharsetはeuc-jpですか。自分が作るWebアプリはUTF8で
統一したいので、辞書はこちらで用意するようにします。
%cd ~/work/install
%wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz/downloadtar
%zxvf mecab-ipadic-2.7.0-20070801.tar.gz
%cd mecab-ipadic-2.7.0-20070801
%./configure --with-charset=utf8 --with-dicdir=$HOME/local/lib/mecab/dic/ipadic-utf8
%make
%make install
コマンドラインから試してみます。
%mecab -d ~/local/lib/mecab/dic/ipadic-utf8
すもももももももものうち
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
あっさり動きました。
ではRubyから呼び出すためのruby-mecabが入っているかどうか
見てみます。
無いようなのでインストールします。
%cd ~/work/install
%wget http://sourceforge.net/projects/mecab/files/mecab-ruby/0.98/mecab-ruby-0.98.tar.gz/download
%tar zxvf mecab-ruby-0.98.tar.gz
%cd mecab-ruby-0.98
%ruby extconf.rb --with-opt-lib=$HOME/local/lib
%make
さて、テストしてみます。
%ruby test.rb
0.98
/libexec/ld-elf.so.1: ./MeCab.so: Undefined symbol "_ZN5MeCab12createTaggerEPKc"
あらら、失敗。
googleで検索してみたところ情報が見つかりました。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/38737
extconf.rb に
$LIBS = '-lthr ' + $LIBS
を追加
%ruby extconf.rb --with-opt-lib=$HOME/local/lib
%make
%ruby test.rb
こんどは動いたようです。
インストールします。
%make install
install: /usr/local/lib/ruby/site_ruby/1.8/i386-freebsd7/MeCab.so: Permission denied
Error code 71
インストールに失敗しますので手動でコピーします。
%cat mecab_test.rb
#!/usr/bin/ruby -Ku$: << "/home/username/local/lib/ruby"
require 'MeCab'
m = MeCab::Tagger.new("-d /home/username/local/lib/mecab/dic/ipadic-utf8")
print m.parse("すもももももももものうち")% ruby mecab_test.rb
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
こでれRubyスクリプトで形態素解析が出来るようになりました。
テキストを形態素解析して名詞を伏字化して...みたいなことを考えています。