Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
21
Help us understand the problem. What is going on with this article?
@uuuno

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

21
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
uuuno

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
21
Help us understand the problem. What is going on with this article?