-
Notifications
You must be signed in to change notification settings - Fork 216
/
dic.html
190 lines (167 loc) · 8.96 KB
/
dic.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MeCab: 単語の追加方法</title>
<link type="text/css" rel="stylesheet" href="mecab.css">
</head>
<body>
<h1>単語の追加方法</h1>
<h2>概要</h2>
<p>辞書への単語追加には, 二つの方法があります. </p>
<ul>
<li>システム辞書への追加
<li>ユーザ辞書への追加
</ul>
<h2>システム辞書への追加</h2>
<p>
辞書更新が頻繁でないときや, 解析速度を落としたくない時は, 直接
システム辞書を変更するのがよいでしょう.
</p>
<ul>
<li>mecab-ipadic があるディレクトリに移動
<li> foo.csv というファイルを作成 (拡張子が .csv なら何でも可)
<li> foo.csv に単語を追加
<li>辞書の再コンパイル + インストール
<pre>
% /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -t euc-jp
% su
# make install
</pre>
<ul>
<li>-f charset: CSVの文字コード
<li>-t charset: バイナリ辞書の文字コード
</ul>
<p>例: utf-8の辞書を作成する例</p>
<pre>% /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -t utf8</pre>
</ul>
<h2>ユーザ辞書への追加</h2>
<p>
システム辞書の更新は時間がかかります. 辞書の更新が頻繁な場合や,
システム辞書を変更する権限が無い場合は, ユーザ辞書を作るのがいいでしょう. </p>
<ul>
<li>適当なディレクトリに移動 (例: /home/foo/bar)
<li>foo.csv というファイルを作成
<li>foo.csv に単語を追加
<li>辞書のコンパイル
<pre>% /usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic \
-u foo.dic -f euc-jp -t euc-jp foo.csv</pre>
<ul>
<li>-d DIR: システム辞書があるディレクトリ
<li>-u FILE: FILE というユーザファイルを作成
<li>-f charset: CSVの文字コード
<li>-t charset: バイナリ辞書の文字コード
</ul>
<li> /home/foo/bar/foo.dic ができていることを確認
<li>/usr/local/lib/mecab/dic/ipadic/dicrc もしくは
/usr/local/etc/mecabrc に以下を追加
<pre>
userdic = /home/foo/bar/foo.dic
</pre>
<li>/usr/local/etc/mecabrc を編集する権限が無い場合は
/usr/local/etc/mecabrc を ~/.mecabrc にコピーし, 上記のエントリを追加
<li>userdic はCSVフォーマットデ複数指定可能
<pre>
userdic = /home/foo/bar/foo.dic,/home/foo/bar2/usr.dic,/home/foo/bar3/bar.dic
</pre>
</ul>
<h2>エントリのフォーマット (活用しない語)</h2>
<p>システム辞書, ユーザ辞書, ともにエントリのフォーマットは同一です. </p>
<p>エントリは, 以下のような CSV で追加します.
名詞などの活用しない語だと, 登録は簡単です.</p>
<pre>
工藤,1223,1223,6058,名詞,固有名詞,人名,名,*,*,くどう,クドウ,クドウ
</pre>
<p>左から,</p>
<pre>
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音
</pre>
<p>です. </p>
<p>左文脈IDは, その単語を左から見たときの内部状態IDです. 通常システム
辞書と同一場所にある left-id.def から該当する ID を選択します. 空にしておくと
mecab-dict-index が自動的に ID を付与します.
</p>
<p>右文脈IDは, その単語を右から見たときの内部状態IDです. 通常システム
辞書と同一場所にある right-id.def から該当する ID を選択します.
空にしておくと, mecab-dict-index が自動的に ID を付与します.
</p>
<p>
コストは,その単語がどれだけ出現しやすいかを示しています.
小さいほど, 出現しやすいという意味になります.
似たような単語と 同じスコアを割り振り, その単位で切り出せない場合は,
徐々に小さくしていけばいいと思います.
</p>
<p>さらに,
自分の好きな情報をCSVが許す範囲で追加してもかまいません.</p>
<pre>
ユーザ設定,,,10,名詞,一般,*,*,*,*,ユーザ設定,ユーザセッテイ,ユーザセッテイ,追加エントリ
</pre>
<pre>
動作例:
% mecab
ユーザ設定が必要です。
ユーザ設定 名詞,一般,*,*,*,*,ユーザ設定,ユーザセッテイ,ユーザセッテイ,追加エントリ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
必要 名詞,形容動詞語幹,*,*,*,*,必要,ヒツヨウ,ヒツヨー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
EOS
</pre>
<h2>エントリのフォーマット (活用する語)</h2>
<p>活用する語は,
自分で活用語展開しなければならないので, 面倒です.
以下は, 「いそがしい」 という言葉を,
すべて活用語展開した場合です.</p>
<pre>
いそがしい,120,120,6078,形容詞,自立,*,*,形容詞・イ段,基本形,いそがしい,イソガシイ,イソガシイ
いそがし,128,128,6080,形容詞,自立,*,*,形容詞・イ段,文語基本形,いそがしい,イソガシ,イソガシ
いそがしから,136,136,6079,形容詞,自立,*,*,形容詞・イ段,未然ヌ接続,いそがしい,イソガシカラ,イソガシカラ
いそがしかろ,132,132,6079,形容詞,自立,*,*,形容詞・イ段,未然ウ接続,いそがしい,イソガシカロ,イソガシカロ
いそがしかっ,148,148,6078,形容詞,自立,*,*,形容詞・イ段,連用タ接続,いそがしい,イソガシカッ,イソガシカッ
いそがしく,152,152,6078,形容詞,自立,*,*,形容詞・イ段,連用テ接続,いそがしい,イソガシク,イソガシク
いそがしくっ,152,152,6079,形容詞,自立,*,*,形容詞・イ段,連用テ接続,いそがしい,イソガシクッ,イソガシクッ
いそがしゅう,144,144,6079,形容詞,自立,*,*,形容詞・イ段,連用ゴザイ接続,いそがしい,イソガシュウ,イソガシュウ
いそがしゅぅ,144,144,6079,形容詞,自立,*,*,形容詞・イ段,連用ゴザイ接続,いそがしい,イソガシュゥ,イソガシュゥ
いそがしき,124,124,6079,形容詞,自立,*,*,形容詞・イ段,体言接続,いそがしい,イソガシキ,イソガシキ
いそがしけれ,108,108,6079,形容詞,自立,*,*,形容詞・イ段,仮定形,いそがしい,イソガシケレ,イソガシケレ
いそがしかれ,140,140,6079,形容詞,自立,*,*,形容詞・イ段,命令e,いそがしい,イソガシカレ,イソガシカレ
いそがしけりゃ,112,112,6079,形容詞,自立,*,*,形容詞・イ段,仮定縮約1,いそがしい,イソガシケリャ,イソガシケリャ
いそがしきゃ,116,116,6079,形容詞,自立,*,*,形容詞・イ段,仮定縮約2,いそがしい,イソガシキャ,イソガシキャ
いそがし,104,104,6080,形容詞,自立,*,*,形容詞・イ段,ガル接続,いそがしい,イソガシ,イソガシ
</pre>
<p>chasen は, grammar.cha cforms.char
に文法を記述していれば, 解析中に活用
展開を行ないます. これを動的活用展開と呼びます.
よって, chasen では,
原形(基本形)のみを追加すればよいです.</p>
<p>一方, mecab は, 解析中に展開するのをやめ,
辞書作成時に静的に展開するとい
う方針(静的活用展開)をとっています.
この理由は, 計算機のスピードやリソースといった問題に
絡んでいます. chasen が開発された当初は,
メモリやディスクに制限があり,
静的に展開するのが困難でした. 一方, 最近は,
メモリやディスクに余裕がある ために,
静的に展開するほうが,
全体的な解析スピードが向上します.</p>
<p>将来的には,
文法から静的展開を行なえるような枠組にしたいと考えています.
しかし, 現状では,
活用展開をユーザに任せています.</p>
<h2>コストの自動推定機能</h2>
<p>
学習時に出力されたモデルファイルがあれば, 新規単語のコスト値を自動推定することができます.
mecab-ipadicのモデルファイルは<a href="https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7bnc5aFZSTE9qNnM">こちら</a>よりダウンロード可能です.
(bzip2で圧縮されているため, 適宜解凍してください.) 自動推定を行なう場合は, -m オプションでモデルファイルを指定し, コストのCSVフィールドを空にします. 空以外の値が設定されると, その値が優先されます.
</p>
<pre>% /usr/local/libexec/mecab/mecab-dict-index -m model_file -d/usr/local/lib/mecab/dic/ipadic \
-u foo.dic -f euc-jp -t euc-jp foo.csv</pre>
<p>
-a オプションを用いて, コスト値や文脈IDが空のCSVファイルに対し, 自動的にそれらを埋めて新しいCSVを作成することができます. 以下の例では foo.csv から foo2.csv を生成しています.
</p>
<pre>
% /usr/local/libexec/mecab/mecab-dict-index -m model_file -d/usr/local/lib/mecab/dic/ipadic \
-u foo2.csv -f euc-jp -t euc-jp -a foo.csv</pre>
</body>
</html>