1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6 <title>MeCab の辞書構造と汎用テキスト変換ツールとしての利用</title>
7 <link type="text/css" rel="stylesheet" href="mecab.css">
10 <h1>MeCab の辞書構造と汎用テキスト変換ツールとしての利用</h1>
13 <p>単語辞書の構造を理解することで, MeCab を汎用的なテキスト変換ツールとして利用することができます. 例えば,
14 ひらがな to カタカナ変換, ローマ字 to ひらがな変換, Auto Link等を MeCab だけで実行できます
19 単語辞書を構築するには, 最低以下のファイルを作成する必要があります.
25 <li>unk.def (未知語用品詞定義)
26 <li>char.def (未知語の文字定義)
33 <p>エントリは, 以下のような CSV で追加します.</p>
36 test,1223,1223,6058,foo,bar,baz
39 <p>最初の4つは必須エントリで, それぞれ</p>
42 <li>左文脈ID (単語を左から見たときの文脈 ID)
43 <li>右文脈ID (単語を右から見たときの文脈 ID)
44 <li>単語コスト (小さいほど出現しやすい)
46 <p>となっています. コスト値は short int (16bit 整数)
50 5カラム目以降は, ユーザ定義の CSV フィールドです. 基本的に
51 どんな内容でも CSV の許す限り追加することができます.
55 <p>最初の行に連接表のサイズ(前件サイズ, 後件サイズ)を書きます. その後は,
56 連接表の前件の文脈 ID, 後件の文脈IDと, それに対応するコストを書きます.
58 <p>ある単語 A, B が連接をなすとき, </p>
60 <li>前件文脈ID = 単語Aの右文脈ID
61 <li>後件文脈ID = 単語Bの左文脈ID
64 <p>となります. つまり, 単語辞書に登録した ID が連接表を参照する際の
65 キーとなります. コスト値は short int (16bit 整数)
75 <p>上記の例では, 前件の文脈のサイズが100, 後件の文脈のサイズが 120 となって
76 います. また, 前件文脈 0 から 後件文脈 1 への遷移コストが 10 となっています.
80 <p>未知語処理のルールです. <a href="learn.html">こちら</a>を御覧ください.
83 <p>以下が最低限の設定 (DEFAULT と SPACE) です</p>
91 <p>未知語に対する品詞列のテーブルです. <a href="learn.html">こちら</a>を
94 <p>以下が最低限の設定 (DEFAULT と SPACE) です</p>
102 <p>次のコマンドを実行することで, 解析用のバイナリ辞書を作成します. </p>
104 % /usr/local/libexec/mecab/mecab-dict-index
110 <p>example ディレクトリにいくつかの応用例があります.</p>
113 <p>Hatena Keyword のような Auto Link を実装してみます</p>
116 <p>単語としてキーワード, 品詞としてキーワードに対応する URL を書きます.
117 連接の状態は1状態で十分なので, 左文脈/右文脈IDともに 0 とします.
118 コスト値は長いキーワードが優先されるよう設定します. 例えば以下のような関数を使うとよいでしょう.</p>
119 <pre>cost = (int)max(-36000, -400 * (length^1.5)) </pre>
123 Google,0,0,-5878,http://www.google.com/
124 Yahoo,0,0,-4472,http://www.yahoo.com/
125 ChaSen,0,0,-5878,http://chasen.org/
126 京都,0,0,-3200,http://www.city.kyoto.jp/
131 <p>1 状態なので, 連接表のサイズは 1 x 1 となります.
132 後件 0 から前件 0 の連接コストは 0 とします.</p>
139 <p>最低限の設定 (DEFAULT と SPACE) です</p>
147 <p>最低限の設定 (DEFAULT と SPACE) です</p>
154 <p>autolink というフォーマットを作成し, それがデフォルトの出力になるようにします</p>
157 bos-feature = BOS/EOS
158 output-format-type=autolink
160 node-format-autolink = <a href="%H">%M</a>
161 unk-format-autolink = %M
162 eos-format-autolink = \n
167 % /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -c euc-jp
168 reading ./unk.def .. 2
169 emitting double-array: 100% |###########################################|
170 reading ./dic.csv .. 4
171 emitting double-array: 100% |###########################################|
172 emitting matrix : 100% |###########################################
177 <a href="http://www.city.kyoto.jp/">京都</a>に行った。
179 <a href="http://www.yahoo.com/">Yahoo</a>と<a href="http://www.google.com/">Google</a>
183 <h3>ひらがな to カタカナ変換ツール</h3>
186 <p>単語としてひらがな1文字, 品詞として各ひらがな対応するカタカナ1文字を書きます.
187 連接の状態は1状態で十分なので, 左文脈/右文脈IDともに 0 とします.
188 曖昧性がないため コスト値は 0 とします</p>
277 <p>1 状態なので, 連接表のサイズは 1 x 1 となります.
278 後件 0 から前件 0 の連接コストは 0 とします.</p>
285 <p>最低限の設定 (DEFAULT と SPACE) です</p>
293 <p>最低限の設定 (DEFAULT と SPACE) です</p>
300 <p>katakana というフォーマットを作成し, それがデフォルトの出力になるよう
303 dictionary-charset = euc-jp
305 bos-feature = BOS/EOS
306 output-format-type=katakana
308 node-format-katakana = %H
309 unk-format-katakana = %M
310 eos-format-katakana = \n
315 % /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -c euc-jp
316 reading ./unk.def .. 2
317 emitting double-array: 100% |###########################################|
318 reading ./dic.csv .. 4
319 emitting double-array: 100% |###########################################|
320 emitting matrix : 100% |###########################################