KyTea の最も大きな利点の1つは分野適応が簡単であることです。特に、部分的アノテーション(後述)を使った分野適応は有用です。従来手法では、辞書に単語を追加する以外には、フルアノテーションコーパスを準備する必要がありました。フルアノテーションコーパスは、
この 時期 の 中心 人物 は 、 風穴 延昭 で あ る 。
のように、全ての単語境界に空白を入れ、単語境界のないところに空白を入れないことで、すべての文字間の境界情報をアノテーションします。しかし、この文の中で、「風穴」以外、ほとんどの単語境界は自明であり、アノテーションする必要はないため、時間の無駄が生じます。その代わり、部分的アノテーションでは、以下のように「風穴」のところだけをアノテーションすることができます。
こ の 時 期 の 中 心 人 物 は 、|風-穴|延 昭 で あ る 。
ここで、縦棒「|」は「単語境界あり」、横棒「-」は「単語境界なし」を意味し、空白は「単語境界の有無はアノテーションされていない」ことを意味します。これにより、アノテーションが分野適応に有用な箇所のみに集中することがでます。KyTea はこのような言語資源から学習することができるので、効率的なアノテーションを実現することができます。
KyTeaの分野適応を行うためにまず、利用するスクリプトの最新版を以下のリンクからダウンロードしてください。
最新のバージョン: KyTeaの分野適応ツールキット v. 1.1
アノテーション作業を開始する前に以下の準備をしてください。テキストファイルのエンコードはすべて UTF-8 にしてください。
KYTEA=$PATH_TO_KYTEA_BIN/kytea TRAIN=$PATH_TO_KYTEA_BIN/train-kyteaなお、kytea [Enter] で動作する場合には、デフォルトのままでよいです。
GEN_CORPORA="-full data/BCCWJ.word"配布時には Creative Commons License の基に再配布可能なWikipedia データを入れていますが、非常に少量であり、自動解析結果を人手で簡単に修正しただけなので、単語の分割境界情報は100%信頼できるとは言えなません。このため、手元に利用可能な言語資源があれば、それで置き換えることをおすすめします。特に、日本語書き言葉均衡コーパス(BCCWJ) は様々な分野のテキストに対して非常に精度の高いアノテーションを行ってあるため、KyTea の学習に適しています。
GEN_DICTS="-dict data/dict-1.txt -dict data/dict-2.txt"ここで 注意すべき点はいくつかあります。1つ目は、UniDic などの単語コーパスの単語分割基準に合った網羅的な辞書があれば、単語分割の精度がない場合に比べて非常に高くなります。手に入れば利用をおすすめします。また、従来の形態素解析と違って、辞書は必ずしもコーパスの単語分割基準に沿っていなくても精度は落ちません。分野内の複合語の辞書を利用すればさらなる精度向上が実現可能となります。ただし、2つの異なる辞書を利用する場合、1つのファイルとしてではなく、以上の例のように個別に読み込むほうが精度が高くなります。
準備ができたら実際のアノテーションに移ります。以下の3ステップを数十回繰り返すと、適応分野における分割精度はかなり上がります。
[user@machine]$ ./makemodel.shこの結果得られる work/XXX.mod (XXX は数字)が、各繰り返し時点でのKyTea のモデルファイルです。つまり、最も大きい数字のファイルが最良のモデルです。言語資源の量によりますが、おおよそ5分ぐらいかかります。
[user@machine]$ ./saveannot.sh「Double boundary ' |' at XXX」のようなエラーが起こった場合は XXX 行目にアノテーションの形式が誤っている(具体的には、空白を消さずに単語境界「|」を入れている)ので、 アノテーションファイルを直して、もう一度./saveannot.shを直してください。この後 1) に戻ります。
アノテーションが終わったら、部分的アノテーションされたコーパスはsave/XXX.wannとして保存されます。新たにKyTeaを学習する場合、"-part save/XXX.wann"のオプションを指定すると、部分的アノテーションされた資源を利用してモデルを学習することができます。
KyTeaホームに戻る
Last Modified: 2011-2-16 by neubig