KyTea

English

京都テキスト解析ツールキット(KyTea、「キューティー」)は、日本語など、単語(または形態素)分割を必要とする言語のための一般的なテキスト解析器です。

特徴

KyTeaには以下の機能が揃っています:

線形SVMやロジスティック回帰などを用いてそれぞれの分割点や読みを個別に推定するため、部分的にアノテーションされたデータを利用してモデルを学習することも可能です。 分類器の学習にはLIBLINEARを使用しています。 学習法の詳しい説明についてはこちらをご覧ください。

また、詳しくは以下の論文をご参照ください。品詞推定に関する話題であればACLの論文、読み推定に関する話題であればLRECの論文を引用していただければ幸いです。

ダウンロード・インストール

ダウンロード

最新のバージョン: KyTea 0.4.0

KyTeaのバージョン0.1.0以降にはソースコードと現代日本語書き言葉均衡コーパス(BCCWJ)やUniDicなどのデータで学習されたモデルが含まれています。

最新コード(未リリース): @github
過去のバージョン: KyTea 0.3.2 KyTea 0.3.1 KyTea 0.3.0 KyTea 0.2.1 KyTea 0.2.0 KyTea 0.1.3 KyTea 0.1.2 KyTea 0.1.1 KyTea 0.1.0 KyTea 0.0.3 KyTea 0.0.2 KyTea 0.0.1

KyTeaのソースコードはApache License Version 2の条件に基づいて頒布されています。 KyTeaと同梱されているモデル、またはKyTeaモデルのページでダウンロード可能なモデルの研究及び商用利用は許可されているものの、事前に許可を得ない限り再分配は禁じられています。

インストール

KyTeaはLinux・Mac OSX・CygWinで動作確認をしています。 インストールをするために、最新版をダウンロードしてから、ファイルを解凍してmakeをします。

tar -xzf kytea-X.X.X.tar.gz
cd kytea-X.X.X
./configure
make
make install
kytea --help

これでヘルプが表示されればプログラムは正しく動作しています。 プログラムの効率やインストール場所を指定するオプションはコンパイル時に指定できます。

プログラム仕様

単語分割・読み推定

KyTeaをインストールしてから、プログラムを実行することで分かち書きされていないテキストを分割し、読みを付与することができます(モデルの文字コードはUTF-8なので、UTF-8以外の文字コードのテキストであれば新たにモデルを学習する必要があります)。 test.rawにベタ書きのテキストがあり、以下のようなコマンドを実行すれば、test.fullに解析結果が出力されます。

kytea < test.raw > test.full

モデル学習

単語分割・読み推定のモデルを構築することはそれほど難しくありません(学習の詳細はこちら)。 まず、以下の形式のコーパスを用意します(単語分割のみを必要とする場合、タグは不要です。また、train-kyteaで「-notag」を指定することもできます):

コーパス/名詞/こーぱす の/助詞/の 文/名詞/ぶん で/助動詞/で す/語尾/す 。/補助記号/。
もう/副詞/もう ひと/名詞/ひと つ/接尾辞/つ の/助詞/の 文/名詞/ぶん で/補助記号/で す/語尾/す 。/補助記号/。

このコーパスはtrain.fullという名前で、test.rawという分かち書きされていないテストデータのファイルがある場合、このようにモデルを学習してテストデータの単語分割・読み推定ができます。

train-kytea -full train.wp -model model.dat
kytea -model model.dat < test.raw > test.full

出力のtest.fullは単語分割され、各単語にタグが付きます。

各プログラムの使い方

kytea

kyteaはモデルを用いて単語分割と読み推定を行います。

解析オプション: 
  -model   使用するモデルファイル
  -nows    単語分割を行わない(-in rawと併用不可)
  -notags  タグ推定を行わない(-in fullと併用不可)
  -notag   n個目のタグを推定しない(-notag 1 なら1個目のタグを推定しない)
  -nounk   未知語の読み推定を行わない
  -unkbeam 未知語の読み推定で利用するビーム幅(デフォルト:50、0は全探索)
入出力オプション: 
  -in      入力の形式(raw/full/part/conf、デフォルトraw)
  -out     出力の形式(full/part/conf、デフォルトfull)
  -tagmax  出力するタグ候補の最大限(デフォルト3、0で全てを出力)
  -deftag  サブワード辞書に存在しない未知語など、タグを与えられない単語のため
           のタグ
  -unktag  辞書に存在しない単語に付与されるタグ
入出力オプション(上級編): 
  -wordbound フルアノテーションの単語境界を表す文字 (" ")
  -tagbound  フル・部分的アノテーションのタグ境界を表す文字 ("/")
  -elembound フル・部分的アノテーションの候補境界を表す文字 ("&")
  -unkbound  部分的アノテーションで「未付与タグ」を表す文字 (" ")
  -skipbound 部分的アノテーションで「付与見送りタグ」を表す文字 ("?")
  -nobound   部分的アノテーションで「単語境界なし」を表す文字 ("-")
  -hasbound  部分的アノテーションで「単語境界あり」を表す文字 ("|")

train-kytea

train-kyteaはKyTeaモデルを学習するためのプログラムです。

入力・出力オプション:
  -encode  入出力の文字コード (utf8/euc/sjis、デフォルト:utf8)
  -full    フルアノテーションの学習データ(複数可)
  -part    部分的にアノテーションの学習データ(複数可)
  -conf    信頼度付きの学習データ(複数可)
  -feat    -featoutで生成された素性ファイル
  -dict    辞書ファイル (複数可)
  -subword サブワード単位の辞書。追加することで未知語の読み推定が有効になる
  -model   モデルファイルの出力先
  -modtext テキスト形式のモデル出力 (デフォルトはバイナリ形式)
  -featout 生成する素性ファイル
モデル学習オプション:
  -nows    単語分割のモデルを学習しない
  -notags  タグ付与モデルを学習しない
  -global  n個目のタグを全体モデルで学習する(品詞推定等に利用)
  -debug   デバッグ情報のレベル(0=なし、1=通常、2=詳細)
モデル学習オプション(上級編):
  -charw   文字素性の窓幅 (デフォルト:3)
  -charn   文字素性のn-gram長 (デフォルト:3)
  -typew   文字タイプ素性の窓幅 (デフォルト:3)
  -typen   文字タイプ素性のn-gram長 (デフォルト:3)
  -dictn   辞書素性の単語帳上限 (デフォルト:4)
  -unkn    未知語モデルのn-gram長 (デフォルト:3)
  -eps     分類器学習の停止条件を調整するε
  -cost    分類器学習のコストハイパーパラメータ
  -bias    分類器の学習でバイアスを用いる (デフォルト:true)
  -solver  分類器の種類 (1=SVM、7=ロジスティック回帰など。デフォルト:1)

開発情報

開発チーム

KyTeaプロジェクトに参加されたい方はkytea@までご連絡ください。

バージョン歴

改良予定

Version 0.4.0 (2012年1月27日)

Version 0.3.2 (2011年8月9日)

Version 0.3.1 (2011年6月17日)

Version 0.3.0 (2011年4月26日)

Version 0.2.1 (2011年1月21日)

Version 0.2.0 (2011年1月6日)

Version 0.1.3 (2010年10月01日)

Version 0.1.2 (2010年08月18日)

Version 0.1.1 (2010年5月11日)

Version 0.1.0 (2010年3月5日)

Version 0.0.3 (2009年11月30日)

Version 0.0.2 (2009年11月16日)

Version 0.0.1 (2009年11月05日)

Last Modified: 2012-01-27 by neubig