このブランチは、Tensorflow R1.1で新しいTF.Contrib.Seq2Seq APIを使用しています。 R1.0ユーザーについては、Branch TF1.0を確認してください
これは、双方向GRUエンコーダーとGRUデコーダーを使用したシーケンスからシーケンスモデルの実装です。このプロジェクトは、人々がすぐに抽象的な短いテキストの要約に取り組み始めるのを支援することを目的としています。そして、うまくいけば、それは機械翻訳タスクでも機能する可能性があります。
harvardnlp/sent-summaryを確認してください。
ダウンロード
モデルをトレーニングし、NVIDIA GPU(GTX 1080、GTXタイタンなど)を使用する場合は、CUDA環境をセットアップしてTensorflow-GPUをインストールしてください。
> pip3 install -U tensorflow-gpu==1.1
GPUが機能するかどうかを確認できます
> python3
>>> import tensorflow
>>>
エラー出力がないことを確認してください。
GPUを持っていない場合でも、前提条件のモデルを使用して、CPUを使用して要約を生成できます。
> pip3 install -U tensorflow==1.1
ファイルはこのように整理する必要があります。

これらのファイルをharvardnlp/sent-summaryに見つけて、それらを変更してください
duc2003/input.txt -> test.duc2003.txt
duc2004/input.txt -> test.duc2004.txt
Giga/input.txt -> test.giga.txt
> python3 script/train.py以下に示す実験を再現できます。
そうすることで、最初に200Kバッチをトレーニングします。次に、 [giga, duc2003, duc2004]でそれぞれ[1, 10]にBeam_sizeを使用して、20Kバッチごとに生成を行います。 300Kバッチで終了します。また、モデルは20kバッチごとに保存されます。

> python3 script/test.py最も更新されたモデルを自動的に使用して生成を行います。

カスタマイズされたテストを行うには、入力データを次のように配置してください
data/test.your_test_name.txt
script/test.py行13-14を変更します
datasets = ["giga", "duc2003", "duc2004"]
geneos = [True, False, False]
に
datasets = ["your_test_name"]
geneos = [True]
上級ユーザーの場合、 python3 src/summarization.py -hヘルプを印刷できます。詳細については、コードを確認してください。
Tensorflow R0.11以前には、バケットを使用することをお勧めします。 R1.0は、トリッキーなバケットメカニズムよりもはるかに理解しやすい動的なRNN SEQ2SEQフレームワークを提供します。
動的RNNを使用して、計算グラフを生成します。実装には1つのコンピューティンググラフのみがあります。ただし、データセットを複数のバケットに分割し、同じバケットからデータを使用してバッチを作成します。そうすることで、パディングを追加することができ、効率が向上します。
注意メカニズムは、Bahdanau et。アル。
tf.contrib.seq2seqの実装に従います。パディングが常に0になるように、SoftMax関数を注意深く調整します。
簡単にし、柔軟性を得るために、ネットワークの部分をTensorflowのままにしながら、PythonにBeam Search Algorithmを実装します。テストでは、batch_sizeをbeam_sizeと見なします。 Tensorflowグラフは1つの単語のみを生成し、その後、一部のPythonコードは結果に応じて新しいバッチを作成します。繰り返しそうすることにより、ビーム検索結果が生成されます。
詳細については、 bigru_model.pyのstep_beam(...)確認してください。
バッチサイズ80で300Kバッチのモデルをトレーニングします。すべての概要を75バイトにクリップします。 DUCデータセットの場合、EOSを排除し、12ワードを生成します。ギガデータセットの場合、モデルにEOSを生成します。

| データセット | ビームサイズ | R1-R | R1-p | R1-F | R2-R | R2-P | R2-F | RL-R | RL-P | rl-f |
|---|---|---|---|---|---|---|---|---|---|---|
| DUC2003 | 1 | 0.25758 | 0.23003 | 0.24235 | 0.07511 | 0.06611 | 0.07009 | 0.22608 | 0.20174 | 0.21262 |
| DUC2003 | 10 | 0.27312 | 0.23864 | 0.25416 | 0.08977 | 0.07732 | 0.08286 | 0.24129 | 0.21074 | 0.22449 |
| DUC2004 | 1 | 0.27584 | 0.25971 | 0.26673 | 0.08328 | 0.07832 | 0.08046 | 0.24253 | 0.22853 | 0.23461 |
| DUC2004 | 10 | 0.28024 | 0.25987 | 0.26889 | 0.09377 | 0.08631 | 0.08959 | 0.24849 | 0.23048 | 0.23844 |
| ギガ | 1 | 0.3185 | 0.38779 | 0.3391 | 0.14542 | 0.17537 | 0.15393 | 0.29925 | 0.363 | 0.3181 |
| ギガ | 10 | 0.30179 | 0.41224 | 0.33635 | 0.14378 | 0.1951 | 0.15936 | 0.28447 | 0.38733 | 0.31664 |