Skip to content
LennMars edited this page Feb 15, 2013 · 9 revisions

はじめに

MedNLP_Baselineは医療文書から重要な情報を抽出するためのスクリプト集です。

主要部分にはCRF(Conditional Random Field)を利用しており、模擬カルテで学習済みのモデルファイルを提供しています。

このスクリプト集はNTCIR-10 医療言語処理(MedNLP)パイロットタスクに伴い作成されました。


インストール

インストールは必要なく、次のものが用意されていればすぐに使うことが出来ます。

必要なもの

  • Perl >= 5.10.1
  • CRF++
  • 学習済みモデルファイル(Here. 訓練データを独自に用意しない場合)

サンプル

sample ディレクトリにlearn(学習)とtest(テスト)の2種類のサンプルが用意してあります。

それぞれ小さいコーパスと短いスクリプトからなり、各種スクリプトの使用方法を把握することが出来ます。

中間結果を読みシステムの改善に役立てるためにはIOBフォーマットの知識が必要です。CoNLL 2000などをご覧ください。

learn

XML形式でタグ付けされたコーパスからCRF++形式の訓練データを生成し、CRF++を使用して学習を行います。

$ cd sample/learn
$ ./learn_sample.sh

次の2つのファイルが生成されます。

  • data.txt: 訓練データ。形式は トークン、品詞、品詞細分類、読み、辞書マッチ、正解タグ(BIO形式) のタブ区切り
  • model_sample: 訓練されたモデルファイル

test

生のテキストにタグ付けを行います。

対象となるsample.txtは単に上のsample.xmlから全てのタグを除いたものです。つまり今解こうとしている問題は正解が分かっているので、出力結果がどこを間違えたかも表示します。

sample/learnで生成したモデルファイルでは貧弱なので学習済みのモデルファイル(上述)を利用します。このファイルはmodelディレクトリに置いてください。

$ cd sample/test
$ ./test_sample.sh

test_sampleディレクトリとその下に4つのファイルが生成されます。

  • feature.txt: CRF++形式のテストデータ。正解タグがない以外はdata.txtと同形式
  • crfout.txt: CRF++の出力結果。
  • crfout.xml: crfout.txtをXML形式に直したもの。
  • cmp.txt: 正解との比較。形式は 文字、正解ファイル中での行数、正解タグ、推定タグ、誤判定フラグ のタブ区切り

各スクリプトの説明

スクリプトは大きく次の3種類に分類されています。それぞれのディレクトリに置かれたREADMEを参照してください。

  • crf_data_gen: 訓練データの生成に関わるもの
  • evaluate: テストの実行と出力結果の評価に関わるもの
  • normalizer: 抽出された情報の正規化を行う(undocumented)
Clone this wiki locally