يستخدم هذا الفرع واجهات برمجة تطبيقات tf.contrib.seq2seq جديدة في TensorFlow R1.1. لمستخدمي R1.0 ، يرجى التحقق من الفرع TF1.0
هذا هو تنفيذ نموذج تسلسل إلى تسلسل باستخدام تشفير GRU ثنائي الاتجاه وفتحان GRU. يهدف هذا المشروع إلى مساعدة الأشخاص على بدء العمل على تلخيص النص القصير الجذاب على الفور. ونأمل أن يعمل أيضًا على مهام الترجمة الآلية.
يرجى التحقق من HarvardNLP/Sent-Summary.
تحميل
إذا كنت ترغب في تدريب النموذج ولديك NVIDIA GPUS (مثل GTX 1080 ، GTX TITAN ، إلخ) ، يرجى إعداد بيئة CUDA وتثبيت Tensorflow-GPU.
> pip3 install -U tensorflow-gpu==1.1
يمكنك التحقق مما إذا كان GPU يعمل بواسطة
> python3
>>> import tensorflow
>>>
وتأكد من عدم وجود مخرجات خطأ.
إذا لم يكن لديك وحدة معالجة الرسومات ، فلا يزال بإمكانك استخدام النماذج المسبقة وإنشاء ملخصات باستخدام وحدة المعالجة المركزية الخاصة بك.
> pip3 install -U tensorflow==1.1
يجب تنظيم الملفات مثل هذا.

يرجى العثور على هذه الملفات في HarvardNLP/Sents-Summary وإعادة تسميتها على أنها
duc2003/input.txt -> test.duc2003.txt
duc2004/input.txt -> test.duc2004.txt
Giga/input.txt -> test.giga.txt
> python3 script/train.py يمكن أن يعيد إنتاج التجارب الموضحة أدناه.
من خلال القيام بذلك ، سوف يدرب 200 ألف دفعة أولاً. ثم قم بالتوليد على [giga, duc2003, duc2004] مع Beam_size في [1, 10] على التوالي كل 20 ألف دفعة. سوف ينتهي في 300K دفعة. أيضا ، سيتم حفظ النموذج كل 20 ألف دفعة.

> 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 et. آل.
نتبع التنفيذ في tf.contrib.seq2seq. نقوم بتحسين وظيفة softmax في الانتباه بحيث تحصل الحشوات دائمًا على 0.
من أجل البساطة والمرونة ، نقوم بتنفيذ خوارزمية بحث الشعاع في بيثون بينما اترك جزء الشبكة في TensorFlow. في الاختبار ، نعتبر batch_size كحزم. سيقوم الرسم البياني لـ TensorFlow بإنشاء كلمة واحدة فقط ، ثم ستقوم بعض رمز Python بإنشاء دفعة جديدة وفقًا للنتيجة. من خلال القيام بذلك بشكل متكرر ، يتم إنشاء نتيجة بحث الشعاع.
تحقق من step_beam(...) في bigru_model.py للحصول على التفاصيل.
نقوم بتدريب النموذج على 300 ألف دفعة مع حجم الدُفعة 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 |