Cette branche utilise les nouvelles API TF.Contrib.Seq2Seq dans TensorFlow R1.1. Pour les utilisateurs R1.0, veuillez vérifier la branche TF1.0
Il s'agit d'une implémentation du modèle de séquence à la séquence à l'aide d'un encodeur GRU bidirectionnel et d'un décodeur GRU. Ce projet vise à aider les gens à commencer à travailler immédiatement sur une résumé de texte court abstrait immédiatement. Et j'espère que cela pourrait également fonctionner sur les tâches de traduction automatique.
Veuillez vérifier HarvardNLP / Send-Summary.
Télécharger
Si vous souhaitez former le modèle et avoir des GPU NVIDIA (comme GTX 1080, GTX Titan, etc.), veuillez configurer l'environnement CUDA et installer TensorFlow-GPU.
> pip3 install -U tensorflow-gpu==1.1
Vous pouvez vérifier si le GPU fonctionne par
> python3
>>> import tensorflow
>>>
et assurez-vous qu'il n'y a pas de sorties d'erreur.
Si vous n'avez pas de GPU, vous pouvez toujours utiliser les modèles pré-entraînés et générer des résumés en utilisant votre CPU.
> pip3 install -U tensorflow==1.1
Les fichiers doivent être organisés comme celui-ci.

Veuillez trouver ces fichiers dans le HarvardNLP / Send-Summary et les renommer comme
duc2003/input.txt -> test.duc2003.txt
duc2004/input.txt -> test.duc2004.txt
Giga/input.txt -> test.giga.txt
> python3 script/train.py peut reproduire les expériences illustrées ci-dessous.
Ce faisant, il entraînera d'abord 200 000 lots. Ensuite, faites la génération sur [giga, duc2003, duc2004] avec Beam_Size dans [1, 10] respectivement tous les lots de 20 000 lots. Il se terminera à 300 000 lots. De plus, le modèle sera enregistré tous les lots de 20 000.

> python3 script/test.py utilisera automatiquement le modèle le plus mis à jour pour faire la génération.

Pour effectuer un test personnalisé, veuillez mettre des données d'entrée en tant que
data/test.your_test_name.txt
Changer script/test.py Line 13-14 de
datasets = ["giga", "duc2003", "duc2004"]
geneos = [True, False, False]
à
datasets = ["your_test_name"]
geneos = [True]
Pour les utilisateurs avancés, python3 src/summarization.py -h peut imprimer l'aide. Veuillez vérifier le code pour plus de détails.
Dans TensorFlow R0.11 et plus tôt, l'utilisation d'un seau est recommandée. R1.0 fournit un cadre dynamique RNN SEQ2SEQ qui est beaucoup plus facile à comprendre que le mécanisme de seau délicat.
Nous utilisons Dynamic RNN pour générer un graphique de calcul. Il n'y a qu'un seul graphique informatique dans notre implémentation. Cependant, nous divisons toujours l'ensemble de données en plusieurs seaux et utilisons des données du même seau pour créer un lot. Ce faisant, nous pouvons ajouter moins de rembourrage, conduisant à une meilleure efficacité.
Le mécanisme d'attention suit Bahdanau et. al.
Nous suivons l'implémentation dans tf.contrib.seq2seq. Nous affinons la fonction Softmax en attention afin que les paddages obtiennent toujours 0.
Pour plus de simplicité et de flexibilité, nous implémentons l'algorithme de recherche de faisceau dans Python tout en laissant la partie réseau dans TensorFlow. Dans les tests, nous considérons Batch_Size comme Beam_Size. Le graphique TensorFlow ne générera qu'un seul mot, puis un code Python créera un nouveau lot en fonction du résultat. Ce faisant de manière itérative, le résultat de recherche de faisceau est généré.
Vérifiez step_beam(...) dans bigru_model.py pour plus de détails.
Nous formons le modèle pour les lots de 300k avec une taille de lot 80. Nous coupons tous les résumés à 75 octets. Pour les ensembles de données DUC, nous éliminons les EOS et générons 12 mots. Pour l'ensemble de données GIGA, nous avons laissé le modèle générer des EOS.

| Ensemble de données | Taille de faisceau | 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 |