Edited at

RubyでMeCabを使う方法と新語辞書NEologd対応


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を手動で追加する