Rubyを使って形態素解析をしたいと思います。

自然言語処理について学んでおくのは良いことだと思ったので1年を通して関わっていこうかなと思っています。

今回はMeCabとNattoを利用します。

実行環境

  • OS X Yosemite
  • ruby 2.0.0p195
  • natto 2.4.6
  • mecab-0.996
  • mecab-ipadic-2.7.0-20070801

MeCabとNattoはbrewとgemでインストールします。

brew install mecab mecab-ipadic
gem install natto

Mecabは有名な形態素解析器です。 rubyで書かれたコードを解釈してMeCabの関数を呼び出すのがNattoの役割です。

NattoはMeCabライブラリの場所を知らないので、MECAB_PATHという環境変数を利用してパスを通します。

OS Xでは以下のようにします。

export MECAB_PATH=/usr/local/Cellar/mecab/0.996/lib/libmecab.dylib

これで準備が整いましたので実際に動かしてみます。test.rbを作ってみました。

require 'natto'

nm=Natto::MeCab.new
puts nm.parse('僕の名前は三城です')

自己紹介をパースします。

ruby test.rb

実行結果です。

僕	名詞,代名詞,一般,*,*,*,僕,ボク,ボク
の	助詞,連体化,*,*,*,*,の,ノ,ノ
名前	名詞,一般,*,*,*,*,名前,ナマエ,ナマエ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
三城	名詞,固有名詞,組織,*,*,*,三城,ミキ,ミキ
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS

うまく解析されました。 ひとまず今日のところはRubyからMeCabを利用できたので良しとします。 これから何ができるのか探りながら触っていきたいです。