Dieser Zweig verwendet neue TF.Contrib.Seq2seq -APIs in TensorFlow R1.1. Für Benutzer von R1.0 überprüfen Sie die Filiale TF1.0 bitte
Dies ist eine Implementierung des Sequenz-zu-Sequenz-Modells unter Verwendung eines bidirektionalen Gru-Encoders und eines Gru-Decoders. Dieses Projekt soll Menschen dabei helfen, sofort an der Zusammenfassung der kurzen Texte zu arbeiten. Und hoffentlich kann es auch bei maschinellen Übersetzungsaufgaben funktionieren.
Bitte überprüfen Sie Harvardnlp/Sent-Summary.
Herunterladen
Wenn Sie das Modell trainieren und NVIDIA-GPUs (wie GTX 1080, GTX Titan usw.) haben möchten, setzen Sie bitte die CUDA-Umgebung ein und installieren Sie TensorFlow-GPU.
> pip3 install -U tensorflow-gpu==1.1
Sie können überprüfen, ob die GPU von funktioniert
> python3
>>> import tensorflow
>>>
und stellen Sie sicher, dass keine Fehlerausgänge vorhanden sind.
Wenn Sie keine GPU haben, können Sie die vorbereiteten Modelle weiterhin verwenden und mit Ihrer CPU Zusammenfassungen erstellen.
> pip3 install -U tensorflow==1.1
Dateien sollten so organisiert werden.

Bitte finden Sie diese Dateien in der Harvardnlp/Sent-Summen und benennen Sie sie um
duc2003/input.txt -> test.duc2003.txt
duc2004/input.txt -> test.duc2004.txt
Giga/input.txt -> test.giga.txt
> python3 script/train.py kann die unten gezeigten Experimente reproduzieren.
Auf diese Weise trainieren es zuerst 200K -Chargen. Erzeugen Sie dann auf [giga, duc2003, duc2004] mit Beam_Size in [1, 10] alle 20k -Chargen. Es endet bei 300.000 Chargen. Außerdem wird das Modell alle 20.000 Chargen gespeichert.

> python3 script/test.py verwendet automatisch das am meisten aktualisierte Modell, um die Generierung zu erzeugen.

Um angepasste Tests durchzuführen, geben Sie bitte Eingabedaten als ein
data/test.your_test_name.txt
Ändern Sie script/test.py Zeile 13-14 von
datasets = ["giga", "duc2003", "duc2004"]
geneos = [True, False, False]
Zu
datasets = ["your_test_name"]
geneos = [True]
Für fortgeschrittene Benutzer kann python3 src/summarization.py -h Hilfe drucken. Bitte überprüfen Sie den Code für Details.
In TensorFlow R0.11 und früher wird die Verwendung von Eimer empfohlen. R1.0 bietet ein dynamisches RNN SEQ2SEQ -Framework, das viel einfacher zu verstehen ist als der knifflige Eimermechanismus.
Wir verwenden dynamisches RNN, um Rechendiagramme zu generieren. In unserem Implemention gibt es nur ein Computerdiagramm. Wir teilen den Datensatz jedoch weiterhin in mehrere Eimer auf und verwenden Daten aus demselben Eimer, um eine Charge zu erstellen. Auf diese Weise können wir weniger Polster hinzufügen, was zu einer besseren Effizienz führt.
Der Aufmerksamkeitsmechanismus folgt Bahdanau et. al.
Wir folgen der Implementierung in TF.Contrib.Seq2Seq. Wir verfeinern die Softmax -Funktion bei Aufmerksamkeit, damit Paddings immer 0 erhalten.
Einfachheit und Flexibilität implementieren wir den Strahlsuchalgorithmus in Python, während wir den Netzwerkteil im Tensorflow belassen. Beim Testen betrachten wir Batch_Size als Beam_Size. Das TensorFlow -Diagramm generiert nur 1 Wort, dann erstellt ein Python -Code eine neue Stapel gemäß dem Ergebnis. Durch iterativ wird ein Strahl -Suchergebnis generiert.
Überprüfen Sie step_beam(...) in bigru_model.py für Details.
Wir trainieren das Modell für 300K -Stapel mit Stapelgröße 80. Wir kleben alle Zusammenfassungen auf 75 Bytes. Für Duc -Datensätze eliminieren wir EOs und generieren 12 Wörter. Für den Giga -Datensatz lassen wir das Modell zum Generieren von EOs.

| Datensatz | Strahlgröße | 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 |
| Giga | 1 | 0,3185 | 0,38779 | 0,3391 | 0,14542 | 0,17537 | 0,15393 | 0,29925 | 0,363 | 0,3181 |
| Giga | 10 | 0,30179 | 0,41224 | 0,33635 | 0,14378 | 0,1951 | 0,15936 | 0,28447 | 0,38733 | 0,31664 |