Ruby
mecab
形態素解析
natto

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

More than 1 year has passed since last update.

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