LoginSignup
6

More than 3 years have passed since last update.

posted at

updated at

KNPでの固有表現抽出モデル生成・テスト

KNPで固有表現抽出モデルを生成し、テストする方法についてまとめます。

インストール方法

KNPのインストール

形態素解析データの生成

$ juman < {平文ファイル} > {出力ファイル}コマンドで、平文から形態素解析データを生成します。

固有表現情報の付加

形態素解析データに、以下のような形式で固有表現情報を付加します。
{元々の形態素解析結果} <NE:{タグ}:{情報}>
(ex.昨夜 さくや 昨夜 名詞 6 時相名詞 10 * 0 * 0 "代表表記:昨夜/さくや カテゴリ:時間" <NE:TIME:S>)

タグ

IREXによる定義 (文字コードがEUC-JPなので注意) に従った、次の8つになります。

  • 固有名詞的表現
内容 タグ
組織名、政府組織名 ORGANIZATION
人名 PERSON
地名 LOCATION
固有物名 ARTIFACT
  • 時間表現
内容 タグ
日付表現 DATE
時間表現 TIME
  • 数値表現
内容 タグ
金額表現 MONEY
割合表現 PERCENT

情報

内容 情報 英称
単独で固有表現を形成している単語 S Single
固有表現を形成している最初の単語 B Begin
固有表現を形成している途中の単語 I Inside
固有表現を形成している最後の単語 E End

※英称については、あくまで語呂合わせ程度に捉えておいてください。

注意点

  • OPTIONALタグを付加しない
    IREXによる定義にはOPTIONALというタグが定義されていますが、このタグは使用できないため、付加してはいけません。
  • EOSが連続しないようにする
    元となる形態素解析データでは、EOS(行末)が連続していることがありますが、余分なEOSは除去しなければなりません。
  • 改行やタブといった形態素を取り除く
    元となる形態素解析データでは、改行やタブも以下のように形態素として出力されていますが、これは除去しなければなりません。
    ※下のデータを見てもわかりづらいかと思いますが、{改行} {改行} {改行} 未定義語 15 その他 1 * 0 * 0 NILという形になっています。



 未定義語 15 その他 1 * 0 * 0 NIL

学習用データ生成

$ knp -ne-train < {固有表現情報付き形態素解析データ} 2> {出力ファイル}コマンドで学習用データを生成します。
※標準エラー出力をファイルに出力する (エラーが発生しても端末上に表示されない) ため、出力ファイルにエラーメッセージが出力されていないか確認するようにしてください。

学習

$ crf_learn -f 2 {KNPの解凍先ディレクトリ}/knp-4.16/crf/template {学習用データ} {出力ファイル}コマンドで固有表現抽出モデルの学習を行います。
※処理がかなり重くなるので、できるだけ他のソフトウェアを終了させてから行うようにしましょう。

テスト

  1. /usr/local/etc/knprcのバックアップをとります。
  2. /usr/local/etc/knprcNEモデルファイルにモデルファイルのパスを指定します。
  3. $ juman < {テストデータ} | knp -simple -dpnd-fastコマンドで生成したモデルのテストを行います。
  4. /usr/local/etc/knprcを元に戻します。

参考文献

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6