OSDN Git Service

設定変更。
[wordring-tm/wordring-tm.git] / third_party / mecab-0.996 / doc / dic-detail.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
3 <html>
4 <head>
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">
8 </head>
9 <body>
10 <h1>MeCab の辞書構造と汎用テキスト変換ツールとしての利用</h1>
11
12 <h2>概要</h2>
13 <p>単語辞書の構造を理解することで, MeCab を汎用的なテキスト変換ツールとして利用することができます. 例えば, 
14 ひらがな to カタカナ変換, ローマ字 to ひらがな変換, Auto Link等を MeCab だけで実行できます
15 </p>
16
17 <h2>ファイル</h2>
18 <p>
19 単語辞書を構築するには, 最低以下のファイルを作成する必要があります. 
20 </p>
21
22 <ul>
23 <li>*.csv ファイル (単語辞書)
24 <li>matrix.def (連接表)
25 <li>unk.def (未知語用品詞定義)
26 <li>char.def (未知語の文字定義)
27 <li>dicrc (設定ファイル)
28 </ul>
29
30 <h3>*.csv ファイル</h3>
31 <p>単語辞書です</p>
32
33 <p>エントリは, 以下のような CSV で追加します.</p>
34
35 <pre>
36 test,1223,1223,6058,foo,bar,baz
37 </pre>
38
39 <p>最初の4つは必須エントリで, それぞれ</p>
40 <ul>
41 <li>表層形
42 <li>左文脈ID (単語を左から見たときの文脈 ID)
43 <li>右文脈ID (単語を右から見たときの文脈 ID)
44 <li>単語コスト (小さいほど出現しやすい)
45 </ul>
46 <p>となっています. コスト値は short int (16bit 整数)
47 の範囲におさめる必要があります. </p>
48
49 <p>
50 5カラム目以降は, ユーザ定義の CSV フィールドです. 基本的に
51 どんな内容でも CSV の許す限り追加することができます. 
52 </p>
53
54 <h3>matrix.def</h3>
55 <p>最初の行に連接表のサイズ(前件サイズ, 後件サイズ)を書きます. その後は, 
56 連接表の前件の文脈 ID, 後件の文脈IDと, それに対応するコストを書きます. 
57 </p>
58 <p>ある単語 A, B が連接をなすとき, </p>
59 <ul>
60 <li>前件文脈ID = 単語Aの右文脈ID 
61 <li>後件文脈ID = 単語Bの左文脈ID
62 </ul>
63
64 <p>となります. つまり, 単語辞書に登録した ID が連接表を参照する際の
65 キーとなります. コスト値は short int (16bit 整数)
66 の範囲におさめる必要があります. </p>
67
68 <pre>
69 100 120
70 0 0 1
71 0 1 10
72 0 2 5
73 </pre>
74
75 <p>上記の例では, 前件の文脈のサイズが100, 後件の文脈のサイズが 120 となって
76 います. また, 前件文脈 0 から 後件文脈 1 への遷移コストが 10 となっています. 
77 </p>
78
79 <h3>char.def</h3>
80 <p>未知語処理のルールです. <a href="learn.html">こちら</a>を御覧ください.
81 </p>
82
83 <p>以下が最低限の設定 (DEFAULT と SPACE) です</p>
84 <pre>
85 DEFAULT 1 0 0
86 SPACE   0 1 0
87 0x0020 SPACE
88 </pre>
89
90 <h3>unk.def</h3>
91 <p>未知語に対する品詞列のテーブルです. <a href="learn.html">こちら</a>を
92 御覧ください. </p>
93
94 <p>以下が最低限の設定 (DEFAULT と SPACE) です</p>
95 <pre>
96 DEFAULT,0,0,0,*
97 SPACE,0,0,0,*
98 </pre>
99
100
101 <h2>辞書のコンパイル</h2>
102 <p>次のコマンドを実行することで, 解析用のバイナリ辞書を作成します. </p>
103 <pre>
104 % /usr/local/libexec/mecab/mecab-dict-index 
105 </pre>
106
107 </p>
108
109 <h2>ケーススタディ</h2>
110 <p>example ディレクトリにいくつかの応用例があります.</p>
111
112 <h3>Auto Link</h3>
113 <p>Hatena Keyword のような Auto Link を実装してみます</p>
114 <ul>
115 <li>url.csv
116 <p>単語としてキーワード, 品詞としてキーワードに対応する URL を書きます.
117 連接の状態は1状態で十分なので, 左文脈/右文脈IDともに 0 とします. 
118 コスト値は長いキーワードが優先されるよう設定します. 例えば以下のような関数を使うとよいでしょう.</p>
119 <pre>cost = (int)max(-36000, -400 * (length^1.5)) </pre>
120
121 url.csv
122 <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/
127 ...
128 </pre>
129
130 <li>matrix.def
131 <p>1 状態なので, 連接表のサイズは 1 x 1 となります. 
132 後件 0 から前件 0 の連接コストは 0 とします.</p>
133 <pre>
134 1 1
135 0 0 0
136 </pre>
137
138 <li>char.def
139 <p>最低限の設定 (DEFAULT と SPACE) です</p>
140 <pre>
141 DEFAULT 1 0 0
142 SPACE   0 1 0
143 0x0020 SPACE
144 </pre>
145
146 <li>unk.def
147 <p>最低限の設定 (DEFAULT と SPACE) です</p>
148 <pre>
149 DEFAULT,0,0,0,*
150 SPACE,0,0,0,*
151 </pre>
152
153 <li>dicrc
154 <p>autolink というフォーマットを作成し, それがデフォルトの出力になるようにします</p>
155 <pre>
156 cost-factor = 800
157 bos-feature = BOS/EOS
158 output-format-type=autolink
159
160 node-format-autolink = &lt;a href="%H"&gt;%M&lt;/a&gt;
161 unk-format-autolink = %M
162 eos-format-autolink = \n
163 </pre>
164
165 <li>コンパイル + テスト
166 <pre>
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% |###########################################
173 done!
174
175 % mecab -d .
176 京都に行った. 
177 &lt;a href="http://www.city.kyoto.jp/"&gt;京都&lt;/a&gt;に行った。
178 YahooとGoogle
179 &lt;a href="http://www.yahoo.com/"&gt;Yahoo&lt;/a&gt;と&lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt;
180 </pre>
181 </ul>
182
183 <h3>ひらがな to カタカナ変換ツール</h3>
184 <ul>
185 <li>dic.csv
186 <p>単語としてひらがな1文字, 品詞として各ひらがな対応するカタカナ1文字を書きます.
187 連接の状態は1状態で十分なので, 左文脈/右文脈IDともに 0 とします. 
188 曖昧性がないため コスト値は 0 とします</p>
189 <pre>
190 う゛,0,0,0,ヴ
191 あ,0,0,0,ア
192 い,0,0,0,イ
193 う,0,0,0,ウ
194 え,0,0,0,エ
195 お,0,0,0,オ
196 ぁ,0,0,0,ァ
197 ぃ,0,0,0,ィ
198 ぅ,0,0,0,ゥ
199 ぇ,0,0,0,ェ
200 ぉ,0,0,0,ォ
201 か,0,0,0,カ
202 き,0,0,0,キ
203 く,0,0,0,ク
204 け,0,0,0,ケ
205 こ,0,0,0,コ
206 が,0,0,0,ガ
207 ぎ,0,0,0,ギ
208 ぐ,0,0,0,グ
209 げ,0,0,0,ゲ
210 ご,0,0,0,ゴ
211 さ,0,0,0,サ
212 し,0,0,0,シ
213 す,0,0,0,ス
214 せ,0,0,0,セ
215 そ,0,0,0,ソ
216 ざ,0,0,0,ザ
217 じ,0,0,0,ジ
218 ず,0,0,0,ズ
219 ぜ,0,0,0,ゼ
220 ぞ,0,0,0,ゾ
221 た,0,0,0,タ
222 ち,0,0,0,チ
223 つ,0,0,0,ツ
224 て,0,0,0,テ
225 と,0,0,0,ト
226 だ,0,0,0,ダ
227 ぢ,0,0,0,ヂ
228 づ,0,0,0,ヅ
229 で,0,0,0,デ
230 ど,0,0,0,ド
231 っ,0,0,0,ッ
232 な,0,0,0,ナ
233 に,0,0,0,ニ
234 ぬ,0,0,0,ヌ
235 ね,0,0,0,ネ
236 の,0,0,0,ノ
237 は,0,0,0,ハ
238 ひ,0,0,0,ヒ
239 ふ,0,0,0,フ
240 へ,0,0,0,ヘ
241 ほ,0,0,0,ホ
242 ば,0,0,0,バ
243 び,0,0,0,ビ
244 ぶ,0,0,0,ブ
245 べ,0,0,0,ベ
246 ぼ,0,0,0,ボ
247 ぱ,0,0,0,パ
248 ぴ,0,0,0,ピ
249 ぷ,0,0,0,プ
250 ぺ,0,0,0,ペ
251 ぽ,0,0,0,ポ
252 ま,0,0,0,マ
253 み,0,0,0,ミ
254 む,0,0,0,ム
255 め,0,0,0,メ
256 も,0,0,0,モ
257 ゃ,0,0,0,ャ
258 や,0,0,0,ヤ
259 ゅ,0,0,0,ュ
260 ゆ,0,0,0,ユ
261 ょ,0,0,0,ョ
262 よ,0,0,0,ヨ
263 ら,0,0,0,ラ
264 り,0,0,0,リ
265 る,0,0,0,ル
266 れ,0,0,0,レ
267 ろ,0,0,0,ロ
268 ゎ,0,0,0,ヮ
269 わ,0,0,0,ワ
270 ゐ,0,0,0,ヰ
271 ゑ,0,0,0,ヱ
272 を,0,0,0,ヲ
273 ん,0,0,0,ン
274 </pre>
275
276 <li>matrix.def
277 <p>1 状態なので, 連接表のサイズは 1 x 1 となります. 
278 後件 0 から前件 0 の連接コストは 0 とします.</p>
279 <pre>
280 1 1
281 0 0 0
282 </pre>
283
284 <li>char.def
285 <p>最低限の設定 (DEFAULT と SPACE) です</p>
286 <pre>
287 DEFAULT 1 0 0
288 SPACE   0 1 0
289 0x0020 SPACE
290 </pre>
291
292 <li>unk.def
293 <p>最低限の設定 (DEFAULT と SPACE) です</p>
294 <pre>
295 DEFAULT,0,0,0,*
296 SPACE,0,0,0,*
297 </pre>
298
299 <li>dicrc
300 <p>katakana というフォーマットを作成し, それがデフォルトの出力になるよう
301     にします</p>
302 <pre>
303 dictionary-charset = euc-jp
304 cost-factor = 800
305 bos-feature = BOS/EOS
306 output-format-type=katakana
307
308 node-format-katakana = %H
309 unk-format-katakana = %M
310 eos-format-katakana  = \n
311 </pre>
312
313 <li>コンパイル + テスト
314 <pre>
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% |###########################################
321 done!
322 % mecab -d .
323 これはてすとです
324 コレハテストデス
325 </pre>
326 </ul>
327 </body>
328 </html>
329