RITE-2のJAでは,ドライランデータおよびフォーマルランデータに含まれる文対について,その解析結果も提供します.解析ツールは以下の通りで,共通のXMLフォーマットで提供されます.
各種言語解析器の出力をXMLフォーマットに変換するためのツールです.解析器ごとに2種類のツールがあります.
含意関係認識の基本的なシステムを提供します.機械学習に基づいて分類する手法を採用しており,上記の解析結果を用いることで,サブミット可能なファイルを出力します.基本的な素性(単語の被覆率など)のみが実装されており,ドライランデータに対する交差検定を行うことで手軽に素性開発が行えます.
以下の機能を使うことができます.
日本語はUTF8にて取り扱いますので,UTF8対応のエディタを利用するなどの対応が必要です.特にWindows環境ではご注意ください.
以下のようにファイルなどが置かれていることを想定.
+--作業ディレクトリ(現在の居場所) | +--baseline-2.0 | | +--main.py | | +--src/ | | +--.hg_archival.txt | +--rite2eval-1.1 | | +--data/ | | +--src/ | | +--build.xml | | +--README | | +--rite2eval.jar | +--RITE2_JA_dev_bc.parsed.unidic.xml | +--RITE2_JA_test_bc.parsed.unidic.xml(フォーマルランデータ 後日提供) | +--log(ベースラインツールによって作成される,出力結果の入ったディレクトリ) | | +--cross_test_all.log(ベースラインツールによって作成される,サブミット可能なファイル) | | +--cross_*.f(素性ファイル) | | +--cross_*.model(学習されたモデルファイル) | | +--cross_*_dev.f(交差検定時に学習に用いられれる素性ファイル) | | +--cross_*_test.f(交差検定時にテストに用いられる素性ファイル) | | +--cross_*_test.log(交差検定の各結果,サブミット可能なファイルはこのファイルを集計したもの)
ver2.0からMCタスクにも対応しました。学習対象のデータ中のラベルがYまたはNのみであるときにBC、それ以外ではMCタスクと自動判定します。ユーザが明示的にモードを指定する必要はありません。
ターミナル上で以下のように実行
ターミナル上で以下のように実行
python main.py MODE [options]
プログラムで指定できるオプションの一覧です。このうち、データセットのパスは必ず指定する必要があります。
入力から素性を抽出する処理は src/feature.py の中の関数 getFeature(pair) で行なっています。getFeature は、引数としてPairインスタンス pair を受け取り、返り値として pair の素性をハッシュテーブルで返す関数になっています。返り値のハッシュテーブルは、キーが文字列型で、値が実数型です。解析に用いる素性を変更したい場合には、この関数の内容を編集してください。
文対の情報を表すクラス。
一文の情報を表すクラス。
文節の情報を表すクラス。
形態素の情報を表すクラス。
for tok in pair.text.itertokens(): key = 'bow_text(%s)' % tok.attr['orig'] feat[key] = 1.0
for chk in pair.text.chunks: nouns = [] for tok in chk.toks: if tok.attr['pos'] == '名詞': nouns.append(tok.attr['surf']) if len(nouns) > 1: key = 'nns(%s)' % ','.join(nouns) feat[key] = 1.0 else: del nouns[:]
preds_t = set((tok.attr['orig'] for tok in pair.text.itertokens() if bool(tok.pred))) preds_h = set((tok.attr['orig'] for tok in pair.hypo.itertokens() if bool(tok.pred))) for pred in (preds_t & preds_h): key = 'co_pred(%s)' % pred feat[key] = 1.0
各サブタスクについて,システムの出力を評価するツールを提供しています.
ダウンロード後,展開して,以下のように使います.
$ java -jar rite2eval.jar -g data/sample_mc_g.xml -s data/sample_mc_s.txt
data/sample_mc_s.txtは含意関係認識システムによって出力されるファイルで,以下のようにサブミット可能な形式です.
1 I 1.0 2 I 1.0 3 B 1.0 ...
評価結果は以下のように,関係ごとの精度,再現率,F値の他に,全体の正解率とマクロF値およびコンフュージョンマトリックスが出力されます.
------------------------------------------------------------ |Label| #| Precision| Recall| F1| | C| 1| 0.00( 0/ 0)| 0.00( 0/ 1)| 0.00| | B| 3|100.00( 2/ 2)| 66.67( 2/ 3)| 80.00| | F| 1| 0.00( 0/ 2)| 0.00( 0/ 1)| 0.00| | I| 5| 66.67( 4/ 6)| 80.00( 4/ 5)| 72.73| ------------------------------------------------------------ Accuracy: 60.00( 6/ 10) Macro F1: 38.18 Confusion Matrix ----------------------------- |gold \ sys| C B F I| ----------------------------- | C| 0 0 0 1| | B| 0 2 1 0| | F| 0 0 0 1| | I| 0 0 1 4| -----------------------------
システム出力として,配布データと同じXML形式を利用することもできます.
$ java -jar rite2eval.jar -x -g data/sample_mc_g.xml -s data/sample_mc_s.xml
本ツールのオプションは以下のとおりです.
$ java -jar rite2eval.jar [options] -g [gold-data] -s [system-output-file] -t system-output-file is a tab-delimited or space-delimited format -x system-output-file is a rite xml format (default)
システム出力のフォーマットが正しいかどうかを確認する場合は、以下のコマンドを実行します。
$ java -jar rite2eval.jar -s [system-output-file]
正しい場合は、
The format of this file is valid.
と表示されます。
Unittestデータ評価時には、Unittestデータに含まれる言語現象のカテゴリごとの評価結果が出力されます。
大学入試サブタスクは、含意関係ラベルの精度に加えて、試験の正答率も評価します。
ダウンロード後、展開して、以下のように使います。
$ python rite2examscore.py -g RITE2_JA_dev_exam.ans -s sample_exam_run.txt
RITE2_JA_dev_exam.ans は試験問題の正答表です。sample_exam_run.txt は含意関係認識システムによって出力されるファイルで、以下のようにサブミット可能な形式です。
1 Y 0.8 2 N 0.6 3 Y 1.0 ...
評価結果は、以下のように、まず各科目ごとの正答率と正答数が表示され、その後、各設問の結果が表示されます。JA, JB, MS, PE, WA, WB は、それぞれ日本史A、日本史B、現代社会、政治・経済、世界史A、世界史Bです。
===== SUMMARY ===== JA2009: 0.285714 (4/14) JB2009: 0.312500 (5/16) MS2009: 0.173913 (4/23) PE2009: 0.291667 (7/24) WA2009: 0.200000 (5/25) WB2009: 0.266667 (8/30) TOTAL: 0.250000 (33/132) ===== EVALUATION RESULTS ===== JA2009 ID: EVAL GLD/SYS TYPE GOLD LABELS SYSTEM LABELS 5: WRONG 1/4 choose-Y 1=Y,2=N,3=N,4=N 1=Y(0.456869),2=Y(0.554831),3=Y(0.599073),4=Y(0.695192) 9: WRONG 9/11 choose-Y 8=N,9=Y,10=N,11=N 8=N(0.856898),9=N(0.844198),10=N(0.190628),11=Y(0.253200) ...
RITE2オーガナイザ: ntc10-rite2-organizers (at) cs.cmu.edu