brewコマンドでmecab用のIPA/Juman/UniDic辞書をインストールする方法


MeCab 用の辞書として、大きく3つあります。
私の感覚としては話し言葉にはUniDicを、文章にはIPAかJumanを用いると良いです。

  • IPA 辞書, IPAコーパス に基づき CRF でパラメータ推定した辞書
  • Juman 辞書, 京都コーパスに基づき CRF でパラメータ推定した辞書
  • UniDic 辞書, BCCWJコーパスに基づき CRF でパラーメータ推定した辞書

それぞれの違いは次の説明が分かりやすいです。

形態素解析と辞書をどのように選べばよいのか
一般に性能が良い、精度がよいものがよいというのであれば、MeCab + UniDic を利用すればよい。但し、出力される単位・品詞が後続の処理において有効であるものと無効であるものがある。付与されている各種情報に基づいて、用途による使い分けをお勧めする。

* 音韻的な情報が重要な場合
UniDic + MeCab を利用するが、固有名詞にクセがあるために、NAIST-jdic の名詞-固有名詞を借りてくる
* 統語的な情報が重要な場合
JUMAN辞書(JUMAN-6.0) を利用するが、足りない語彙を NAIST-jdic の名詞-固有名詞から借りてくる
https://sites.google.com/site/masayua/m/majanalyzer

それでは、それぞれの辞書のインストール方法と動作サンプルを紹介します。

IPA辞書

brew install mecab-ipadicと実行します。

$ brew install mecab-ipadic
==> Downloading https://downloads.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz
Already downloaded: /Library/Caches/Homebrew/mecab-ipadic-2.7.0-20070801.tar.gz
==> Patching
==> ./configure --prefix=/usr/local/Cellar/mecab-ipadic/2.7.0-20070801 --with-charset=utf8
==> make install
?  /usr/local/Cellar/mecab-ipadic/2.7.0-20070801: 6 files, 16K, built in 5 seconds
$ mecab -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic
MeCabの辞書を使い分ける方法を紹介します。
MeCab   名詞,固有名詞,組織,*,*,*,*
の 助詞,連体化,*,*,*,*,の,ノ,ノ
辞書  名詞,一般,*,*,*,*,辞書,ジショ,ジショ
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
使い分ける 動詞,自立,*,*,一段,基本形,使い分ける,ツカイワケル,ツカイワケル
方法  名詞,一般,*,*,*,*,方法,ホウホウ,ホーホー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
紹介  名詞,サ変接続,*,*,*,*,紹介,ショウカイ,ショーカイ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます  助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 記号,句点,*,*,*,*,。,。,。
EOS

Juman 辞書

brew install mecab-jumandicと実行します。

$ brew install mecab-jumandic
==> Downloading https://downloads.sourceforge.net/project/mecab/mecab-jumandic/5.1-20070304/mecab-jumandic-5.1-20070304.tar.gz
Already downloaded: /Library/Caches/Homebrew/mecab-jumandic-5.1-20070304.tar.gz
==> Patching
==> ./configure --prefix=/usr/local/Cellar/mecab-jumandic/5.1-20070304 --with-charset=utf8
==> make install
?  /usr/local/Cellar/mecab-jumandic/5.1-20070304: 6 files, 12K, built in 6 seconds
$ mecab -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/jumandic
MeCabの辞書を使い分ける方法を紹介します。
MeCab   名詞,組織名,*,*,*,*,*
の 助詞,接続助詞,*,*,の,の,*
辞書  名詞,普通名詞,*,*,辞書,じしょ,代表表記:辞書
を 助詞,格助詞,*,*,を,を,*
使い分ける 動詞,*,母音動詞,基本形,使い分ける,つかいわける,代表表記:使い分ける
方法  名詞,普通名詞,*,*,方法,ほうほう,代表表記:方法
を 助詞,格助詞,*,*,を,を,*
紹介  名詞,サ変名詞,*,*,紹介,しょうかい,代表表記:紹介
し 動詞,*,サ変動詞,基本連用形,する,し,付属動詞候補(基本) 代表表記:する
ます  接尾辞,動詞性接尾辞,動詞性接尾辞ます型,基本形,ます,ます,*
。 特殊,句点,*,*,。,。,*
EOS

UniDic 辞書

brew install mecab-unidicと実行します。

$ brew install mecab-unidic
==> Downloading http://sourceforge.jp/frs/redir.php?m=iij&f=%2Funidic%2F58338%2Funidic-mecab-2.1.2_src.zip
Already downloaded: /Library/Caches/Homebrew/mecab-unidic-2.1.2.zip
==> Patching
==> ./configure --prefix=/usr/local/Cellar/mecab-unidic/2.1.2
==> make install
==> Caveats
If you want to use UniDic, please rewrite "dicdir".
   /usr/local/opt/mecab/etc/mecabrc
==> Summary
?  /usr/local/Cellar/mecab-unidic/2.1.2: 6 files, 16K, built in 20 seconds
$ mecab -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/unidic
MeCabの辞書を使い分ける方法を紹介します。
MeCab   MeCab   MeCab   MeCab   名詞-普通名詞-一般
の ノ ノ の 助詞-格助詞
辞書  ジショ   ジショ   辞書  名詞-普通名詞-一般
を オ ヲ を 助詞-格助詞
使い分ける ツカイワケル  ツカイワケル  使い分ける 動詞-一般   下一段-カ行    連体形-一般
方法  ホーホー    ホウホウ    方法  名詞-普通名詞-一般
を オ ヲ を 助詞-格助詞
紹介  ショーカイ ショウカイ 紹介  名詞-普通名詞-サ変可能
し シ スル  為る  動詞-非自立可能  サ行変格    連用形-一般
ます  マス  マス  ます  助動詞   助動詞-マス    終止形-一般
。         。 補助記号-句点
EOS

Rubyでの辞書使い分け実装例

Ruby向けに配布されているgem、mecabを用いる場合は次のように辞書を指定します。

ソースコード

# coding: utf-8
require 'mecab'

DICTIONARY_PATH = {
  ipadic: '/usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic',
  jumandic: '/usr/local/Cellar/mecab/0.996/lib/mecab/dic/jumandic',
  unidic: '/usr/local/Cellar/mecab/0.996/lib/mecab/dic/unidic',
}

def parse_sentence(path, text)
  node = MeCab::Tagger.new("-d #{path}").parseToNode(text)
  result = ''
  while node
    result << "#{node.surface} : #{node.feature}\n"
    node = node.next
  end
  result
end

text = 'MeCabの辞書を使い分ける方法を紹介します。'
p "----------ipadic----------"
print parse_sentence(DICTIONARY_PATH[:ipadic], text)
p "----------jumandic----------"
print parse_sentence(DICTIONARY_PATH[:jumandic], text)
p "----------unidic----------"
print parse_sentence(DICTIONARY_PATH[:unidic], text)

実行結果

$ ruby mecab-dic.rb
"----------ipadic----------"
 : BOS/EOS,*,*,*,*,*,*,*,*
MeCab : 名詞,固有名詞,組織,*,*,*,*
の : 助詞,連体化,*,*,*,*,の,ノ,ノ
辞書 : 名詞,一般,*,*,*,*,辞書,ジショ,ジショ
を : 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
使い分ける : 動詞,自立,*,*,一段,基本形,使い分ける,ツカイワケル,ツカイワケル
方法 : 名詞,一般,*,*,*,*,方法,ホウホウ,ホーホー
を : 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
紹介 : 名詞,サ変接続,*,*,*,*,紹介,ショウカイ,ショーカイ
し : 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます : 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 : 記号,句点,*,*,*,*,。,。,。
 : BOS/EOS,*,*,*,*,*,*,*,*
"----------jumandic----------"
 : BOS/EOS,*,*,*,*,*,*
MeCab : 名詞,組織名,*,*,*,*,*
の : 助詞,接続助詞,*,*,の,の,*
辞書 : 名詞,普通名詞,*,*,辞書,じしょ,代表表記:辞書
を : 助詞,格助詞,*,*,を,を,*
使い分ける : 動詞,*,母音動詞,基本形,使い分ける,つかいわける,代表表記:使い分ける
方法 : 名詞,普通名詞,*,*,方法,ほうほう,代表表記:方法
を : 助詞,格助詞,*,*,を,を,*
紹介 : 名詞,サ変名詞,*,*,紹介,しょうかい,代表表記:紹介
し : 動詞,*,サ変動詞,基本連用形,する,し,付属動詞候補(基本) 代表表記:する
ます : 接尾辞,動詞性接尾辞,動詞性接尾辞ます型,基本形,ます,ます,*
。 : 特殊,句点,*,*,。,。,*
 : BOS/EOS,*,*,*,*,*,*
"----------unidic----------"
 : BOS/EOS,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*
MeCab : 名詞,普通名詞,一般,*,*,*
の : 助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,*
辞書 : 名詞,普通名詞,一般,*,*,*,ジショ,辞書,辞書,ジショ,辞書,ジショ,漢,*,*,*,*
を : 助詞,格助詞,*,*,*,*,ヲ,を,を,オ,を,オ,和,*,*,*,*
使い分ける : 動詞,一般,*,*,下一段-カ行,連体形-一般,ツカイワケル,使い分ける,使い分ける,ツカイワケル,使い分ける,ツカイワケル,和,*,*,*,*
方法 : 名詞,普通名詞,一般,*,*,*,ホウホウ,方法,方法,ホーホー,方法,ホーホー,漢,*,*,*,*
を : 助詞,格助詞,*,*,*,*,ヲ,を,を,オ,を,オ,和,*,*,*,*
紹介 : 名詞,普通名詞,サ変可能,*,*,*,ショウカイ,紹介,紹介,ショーカイ,紹介,ショーカイ,漢,*,*,*,*
し : 動詞,非自立可能,*,*,サ行変格,連用形-一般,スル,為る,し,シ,する,スル,和,*,*,*,*
ます : 助動詞,*,*,*,助動詞-マス,終止形-一般,マス,ます,ます,マス,ます,マス,和,*,*,*,*
。 : 補助記号,句点,*,*,*,*,,。,。,,。,,記号,*,*,*,*
 : BOS/EOS,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*

なんだかRubyらしく書けず・・・アンニュイ気持ちになりました。
何か良い方法ありましたら教えてください!