Mecabってなに?
文章を品詞単位で切ってくれる形態素解析エンジン。↓こんなかんじ
$ mecab
明日は明日の風が吹く
明日 名詞,副詞可能,*,*,*,*,明日,アシタ,アシタ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
明日 名詞,副詞可能,*,*,*,*,明日,アシタ,アシタ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
風 名詞,一般,*,*,*,*,風,カゼ,カゼ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
吹く 動詞,自立,*,*,五段・カ行イ音便,基本形,吹く,フク,フク
EOS
MeCabと辞書のインストールはこちらから。。。
nattoをインストール
MeCabをRubyプログラム内で使えるようにするバインディングが、natto。
まずはインストール。
gem install natto
下のようなプログラムを書くだけでOK。
# -*- coding: utf-8 -*-
require 'natto'
txt = '明日は明日の風が吹く'
natto = Natto::MeCab.new
natto.parse(txt) do |n|
puts "#{n.surface}: #{n.feature}"
end
実行してみると、、、
$ ruby natto_test.rb
明日: 名詞,副詞可能,*,*,*,*,明日,アシタ,アシタ
は: 助詞,係助詞,*,*,*,*,は,ハ,ワ
明日: 名詞,副詞可能,*,*,*,*,明日,アシタ,アシタ
の: 助詞,連体化,*,*,*,*,の,ノ,ノ
風: 名詞,一般,*,*,*,*,風,カゼ,カゼ
が: 助詞,格助詞,一般,*,*,*,が,ガ,ガ
吹く: 動詞,自立,*,*,五段・カ行イ音便,基本形,吹く,フク,フク
: BOS/EOS,*,*,*,*,*,*,*,*
無事出来ました!
mecab-ipadic-NEologdとは?
mecabで形態素解析をする場合に用いる辞書です。デフォルトで使われるipadicだとうまく品詞分割できない場合があります。。(↓こんな感じにドラゴンボールもアラレちゃんも分けてしまう。。。)
$ mecab
ドラゴンボールとアラレちゃん
ドラゴン 名詞,一般,*,*,*,*,ドラゴン,ドラゴン,ドラゴン
ボール 名詞,一般,*,*,*,*,ボール,ボール,ボール
と 助詞,並立助詞,*,*,*,*,と,ト,ト
アラレ 名詞,固有名詞,一般,*,*,*,*
ちゃん 名詞,接尾,人名,*,*,*,ちゃん,チャン,チャン
EOS
これをNEologd辞書を使うと、、、
$ mecab -u /usr/local/lib/mecab/dic/mecab-ipadic-neologd/seed/mecab-user-dict-seed.20170216.dic
ドラゴンボールとアラレちゃん
ドラゴンボール 名詞,固有名詞,一般,*,*,*,DRAGON BALL,ドラゴンボール,ドラゴンボール
と 助詞,並立助詞,*,*,*,*,と,ト,ト
アラレちゃん 名詞,固有名詞,一般,*,*,*,アラレちゃん,アラレチャン,アラレチャン
EOS
ちゃんと「ドラゴンボール」と「アラレちゃん」に分けてくれます!
使い方
-
1.まずはダウンロード
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
-
2.次に、辞書ファイルを解凍
$ xz -dkv mecab-ipadic-neologd/seed/mecab-user-dict-seed.20170216.csv.xz
-
3.csvをmecab用の
.dic
形式に変換$ /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u mecab-user-dict-seed.20170216.dic -f utf-8 -t utf-8 mecab-user-dict-seed.20170216.csv
-
4.実行
- mecabコマンドの後に-uでdicのパスを指定する場合
$ mecab -u /usr/local/lib/mecab/dic/mecab-ipadic-neologd/seed/mecab-user-dict-seed.20170216.dic
- mecabの設定ファイルを変更しておく場合
/usr/local/etc/mecabrc
に以下を追記
userdic = /usr/local/lib/mecab/dic/mecab-ipadic-neologd/seed/mecab-user-dict-seed.20170216.dic
お世話になったサイト
rubyのmecabバインディングnattoを使う
MaCabのユーザー辞書にmecab-ipadic-NEologdを手動で追加する