*****新しい2018年11月20日:オンラインWebデモが利用可能*****
モデルで自分自身をプレイできるように、オンラインデモ(事前に訓練された重量とともに)をリリースしました。 Webインターフェイスのコードは、 demoフォルダーでも使用できます。
事前に訓練されたモデルをダウンロードするには、Git LFSをインストールし、 git lfs pull実行してください。モデルの重みは、Model_Dumpsフォルダーに保存されます。
セマンティックタスクから埋め込みを学習するための階層的なマルチタスクアプローチ
ビクター・サン、トーマス・ウルフ、セバスチャン・ルーダー
AAAI 2019で受け入れられました

HMTLは、4つの慎重に選択されたセマンティックタスクのセット(つまり、エンティティの認識、エンティティに言及した検出、関係抽出、コアレファレンス解像度)のセットを組み合わせた階層的なマルチタスク学習モデルです。このモデルは、名前付きエンティティ認識、エンティティに言及した検出、および関係抽出に関する最先端の結果を達成します。 Sentevalを使用して、モデルの下から最上層に移動すると、モデルはより複雑なセマンティック表現を学習する傾向があることを示します。
結果の詳細については、私たちの論文を参照してください。
HMTLのトレーニング、微調整、評価のコードをリリースしました。このコードが、独自のマルチタスクモデル(階層的かどうか)を構築するのに役立つことを願っています。コードはPythonで記述され、 Pytorchを搭載しています。
主な依存関係は次のとおりです。
コードはPython 3.6で動作します。依存関係の安定したバージョンは、 requirements.txtにリストされています。
スクリプト./script/machine_setup.shを呼び出すことで、作業環境をすばやくセットアップできます。 Python 3.6をインストールし、クリーンな仮想環境を作成し、必要なすべての依存関係をインストールします( requirements.txtにリストされています)。ニーズに応じてスクリプトを調整してください。
実装をAllENNLPライブラリに基づいています。このライブラリの紹介については、これらのチュートリアルを確認する必要があります。
実験は、 JSON構成ファイルで定義されています(例については、 configs/*.json参照)。構成ファイルは、主にロードするデータセット、モデルのすべてのハイパーパラメーターとともに作成するモデルを記述します。
構成ファイル(および必要に応じてDatasetReadersなどのカスタムクラスを定義したカスタムクラス)を設定したら、次のコマンドと引数を使用してトレーニングを開始できます。
python train.py --config_file_path configs/hmtl_coref_conll.json --serialization_dir my_first_trainingトレーニングが開始されたら、ターミナルでのトレーニングをフォローするか、テンソルボードを開くだけです(テンソルボードとその四面体の依存関係を前に取り付けたことを確認してください):
tensorboard --logdir my_first_training/logSentevalを使用して、モデルで学んだ言語特性を評価しました。 hmtl_senteval.py 、SentevalとHMTLの間にインターフェイスを作成する方法の例を示します。それは、Hiearchyのすべての層(共有ベースの単語埋め込みとエンコーダー)によって学習された言語特性を評価します。
hmtlで使用した事前に訓練された埋め込みをダウンロードするには、スクリプト./script/data_setup.shを起動するだけです。
ライセンスの理由でHMTLをトレーニングするために使用されるデータセットを添付していませんでしたが、Ontonotes 5.0、Conll2003、およびACE2005の収集を自分で収集することを勧めています。構成ファイルは、データセットがdata/フォルダーに配置されることを期待しています。
このリポジトリが役立つ場合は、次の論文を引用することを検討してください。
@article{sanh2018hmtl,
title={A Hierarchical Multi-task Approach for Learning Embeddings from Semantic Tasks},
author={Sanh, Victor and Wolf, Thomas and Ruder, Sebastian},
journal={arXiv preprint arXiv:1811.06031},
year={2018}
}