Hatena::ブログ(Diary)

かいはつにっき

2012-07-25 rubyとMecabで形態素解析(分かち書き)出来るようにする。

今作ろうとしてる機能で形態素解析が必須なので導入します。

Mecabのインストール

$brew install mecab

現状はデフォルトで最新バージョンが入る。

IPA辞書のインストール

$brew install mecab-ipadic

標準のIPA辞書を入れてみる。brewで簡単。

これで一応分かち書きの機能は使える。

$ mecab

試しに文章を分かち書きにする

試し 名詞,一般,*,*,*,*,試し,タメシ,タメシ

に 助詞,格助詞,一般,*,*,*,に,ニ,ニ

文章 名詞,一般,*,*,*,*,文章,ブンショウ,ブンショー

を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ

分かち書き 名詞,一般,*,*,*,*,分かち書き,ワカチガキ,ワカチガキ

に 助詞,格助詞,一般,*,*,*,に,ニ,ニ

する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル

EOS

かんたん!

メモ:

mecab -d => 辞書ディレクトリのパスを指定する。 mecab -d /usr/local...

mecab -u => ユーザ辞書のディレクトリを指定する。

他の辞書も入れる

で、今回は幾つかの辞書を試してどれが最適化を試したいので、他の辞書も入れる。

NAIST辞書 NAIST Japanese Dictionary

落としてきて以下でインストール

utf-8に対応させるオプション付き。

./configure --with-charset=utf-8

make

sudo make install

/usr/local/Cellar/mecab/0.994/lib/mecab/dic/naist-jdic/

にインストールされるので、-dオプションでディレクトリ指定すれば試せる。

$ mecab -d /usr/local/Cellar/mecab/0.994/lib/mecab/dic/naist-jdic/

わかちこわかちこ

わかち 名詞,一般,*,*,*,*,わかち,ワカチ,ワカチ,,

こ 接頭詞,名詞接続,*,*,*,*,こ,コ,コ,,

わかち 名詞,一般,*,*,*,*,わかち,ワカチ,ワカチ,,

こ 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,こい,コ,コ,こ/濃,

EOS

試すときはちゃんとした文章で試しましょう。

UniDic 形態素解析辞書UniDic

./configure --with-use-chasen=0

make

sudo make install

標準のインストール先は

/usr/local/unidic/dic/unidic-mecab

になる。嫌ならconfigureで変更する。

各辞書の印象

ニュースの本文を使って試してみたところ、単語の細分化度合いはNAIST<IPA<UniDicと言った印象。(右へ行くほど単語が細かく分けられる)

例:

NAIST

太平洋戦争 名詞,固有名詞,一般,*,*,*,太平洋戦争,タイヘイヨウセンソウ,タイヘイヨーセンソー,,

慰霊祭 名詞,一般,*,*,*,*,慰霊祭,イレイサイ,イレイサイ,,

IPA

太平洋戦争 名詞,固有名詞,一般,*,*,*,太平洋戦争,タイヘイヨウセンソウ,タイヘイヨーセンソー

慰霊 名詞,一般,*,*,*,*,慰霊,イレイ,イレイ

祭 名詞,接尾,一般,*,*,*,祭,サイ,サイ

UniDic

太平 名詞,固有名詞,地名,一般,*,*,タイヘイ,タイヘイ-外,太平,タイヘー,タイヘイ,固,太平,タイヘー,タイヘイ,タイヘイ,*,*,*,*,*,*,"0,1",*,*

洋 接尾辞,名詞的,一般,*,*,*,ヨウ,洋,洋,ヨー,ヨウ,漢,洋,ヨー,ヨウ,ヨウ,*,*,*,*,*,*,*,C3,*

戦争 名詞,普通名詞,サ変可能,*,*,*,センソウ,戦争,戦争,センソー,センソウ,漢,戦争,センソー,センソウ,センソウ,*,*,*,*,*,*,0,C2,*

慰霊 名詞,普通名詞,一般,*,*,*,イレイ,慰霊,慰霊,イレー,イレイ,漢,慰霊,イレー,イレイ,イレイ,*,*,*,*,*,*,0,C2,*

祭 接尾辞,名詞的,一般,*,*,*,サイ,祭,祭,サイ,サイ,漢,祭,サイ,サイ,サイ,*,*,*,*,*,*,*,C3,*

ただ言葉によってはIPAとNAISTでは分割されているのがUniDicでは結合されていたりする(両党 / 両, 党)ので、その辺り一定のルールがあるのだろう。色々と文章を読み込ませてどれが最適かを見極めるとする。

rubyから使えるようにする

さて、ここからが本番。

導入した形態素解析をrubyから使えるようにしなければならない。

MecabからMecab-rubyを利用しているMecabのバージョンに合わせてダウンロード。

後は

MeCab および MeCab-Ruby をインストールする

MacにMecabとmecab-rubyをインストールして形態素解析。辞書はIPA辞書、NAIST辞書、UniDicの3種

を参考にしながらファイルをこちょこちょ弄ってインストール。

Mecab-ruby-0.994/extconf.rbを編集

$CFLAGS += ' ' + `#{mecab_config} --cflags`.chomp

$LDFLAGS = '-L/usr/local/lib' #この行を追加

have_header('mecab.h') && create_makefile('MeCab')

$ ruby extconf.rb

を実行するとMakefileが作成されるので、Makefileを編集。

LDSHARED = cc -arch i386 -arch x86_64 -pipe -bundle -undefined dynamic_lookup

# ↑になっている部分を↓の様に編集する。

# 自分の環境(OSX Lion ruby1.9.3p194)の場合 = $(cc) -dynamic -bundleみたいになってた。

LDSHARED = $(CXX) -arch i386 -arch x86_64 -pipe -bundle -undefined dynamic_lookup

下準備は以上で

$ make;sudo make install

するとインストールされる。

$ ruby test.rb

で動作を確認。

したはいいけど、まだMecab-rubyの使い方が分かってない。

なんか良い解説してる記事とかないのかなーと思ってたんだけど、よく考えたらtest.rbとか読めばいいと気づいた。読むよ!

追記:Mecab-rubyにbindings.htmlってのがあった。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証