自然言語処理
Kytea

KyTeaについてまとめます。

KyTeaとは

文章の単語分割等を行うことができるテキスト解析器です。
デフォルトでは文章の単語分割, 品詞推定, 読み推定ができるようになっていますが、学習データの素性次第で様々なタスクを行わせることができます。

インストール方法

Ubuntuの場合はUbuntu 18.04 LTSにKyTeaをインストールする方法 - Qiitaに従ってインストールします。

基本

解析

以下の文章を解析するとします。

input.txt
本日は晴天なり。
麻生太郎はコーヒーを買って飲んだ。

このとき、解析は以下のようなコマンドで行います。

$ kytea < input.txt 
本日/名詞/ほんじつ は/助詞/は 晴天/名詞/せいてん な/助動詞/な り/語尾/り 。/補助記号/。
麻生/名詞/あそう 太郎/名詞/たろう は/助詞/は コーヒー/名詞/こーひー を/助詞/を 買/動詞/か っ/語尾/っ て/助詞/て 飲/動詞/の ん/語尾/ん だ/助動詞/だ 。/補助記号/。

解析結果の行は元の文章の行と一致しており、各形態素の情報は以下のように表示されます。

表層/品詞/読み

※タグが付与できなかった箇所にはUNKタグが付与されます。

学習

学習データ

各形態素の素性は以下のように付与します。

表層/素性1/素性2/....../素性n

なお、どういったタグを付与するのが適切か分からない場合には、その素性の箇所のみ空欄とすることも可能です。
※タグが付与されないことが分かっている場合には、空欄にするのではなく、タグが付与されないことを示すタグを付与するようにしてください。

以上のことを留意した上で、解析結果と同様のフォーマットで作成します。

モデル

KyTeaでは以下の2種類のモデルがあり、素性ごとにどちらのモデルを適用するかを指定することができます。

  • 個別タグ付与モデル
    形態素ごとにモデルを作成する
    (読み推定, 語義曖昧性解消等の各単語のタグ同士に明らかな相関がなかったり、タグの数が大きかったりするタスクに向いている)
    ※このモデルを適用する場合、語尾が異なる動詞が異なるモデルとして作成されないよう、動詞の語幹と語尾を分割することをおすすめします。
  • 全体タグ付与モデル
    文章全体で1つのモデルを作成する
    (品詞推定, 固有表現抽出等の単語が異なっていてもタグの傾向に明らかな相関があるタスクに向いている)

学習

ベースとなるコマンドは以下になります。

$ train-kytea -full {学習データ} -model {出力先のモデル}

全体タグ付与モデルを適用したい素性については以下のオプションで指定します (指定しなかった素性には個別タグ付与モデルが適用されます)。

-global {何番目の素性か(1起点)}

なお、このオプションは複数回用いることが可能なので、複数の素性について全体タグ付与モデルを適用することができます。

テスト

  • 平文をテストデータとする場合
$ kytea -model {モデル} < {テストデータ}
  • タグを付与したい素性のみを空欄とした、学習データと同様のフォーマットのデータをテストデータとする場合
$ kytea -model {モデル} -in full < {テストデータ}

参考文献