該分支在Tensorflow R1.1中使用新的TF.Contrib.Seq2Seq API。對於R1.0用戶,請查看分支TF1.0
這是使用雙向GRU編碼器和GRU解碼器的序列到序列模型的實現。該項目旨在幫助人們立即開始進行抽象短文摘要。希望它也可以在機器翻譯任務上使用。
請檢查Harvardnlp/Send-Summary。
下載
如果您想訓練模型並具有NVIDIA GPU(例如GTX 1080,GTX Titan等),請設置CUDA環境並安裝TensorFlow-GPU。
> pip3 install -U tensorflow-gpu==1.1
您可以檢查GPU是否工作
> python3
>>> import tensorflow
>>>
並確保沒有錯誤輸出。
如果您沒有GPU,則仍然可以使用驗證的型號並使用CPU生成摘要。
> pip3 install -U tensorflow==1.1
文件應像這樣組織。

請在Harvardnlp/send-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]中發電,每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生成計算圖。我們的實施中只有一個計算圖。但是,我們仍然將數據集分成幾個存儲桶中,並使用同一存儲桶中的數據來創建批處理。通過這樣做,我們可以添加更少的填充物,從而提高效率。
注意機制遵循Bahdanau等。 al。
我們遵循tf.contrib.seq2seq中的實現。我們在註意力中完善了軟磁性功能,以使槳板始終獲得0。
為了簡單性和靈活性,我們在將網絡部分留在Tensorflow中時,在Python中實現了Beam搜索算法。在測試中,我們將batch_size視為beam_size。 TensorFlow圖將僅生成1個字,那麼一些Python代碼將根據結果創建新批次。通過迭代地這樣做,生成了光束搜索結果。
在bigru_model.py中檢查step_beam(...)以獲取詳細信息。
我們訓練該型號的300K批次,批次尺寸為80。我們將所有摘要夾夾為75個字節。對於DUC數據集,我們消除了EOS並生成12個字。對於GIGA數據集,我們讓模型生成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 |