Rails4でnattoを使い、mecabで形態素解析をする方法(CentOS6)
Rails4でnattoを使い、mecabで形態素解析をする方法(CentOS6)
mecab をインストール
mecabをyumでインストール
CentOS6でyumを使ってmecabとmecabの辞書ファイルをインストールしようとして
以下のようにyumを実行しようとするとパッケージがないと怒られる
> sudo yum install mecab mecab-ipadic No package mecab available. No package mecab-ipadic available.
普通にRPMをダウンロードしてもよいが、悔しいので別の方法をご紹介する
全文検索エンジンgroongaのリポジトリを追加
> sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
refs http://groonga.org/ja/docs/install/centos.html#centos-6
再び yumでmecab本体と辞書ファイルmecab-ipadicをインストールを試みる
> yum install mecab mecab-ipadic // バージョン確認 > mecab --version mecab of 0.996
無事インストールできた
mecab動作確認
> mecab もうやんカレーを食べに行こう もう 副詞,一般,*,*,*,*,もう,モウ,モー やん 動詞,自立,*,*,五段・ラ行,体言接続特殊,やる,ヤン,ヤン カレー 名詞,一般,*,*,*,*,カレー,カレー,カレー を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 食べ 動詞,自立,*,*,一段,連用形,食べる,タベ,タベ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 行こ 動詞,自立,*,*,五段・カ行促音便,未然ウ接続,行く,イコ,イコ う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ EOS
YES YES
Railsとmecabをつなぐ
railsプロジェクトを作成
新規作成
// mysql を利用する場合は -d mysqlをつける > rails new PROJECT_NAME -d mysql
Railsからmecabを利用できるようにする
Gemfileを編集し、nattoをインストールする
# CentOSの場合は therubyracer をコメントアウトする gem 'therubyracer', platforms: :ruby # nattoを追加 gem 'natto'
ここでbundle installするとmecabのライブラリが見つからなくてエラーになる場合がある。
> bundle exec rails c /home/vagrant/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/lib/ffi/library.rb:133:in `block in ffi_lib': Could not open library 'mecab': /usr/lib64/mecab: cannot read file data: Is a directory. (LoadError) Could not open library 'libmecab.so': libmecab.so: cannot open shared object file: No such file or directory
環境変数にmecab用のパスを追加する
mecabのライブラリのある場所を調べる
> sudo find / -name libmecab.so* /usr/lib64/libmecab.so.2 /usr/lib64/libmecab.so.2.0.0 // /usr/lib64/libmecab.so.2はシンボリックリンク > ls -l /usr/lib64/libmecab.so.2 lrwxrwxrwx 1 root root 17 2月 7 12:22 2014 /usr/lib64/libmecab.so.2 -> libmecab.so.2.0.0
調べたライブラリを環境変数に追加する
> echo 'export MECAB_PATH=/usr/lib64/libmecab.so.2' >> ~/.bash_profile # bash設定の再読み込み > source ~/.bash_profile
再びbundle install
> bundle install
nattoの動作確認
> bundle exec rails c nm = Natto::MeCab.new => #<Natto::MeCab:0x007f231d70f638 @tagger=#<FFI::Pointer address=0x007f231e7539b0>, @options={}, @dicts=[#<Natto::DictionaryInfo:0x007f231d70f110 type="0", filename="/usr/lib64/mecab/dic/ipadic/sys.dic", charset="utf8">], @version="0.996"> irb(main):007:0> puts nm.parse('北海道に帰りたいのでリモートワーク出来る会社求む') 北海道 名詞,固有名詞,地域,一般,*,*,北海道,ホッカイドウ,ホッカイドー に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 帰り 動詞,自立,*,*,五段・ラ行,連用形,帰る,カエリ,カエリ たい 助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ ので 助詞,接続助詞,*,*,*,*,ので,ノデ,ノデ リモート 名詞,一般,*,*,*,*,リモート,リモート,リモート ワーク 名詞,一般,*,*,*,*,ワーク,ワーク,ワーク 出来る 動詞,自立,*,*,一段,基本形,出来る,デキル,デキル 会社 名詞,一般,*,*,*,*,会社,カイシャ,カイシャ 求む 動詞,自立,*,*,五段・マ行,基本形,求む,モトム,モトム EOS => nil
refs https://bitbucket.org/buruzaemon/natto/wiki/Quick-Start