MeCab の辞書構造と汎用テキスト変換ツールとしての利用

MeCab の辞書構造と汎用テキスト変換ツールとしての利用

概要

単語辞書の構造を理解することで, MeCab を汎用的なテキスト変換ツールとして利用することができます. 例えば, ひらがな to カタカナ変換, ローマ字 to ひらがな変換, Auto Link等を MeCab だけで実行できます

ファイル

単語辞書を構築するには, 最低以下のファイルを作成する必要があります.

*.csv ファイル

単語辞書です

エントリは, 以下のような CSV で追加します.

test,1223,1223,6058,foo,bar,baz

最初の4つは必須エントリで, それぞれ

となっています. コスト値は short int (16bit 整数) の範囲におさめる必要があります.

5カラム目以降は, ユーザ定義の CSV フィールドです. 基本的に どんな内容でも CSV の許す限り追加することができます.

matrix.def

最初の行に連接表のサイズ(前件サイズ, 後件サイズ)を書きます. その後は, 連接表の前件の文脈 ID, 後件の文脈IDと, それに対応するコストを書きます.

ある単語 A, B が連接をなすとき,

となります. つまり, 単語辞書に登録した ID が連接表を参照する際の キーとなります. コスト値は short int (16bit 整数) の範囲におさめる必要があります.

100 120
0 0 1
0 1 10
0 2 5

上記の例では, 前件の文脈のサイズが100, 後件の文脈のサイズが 120 となって います. また, 前件文脈 0 から 後件文脈 1 への遷移コストが 10 となっています.

char.def

未知語処理のルールです. こちらを御覧ください.

以下が最低限の設定 (DEFAULT と SPACE) です

DEFAULT 1 0 0
SPACE   0 1 0
0x0020 SPACE

unk.def

未知語に対する品詞列のテーブルです. こちらを 御覧ください.

以下が最低限の設定 (DEFAULT と SPACE) です

DEFAULT,0,0,0,*
SPACE,0,0,0,*

辞書のコンパイル

次のコマンドを実行することで, 解析用のバイナリ辞書を作成します.

% /usr/local/libexec/mecab/mecab-dict-index 

ケーススタディ

example ディレクトリにいくつかの応用例があります.

Auto Link

Hatena Keyword のような Auto Link を実装してみます

ひらがな to カタカナ変換ツール