このリポジトリには、次のように説明されているディープSRLモデルをトレーニングおよび使用するためのコードが含まれています:ディープセマンティックロールラベル付け:何が機能し、次は何ですか
コードを使用する場合は、次のように論文を引用してください。
@inproceedings {he2017deep、
title = {ディープセマンティックロールラベル:何が機能し、次に何があるか}、
著者= {彼、ルーヘンとリー、ケントンとルイス、マイクとゼットルモイヤー、ルーク}、
booktitle = {計算言語学会協会の年次総会の議事録}、
年= {2017}
}
./scripts/fetch_required_data.shneural_srlディレクトリの下でモデル(リソース内)を解凍します。たとえば、コードベースディレクトリの下に:
tar -zxvf resources/conll05_model.tar.gz
これが前処理されたモデルのリストです:
conll05_model.tar.gz :conll-2005データセットでトレーニングされた単一モデル。conll05_ensemble.tar.gz :5モデルアンサンブルConll-2005データセットでトレーニングされています。conll05_propid_model.tar.gz :CONLL-2005の述語識別モデルトレイン。conll2012_model.tar.gz :conll-2012データセットでトレーニングされた単一モデル。conll2012_ensemble.tar.gz :5モデルアンサンブルは、conll-2012データセットでトレーニングされています。conll2012_propid_model.tar.gz :CONLL-2012の述語識別モデルトレイン。 python python/interactive.py --model conll05_model/ --pidmodel conll05_propid_model
走る:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out (cpu)または:
./scripts/run_end2end.sh sample_data/sentences_with_predicates.txt temp/sample.out ${gpu_id} (gpu)
スクリプトは/usr/local/cuda/... PATH and CUDA_LD_LIBRARY_PATHに追加され、cuda_ld_library_pathに追加され、 ./conll05_propid_modelおよび./conll05_ensembleからの前処理モデルをロードすることに注意してください。独自のセットアップに従って構成を調整してください。
入力ファイルには、行ごとに1文のトークン化された文が含まれています。
出力ファイルには次のようなものが含まれます。
ジョンはパットに木を切り落とすように言った。
述語:伝えられた(1)
A0:ジョン
V:教えた
A2:パット
A1:ツリーを切り取る
ジョンはパットに木を切り落とすように言った。
述語:カット(4)
A0:パット
V:カットオフ
A1:ツリー
predict.py入力ファイル全体をメモリにロードするため、各ファイルの文の数を50,000未満に保つ方が良いでしょう。 CONLL-2005およびCONLL-2012データセットで結果を複製するには、以下の手順に従ってください。
データは次のように提供されます:CONLL-2005共有タスクですが、元の単語は、公開されていないPenn TreeBankデータセットからのものです。 PTBコーパスをお持ちの場合は、実行できます。
./scripts/fetch_and_make_conll05_data.sh /path/to/ptb/
CONLL-2012 Data Conll-2012を取得するには、以下の指示に従う必要があります。これにより、 /path/to/conll-formatted-ontonotes-5.0 to/conll-formatted-ontonotes-5.0というディレクトリが表示されます。走る:
./scripts/make_conll2012_data.sh /path/to/conll-formatted-ontonotes-5.0
python/train.pyの使用法を参照してください:
python python/predict.py -h
または、クイックスタートとして、訓練されたモデルを実行します(conll05_ensembleが必要です):
./scripts/run_predict_conll05.sh ${gpu_id}または:
./scripts/run_predict_conll05.sh cpuで実行するための。
予測されたモデルエンドツーエンドを実行します(conll05_ensembleとconll05_propid_modelが必要です):
./scripts/run_end_to_end_conll05.sh ${gpu_id}
CONLL-2012モデルの実行も同様に機能します。
python/train.pyの使用法を参照してください:
python python/train.py -h
事前定義された構成ファイルでSRLモデル(ゴールドの述語を使用)をトレーニング: ./scripts/run_train.sh ${gpu_id}
述語識別子をトレーニングする: ./scripts/run_propid_train.sh ${gpu_id}
トレーニング時に、 train.py FAST_RUNモデルで実行され、モデルコンパイルの大きなオーバーヘッドが発生することに注意してください。 2層モデルでは最大数分かかり、バリエーションドロップアウトを備えた8層モデルでは最大8時間かかる場合があります。
モデル入力をフォーマットする方法については、 sample_dataのファイルと以下の説明を参照してください。
各行には、述語情報(文のインデックス、0からのインデックス)、トークン化された文、およびタグのシーケンスがある正確に1つのトレーニングサンプルが含まれています。ゴールドタグが存在しない場合は、OSのシーケンスを使用してください。文とタグシーケンスは、|||で分離されますシンボル。 IOB2形式を使用します。すべてのトークンとシンボルは、任意の空白によって分離されています。
例の例:
2私の猫は帽子が大好きです。 ||| B-A0 I-A0 BV B-A1 o
この形式は、各行が入力文に対応しており、述語情報が提供されていないことを除いて、上記の定義と類似しています。前のものはVタグに対応し、他のすべての単語はOタグでラベル付けされます。
例の例:
私の猫は帽子が大好きです、と彼らは言います。 ||| oovooovo
config propid_config.json SRLモデル( srl_config.jsonおよびsrl_small_config.json )をトレーニングするためのいくつかの構成ファイルが含まれています。
ご質問がある場合は、Luhengに連絡してください!