このレポは、剪定された依存性ツリー上の紙グラフの畳み込みのためのPytorchコードが含まれています。
このペーパー/コードでは、関係抽出のタスクのために、剪定された依存性ツリー上にグラフ畳み込みニューラルネットワーク(GCN)を導入します。パス中心の剪定と呼ばれる特別な木剪定技術も、関連情報を最大限に維持しながら、木からの無関係な情報を排除するために導入されています。さまざまなLSTMベースのモデルなどのシーケンスモデルと比較して、このGCNモデルは依存関係構造を利用してリモートワードを橋渡しするため、長距離関係のパフォーマンスを改善します。 TreeLSTMなどの以前の再帰モデルと比較して、このGCNモデルはより良いパフォーマンスを実現しながら、並列化するためにはるかに効率的であるため、より効率的です。
モデルアーキテクチャの概要については、以下を参照してください。

コードでは、TACREDデータセット(LDCライセンスが必要)にアクセスできることが必要です。 TACREDデータセットは現在、2018年12月にLDCを介して公開される予定です。このデータへの早期アクセスの可能性についてはyuhao.zhang ~at~ stanford.eduにお問い合わせください。 TACREDデータを取得したら、JSONファイルをディレクトリdataset/tacredの下に配置してください。完全性については、このリポジトリのTACREDデータセットのサンプルデータファイルのみを含めます。
まず、スタンフォードNLPグループWebサイトからグローブベクターをダウンロードして解除します。
chmod +x download.sh; ./download.sh
次に、次のような語彙と初期の単語ベクトルを準備します。
python prepare_vocab.py dataset/tacred dataset/vocab --glove_dir dataset/glove
これにより、語彙と単語ベクトルがdir dataset/vocabにnumpyマトリックスとして記述されます。
グラフ畳み込みニューラルネットワーク(GCN)モデルをトレーニングするには、実行します。
bash train_gcn.sh 0
モデルチェックポイントとログは./saved_models/00に保存されます。
コンテキスト化されたGCN(C-GCN)モデルをトレーニングするには、実行します。
bash train_cgcn.sh 1
モデルチェックポイントとログは./saved_models/01に保存されます。
剪定距離kなどの他のパラメーターの使用の詳細については、 train.pyを参照してください。
テストセットで評価を実行するには、実行してください。
python eval.py saved_models/00 --dataset test
これにより、デフォルトでbest_model.ptファイルが使用されます。 --model checkpoint_epoch_10.ptを使用して、モデルチェックポイントファイルを指定します。
前処理されたモデルをリロードして微調整して、実行してください。
python train.py --load --model_file saved_models/01/best_model.pt --optim sgd --lr 0.001
このペーパーには、関係抽出のための位置認識の注意LSTM(PA-LSTM)モデルとの比較も含まれています。対応する結果を再現するには、このレポを参照してください。
@inproceedings{zhang2018graph,
author = {Zhang, Yuhao and Qi, Peng and Manning, Christopher D.},
booktitle = {Empirical Methods in Natural Language Processing (EMNLP)},
title = {Graph Convolution over Pruned Dependency Trees Improves Relation Extraction},
url = {https://nlp.stanford.edu/pubs/zhang2018graph.pdf},
year = {2018}
}
このパッケージに含まれるすべての作業は、バージョン2.0のApacheライセンスに基づいてライセンスされています。付属のライセンスファイルを参照してください。