All Articles

MacにMeCabを使う環境を準備する

MacにMeCabを使う環境を用意します。

必要なファイルをダウンロード

MeCabは、「コマンドのソースコード本体」と「辞書」が必要になります。

MeCab: Yet Another Part-of-Speech and Morphological Analyzerから下記のファイルをダウンロードします。

コマンドのソースコード本体のダウンロード

  1. MeCab: Yet Another Part-of-Speech and Morphological Analyzerのサイト内で「mecab-0.996.tar.gz」を検索する。
  2. ダウンロードをクリックする。

辞書のダウンロード

  1. MeCab: Yet Another Part-of-Speech and Morphological Analyzerのサイト内で「IPA 辞書」を検索する。
  2. ダウンロードをクリックする。

ダウンロードしたファイルを使ってインストールする。

  1. ターミナルを開く
  2. コマンドのインストール

    cd ~/Downloads
    tar zxfv mecab-0.996.tar.gz
    cd mecab-0.996
    ./configure --with-charset=utf8 --enable-utf8-only
    make
    make check
    sudo make install
    
  3. 辞書のインストール

    cd ~/Downloads
    tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
    cd mecab-ipadic-2.7.0-20070801
    ./configure --with-charset=utf8 --enable-utf8-only
    make
    sudo make install
    
  4. パスの追加

    echo 'export PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
    source ~/.bash_profile
    

    コマンドの確認する

    正しくコマンドが実行できるか確認していきます。 まず、下記のように入力します。

    mecab
    すもももももももものうち
    

    出力として下記が出力されると、環境が整ったことになります!

すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

MeCabの結果が文字化けして困った

私はインストール時に、MeCabの出力が下記のように、?で化けてしまう現象が起きました。

mecab
MeCabが文字化けして困った
MeCab   ̾??,??ͭ̾??,?ȿ?,*,*,*,*
が文  ????,????,*,*,*,*,*
?   ̾??,????,*,*,*,*,?,?̥?,?̥?
?化けし?   ????,????,*,*,*,*,*
??  ̾??,??????³,*,*,*,*,*
??? ????,????,*,*,*,*,*
??  ????,????ե??٥å?,*,*,*,*,??,????,????
??  ????,????,*,*,*,*,*
EOS

私の場合は、「コマンドのインストール」と「辞書のインストール」のconfigure段階で、下記のようにオプションのつけ忘れが原因のようです。

正: ./configure --with-charset=utf8 --enable-utf8-only
誤: ./configure
誤: ./configure --with-charset=utf8

一度、解凍したディレクトリ(mecab-0.996やmecab-ipadic-2.7.0-20070801)を削除し、解凍コマンド(「tar zxfv mecab-0.996.tar.gz」や「tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz」)からやり直すとできました。

NEologd辞書をインストール

NEologdとは、Web上から得た新語が反映された辞書です。

mecab-ipadic-NEologd とは

mecab-ipadic-NEologd は、多数のWeb上の言語資源から得た新語を追加することでカスタマイズした MeCab 用のシステム辞書です。 Web上の文書の解析をする際には、この辞書と標準のシステム辞書(ipadic)を併用することをオススメします。

利点

  • MeCab の標準のシステム辞書では正しく分割できない固有表現などの語の表層(表記)とフリガナの組を約319万組(重複エントリを含む)採録しています
  • この辞書の更新は開発サーバ上で自動的におこなわれます
  • Web上の言語資源を活用しているので、更新時に新しい固有表現を採録できます。

欠点

  • 固有表現の分類が不十分です
  • 固有表現では無い語も固有表現として登録されています
  • 固有表現の表記とフリガナの対応づけを間違っている場合があります
  • 追加した副詞の品詞情報が全て'副詞,一般,,,,'になっている
  • 対応している文字コードは UTF-8 のみです

インストール方法

  1. 任意のフォルダで下記のコマンドを入力しソースコード本体を取得する。

    git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
    cd mecab-ipadic-neologd
    
  2. インストール作業

    ./bin/install-mecab-ipadic-neologd -n
    
  3. インストール先の確認

    echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
    
  4. NEologd辞書を使ったMeCabの実行

    echo "8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。" | mecab -d {3で調べたPath}
    
## デフォルトの辞書を変更する
mecabが使用する辞書は、-dオプションで指定することができますが、毎回するのは大変です。
そこで、デフォルトで使用される辞書を変更する方法を探しました。

デフォルトの辞書を調べるには下記のコマンドを使ってください。

mecab -D

1. コンフィグの書き換え

vi /usr/local/etc/mecabrc

下記のように辞書名を変更する。
この時、パスは辞書をインストールした時のオプションで異なるので、末尾のパスだけ変えましょう!

旧: dicdir = /usr/local/mecab/lib/mecab/dic/ipadic 新: dicdir = /usr/local/mecab/lib/mecab/dic/mecab-ipadic-neologd

## mecabコマンドのオプション
|オプション  |説明  |
|---|---|
|-v, --version  |バージョンを表示  |
|-h, --help  |ヘルプを表示  |
|-P, --dump-config  |設定されているMeCabのパラメータを表示  |
|-D, --dictionary-info  |辞書情報を表示  |
|-d, --dicdir=DIR  |使用するシステム辞書を設定  |
|-u, --userdic=FILE  |使用するユーザ辞書を設定  |
|-r, --rcfile=FILE  |使用する辞書内のリソースファイルを設定、-dと併用して使用する。  |
|-a, --all-morphs  |該当する全ての形態素を表示 default: false  |
|-O, --output-format-type=TYPE  |出力形式を設定 (chasen: -Ochasen, chasen2: -Ochasen2, yomi: -Oyomi, wakati: -Owakati, dump: -Odump)  |
|-p, --partial  |文章の中で解析結果を指定できるようにします。(例: メロンパン    名詞  |
|-B, --bos-format=STR  |解析結果に出力される、BOS文字列を上書きします。  |
|-E, --eos-format=STR  |解析結果に出力される、EOS文字列を上書きします。  |
|-N, --nbest=INT  |表示する解析結果を上位件数を設定します。  |
|-o, --output=FILE  |解析結果を保存するファイルを指定します。解析結果は追記されていきます。  |
|-m, --marginal  |output marginal probability (default false)  |
|-M, --max-grouping-size=INT  |maximum grouping size for unknown words (default 24)  |
|-F, --node-format=STR  |use STR as the user-defined node format  |
|-S, --eon-format=STR  |use STR as the user-defined end-of-NBest format  |
|-U, --unk-format=STR  |use STR as the user-defined unknown node format  |
|-x, --unk-feature=STR  |use STR as the feature for unknown word  |
|-b, --input-buffer-size=INT  |set input buffer size (default 8192)  |
|-C, --allocate-sentence  |allocate new memory for input sentence  |
|-t, --theta=FLOAT  |set temparature parameter theta (default 0.75)  |
|-c, --cost-factor=INT  |set cost factor (default 700)  |
|-l, --lattice-level=INT  |lattice information level (DEPRECATED)  |

## 関連
- [MeCab](https://taku910.github.io/mecab/)
- [mecab-ipadic-neologd](https://github.com/neologd/mecab-ipadic-neologd)