MeCab ユーザ辞書への単語追加

2015年6月4日  カテゴリー:Linux  タグ: ,
Pocket
LINEで送る

MeCab を使って、文章を単語に分割した時に、複数の単語が含まれる複合語などが、思ったように分割できない事があります。例えば「焼肉定食」は「焼肉」と「定食」の2つの単語に分割されてしまいます。MeCab には「最小単位の単語に分割する」という基本ルールがあるので、この分割は正しいのですが、実際に文章を解析する時は、1つの単語として扱いたくなります。そこで今回は、MeCab の辞書に単語を追加して、思ったように単語を分割する方法をご紹介します。

MeCab 辞書への単語の追加方法

辞書への単語の追加には、2つの方法があるようです。今回は「ユーザ辞書」へ単語を追加してみたいと思います。

システム辞書への追加
辞書更新が頻繁でないときや, 解析速度を落としたくない時は, 直接 システム辞書を変更するのがよいでしょう.

ユーザ辞書への追加
システム辞書の更新は時間がかかります. 辞書の更新が頻繁な場合や, システム辞書を変更する権限が無い場合は, ユーザ辞書を作るのがいいでしょう.

MeCab: 単語の追加方法 より引用

下準備

MeCab と IPA辞書をインストールしておきます。

IPA辞書のみの MeCab の動作

冒頭にも書きましたが、IPA辞書のみの状態では「焼肉定食」は「焼肉」と「定食」に分割されます。

これを、ユーザ辞書に単語「焼肉定食」を追加して、分割されないようにしたいと思います。

ユーザ辞書の元になるCSVファイルの作成

ユーザ辞書への単語の追加は「辞書の元になるCSVファイルの作成」→「辞書を作成」の流れで行います。

辞書の元になるCSVファイルのフォーマットは、以下のようになります。

表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音

さらに, 自分の好きな情報をCSVが許す範囲で追加してもかまいません.
ユーザ設定,,,10,名詞,一般,*,*,*,*,ユーザ設定,ユーザセッテイ,ユーザセッテイ,追加エントリ

MeCab: 単語の追加方法 より引用

単語に関する情報を、色々と設定できますが、少なくとも「表層形(追加したい単語)」と「コスト」を追加しておけばOKです。コストは「1」を設定した単語が最優先されます。コストを自動推定する方法もありますが、今回は手っ取り早く「1」を設定しました。

上記をふまえて、ユーザ辞書の元になるCSVファイルを作成します。メンテナンス用に、追加エントリへ辞書名(食べものユーザ辞書)も追加しておきました。

vim tabemono.csv

※CSVファイルの文字コードは、必ず「UTF-8」で作成してください。

ユーザ辞書の作成

作成したCSVファイルから、ユーザ辞書を作成します。

ユーザ辞書の保存先ディレクトリの作成 ※場所はどこでも構いません。

MeCab に付属の mecab-dict-index コマンドを使って、辞書を作成します。
引数の指定方法は以下の通りです。

上記をふまえて、ユーザ辞書を作成します。
※ mecab-dict-index コマンドは、フルパスで実行しましょう。

MeCab の設定ファイルに、作成したユーザ辞書を追加します。
vim /usr/local/etc/mecabrc

ユーザ辞書は複数追加することが可能です。(システム辞書は1つのみ)

ユーザ辞書を追加した MeCab の動作

さてさて、上手く分割されるでしょうか?

「焼肉定食」が分割されないようになりました。(^^)/

終わりに

次回は、解析速度が高速な「システム辞書」へ単語を追加してみたいと思います。

スポンサーリンク
Pocket
LINEで送る

MeCab ユーザ辞書への単語追加」への2件のフィードバック

  1. ゆみこ

    テキストマイニングを始めた初心者です.
    mecabに辞書登録を行いたいのですが,
    まったく上手くいきません.

    ユーザ辞書の作成の部分で
    コマンド
    mkdir /usr/local/lib/mecab/dic/userdic
    はどこで打ち込めばよいのでしょうか?

    コマンドプロンプト あるいは mecabですか?

    続いて,
    /usr/local/libexec/mecab/mecab-dict-index \
    -d /usr/local/lib/mecab/dic/ipadic \
    -u /usr/local/lib/mecab/dic/userdic/tabemono.dic \
    -f utf-8 -t utf-8 tabemono.csv

    はどこに打ち込めばよいのでしょう?

    本当に全くの初心者です.

    どうかご指導の程よろしくおねがいいたします

    返信
    1. あぱーブログあぱーブログ 投稿作成者

      >ゆみこさん

      はじめまして、ご質問ありがとうございます。

      ゆみこさんが、CentOSなどのLinuxに mecab をインストールしていると考えてお答えしますね。
      (もしインストールされていないようでしたら、こちらの記事を参考にしてみてください)

      >mkdir /usr/local/lib/mecab/dic/userdic
      >はどこで打ち込めばよいのでしょうか?

      >/usr/local/libexec/mecab/mecab-dict-index \
      >-d /usr/local/lib/mecab/dic/ipadic \
      >-u /usr/local/lib/mecab/dic/userdic/tabemono.dic \
      >-f utf-8 -t utf-8 tabemono.csv
      >はどこに打ち込めばよいのでしょう?

      どちらのコマンドもコマンドプロンプト(ターミナル)に打ち込んでください。

      もし root ユーザ以外でログインしている場合は、先頭に「sudo」を付けて実行する必要があります。
      例えば1つめのコマンドは、以下のようになります。
      sudo mkdir /usr/local/lib/mecab/dic/userdic

      テキストマイニングがうまくいくといいですね。陰ながら応援しています。

      返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です