هذا المشروع عبارة عن تطبيق pytorch لنموذج MMI-anti الموصوف في وظيفة موضوعية لتعزيز التنوع لنماذج المحادثة العصبية
يعتمد هذا الرمز على OpenNMT-py وword_language_model
python preprocess.py
سنعمل مع بعض البيانات النموذجية في data/
المجلد. تتكون البيانات من سياق الحوار الموازي ( .en
) وبيانات استجابته ( .vi
) التي تحتوي على جملة واحدة في كل سطر مع رموز مفصولة بمسافة:
train.en
train.vi
dev.en
dev.vi
بعد تشغيل المعالجة المسبقة، يتم إنشاء الملفات التالية في مجلد data/
:
dialogue.train.1.pt
: ملف PyTorch متسلسل يحتوي على بيانات التدريبdialogue.valid.1.pt
: ملف PyTorch المتسلسل الذي يحتوي على بيانات التحقق من الصحةdialogue.vocab.pt
: ملف PyTorch متسلسل يحتوي على بيانات المفردات، والتي سيتم استخدامها في عملية التدريب على نموذج اللغة. cd lm/tool/
في هذه الخطوة، سنقوم بتدريب نموذج لغة بناءً على استجابات نموذج MMI-anti (مثال data/*.vi
). نظرًا لأنه سيتم استخدام نموذج اللغة هذا في نموذج MMI-anti، فسوف يشارك القاموس ( data/*.vocab.pt
) الذي تم إنشاؤه في Step1
.
python preprocess.py
ستحول هذه المعالجة المسبقة جميع الاستجابات لنموذج MMI-anti (مثال data/*.vi
) إلى بيانات متوازية لنموذج اللغة.
بعد تشغيل المعالجة المسبقة، يتم إنشاء الملفات التالية في المجلد lm/data/
:
train.en
train.de
dev.en
dev.de
على سبيل المثال، ستتم معالجة الاستجابة "they just want a story"
في الملف data/train.vi
مسبقًا إلى "<s> they just want a story"
في الملف lm/data/train.en
و "they just want a story </s>"
في الملف lm/data/train.de
.
cd ../
python lm.py
سيحفظ أمر القطار هذا نموذج اللغة في lm/model.pt
.
لتشغيل هذا الرمز على وحدة المعالجة المركزية، تحتاج إلى تحديث pytorch الخاص بك إلى أي إصدار بعد 24th Feb 2018
والتأكد من إمكانية العثور على هذا الجزء من الكود في torchtext/data/iterator.py
:
if not torch.cuda.is_available() and self.device is None:
self.device = -1
python generate.py
ستقوم هذه الأداة بتوليد 1000 عبارة بشكل عشوائي باستخدام نموذج اللغة lm/model.pt
وحفظها في ملف lm/generated.txt
.
cd ../
python train.py
python translate.py -model model_name
سيتم حفظ نتائج التوليد في ملف pred.txt
.
cat pred.txt | python diversity.py