MeCab を Ruby から使うための natto gem
こんにちは。エスプレッソマキアートダブル、きたけーです。
形態素解析エンジンのMeCab を Ruby から使いたくて色々調べてみたんですが、nattoというgemをみつけました。メカブナットウ
mecab gemっていうのもあるのですが、「ビルドでインストールに時間がかかる」「MeCab と mecab gemのバージョンを意識しないといけない」と、昔つかおうとしてかなりハマって、嫌な思い出になってしまっていたのでした。 一方、nattoは、FFI(外部関数インターフェイス)でRubyとMeCabをつないでいるので、ビルドの必要もなく、MeCabのバージョンを意識する必要もありません。
MeCab のインストール
brewが入っているなら、こんなかんじ
brew install mecab brew install mecab-ipadic
natto のインストール
こんなかんじ
gem install natto
natto の使い方
こんなかんじ
require 'natto' text = 'すもももももももものうち' natto = Natto::MeCab.new natto.parse(text) do |n| puts "#{n.surface}\t#{n.feature}" end
結果
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ BOS/EOS,*,*,*,*,*,*,*,*
品詞が欲しかったら、n.feature.split(',')[0]
とかする。