gem install mecab で cpp のコンパイルエラー
# yum -y install mecab mecab-devel install mecab-ipadic # gem install mecab Building native extensions. This could take a while... ERROR: Error installing mecab: ERROR: Failed to build gem native extension. /usr/local/bin/ruby extconf.rb checking for main() in -lmecab... yes checking for mecab.h... yes creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling MeCab_wrap.cpp MeCab_wrap.cpp: In function ‘const mecab_node_t* mecab_node_t_begin_node_list(mecab_node_t*, size_t)’: MeCab_wrap.cpp:2085: error: ‘struct mecab_node_t’ has no member named ‘sentence_length’ …
ガッデム!
解決方法
入れようとしている gem の mecab のバージョンを調べる
# gem list --remote | grep mecab light-mecab (0.0.5) mecab (0.98) mecab-ext (1.0.2) mecab-light (0.2.4) mecab-modern (0.0.2) mecab-mora (0.0.5) mecab-syllable (0.0.5)
なるほど 0.98 である。
yum で入れてある mecab のバージョンを調べる
# rpm -q mecab mecab-devel mecab-0.996-1.el6.x86_64 mecab-devel-0.996-1.el6.x86_64
なるほど 0.996 であった。
yum で入れる mecab のバージョンを gem のやつに合わせる
# yum -y remove mecab # yum -y remove mecab-devel # yum -y install mecab-0.98 mecab-devel-0.98 # rpm -q mecab mecab-devel mecab-0.98-1.el6.x86_64 mecab-devel-0.98-1.el6.x86_64
はい。
それでは再度 gem install mecab
# gem install mecab Building native extensions. This could take a while... Successfully installed mecab-0.98 Parsing documentation for mecab-0.98 Installing ri documentation for mecab-0.98 Done installing documentation for mecab after 1 seconds 1 gem installed
解決!\(^o^)/
おまけ:使用例
require "mecab" sentence = "当社のサービスを含むインターネット全般のご利用にあたっての注意事項" tagger = MeCab::Tagger.new puts tagger.parse sentence
↓
↓ 実行
↓
当社 名詞,一般,*,*,*,*,当社,トウシャ,トーシャ の 助詞,連体化,*,*,*,*,の,ノ,ノ サービス 名詞,サ変接続,*,*,*,*,サービス,サービス,サービス を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 含む 動詞,自立,*,*,五段・マ行,基本形,含む,フクム,フクム インターネット 名詞,一般,*,*,*,*,インターネット,インターネット,インターネット 全般 名詞,一般,*,*,*,*,全般,ゼンパン,ゼンパン の 助詞,連体化,*,*,*,*,の,ノ,ノ ご 接頭詞,名詞接続,*,*,*,*,ご,ゴ,ゴ 利用 名詞,サ変接続,*,*,*,*,利用,リヨウ,リヨー にあたって 助詞,格助詞,連語,*,*,*,にあたって,ニアタッテ,ニアタッテ の 助詞,連体化,*,*,*,*,の,ノ,ノ 注意 名詞,サ変接続,*,*,*,*,注意,チュウイ,チューイ 事項 名詞,一般,*,*,*,*,事項,ジコウ,ジコー EOS
ちゃんと分解されたンゴ