تم بناء Deepqa على قمة keras. لقد قررنا أن Pytorch هو منصة أفضل لأبحاث NLP. نعيد كتابة Deepqa في مكتبة Pytorch تسمى Allennlp. لن يكون هناك المزيد من التطور في DeepQa. لكننا متحمسون للغاية بشأن Allennlp - إذا كنت تقوم بالتعلم العميق لمعالجة اللغة الطبيعية ، فيجب عليك التحقق من ذلك!
DeepQa هي مكتبة للقيام بمهام NLP عالية المستوى مع التعلم العميق ، والتي تركز بشكل خاص على أنواع مختلفة من الإجابة على الأسئلة. تم تصميم DeepQa على رأس Keras و TensorFlow ، ويمكن اعتباره واجهة لهذه الأنظمة التي تجعل NLP أسهل.
على وجه التحديد ، توفر هذه المكتبة الفوائد التالية على keras / tensorflow العادي:
تم بناء DeepQa باستخدام Python 3. أسهل طريقة لإنشاء بيئة متوافقة هي استخدام الكوندا. سيؤدي ذلك إلى إعداد بيئة افتراضية مع الإصدار الدقيق من Python المستخدم للتطوير جنبًا إلى جنب مع جميع التبعيات اللازمة لتشغيل DeepQA.
تنزيل وتثبيت كوندا.
إنشاء بيئة كوندا مع بيثون 3.
conda create -n deep_qa python=3.5
الآن تفعيل بيئة كوندا.
source activate deep_qa
تثبيت التبعيات المطلوبة.
./scripts/install_requirements.sh
ضبط PYTHONHASHSEED لتجارب قابلة للتكرار.
export PYTHONHASHSEED=2157
يجب أن تكون قادرًا الآن على اختبار التثبيت الخاص بك باستخدام pytest -v . مبروك! لديك الآن بيئة تطوير لـ Deep_QA التي تستخدم TensorFlow مع دعم وحدة المعالجة المركزية. (للحصول على دعم GPU ، راجع المتطلبات. txt للحصول على معلومات حول كيفية تثبيت tensorflow-gpu ).
لتدريب أو تقييم نموذج باستخدام استنساخ من مستودع DeepQA ، فإن نقطة الدخول الموصى بها هي استخدام البرنامج النصي run_model.py . الوسيطة الأولى لهذا البرنامج النصي هي ملف معلمة ، موصوف أكثر أدناه. تحدد الحجة الثانية السلوك ، إما تدريب نموذج أو تقييم نموذج مدرب على مجموعة بيانات الاختبار. الخيارات الصالحة الحالية للوسيطة الثانية هي train test (حذف الوسيطة هو نفس train الممر).
تحدد ملفات المعلمة فئة النموذج التي تستخدمها ، ونماذج النماذج ، وتفاصيل التدريب ، وملفات البيانات ، وتفاصيل مولد البيانات ، والعديد من الأشياء الأخرى. يمكنك رؤية مثال ملفات المعلمة في دليل الأمثلة. يمكنك الحصول على فكرة عن المعلمات المتاحة من خلال النظر في الوثائق.
في الواقع ، سيتطلب تدريب النموذج ملفات إدخال ، والتي تحتاج إلى توفيرها. لدينا مكتبة مصاحبة ، تجارب DeepQA ، والتي تم تصميمها في الأصل لإنتاج ملفات الإدخال وتشغيل التجارب ، ويمكن استخدامها لإنشاء ملفات البيانات المطلوبة لمعظم المهام التي لدينا نماذج لها. ننتقل نحو وضع رمز معالجة البيانات مباشرة إلى DeepQA ، بحيث لا تكون تجارب DeepQA ضرورية ، ولكن في الوقت الحالي ، يتم إجراء ملفات بيانات التدريب بالتنسيق الصحيح بسهولة مع تجارب DeepQA.
إذا كنت تستخدم DeepQA كمكتبة في الكود الخاص بك ، فلا يزال من السهل تشغيل النموذج الخاص بك. بدلاً من استخدام البرنامج النصي run_model.py للقيام بالتدريب/التقييم ، يمكنك القيام بذلك بنفسك على النحو التالي:
from deep_qa import run_model, evaluate_model, load_model, score_dataset
# Train a model given a json specification
run_model("/path/to/json/parameter/file")
# Load a model given a json specification
loaded_model = load_model("/path/to/json/parameter/file")
# Do some more exciting things with your model here!
# Get predictions from a pre-trained model on some test data specified in the json parameters.
predictions = score_dataset("/path/to/json/parameter/file")
# Compute your own metrics, or do beam search, or whatever you want with the predictions here.
# Compute Keras' metrics on a test dataset, using a pre-trained model.
evaluate_model("/path/to/json/parameter/file", ["/path/to/data/file"])
ما تبقى من إرشادات الاستخدام ، والأمثلة ، وما إلى ذلك ، هي نفسها عند العمل في استنساخ من المستودع.
لتنفيذ نموذج جديد في DeepQA ، تحتاج إلى TextTrainer من الفئة الفرعية. هناك وثائق حول ما هو ضروري لهذا الغرض ؛ انظر على وجه الخصوص قسم الأساليب التجريدية. للحصول على مثال بسيط لنموذج يعمل بكامل طاقته ، راجع tagger التسلسل البسيط ، الذي يحتوي على حوالي 20 سطرًا من رمز التنفيذ الفعلي.
من أجل تدريب النماذج وتحميلها وتقييمها التي كتبتها بنفسك ، قم ببساطة بتمرير وسيطة إضافية إلى الوظائف أعلاه وإزالة معلمة model_class من مواصفات JSON الخاصة بك. على سبيل المثال:
from deep_qa import run_model
from .local_project import MyGreatModel
# Train a model given a json specification (without a "model_class" attribute).
run_model("/path/to/json/parameter/file", model_class=MyGreatModel)
إذا كنت تقوم بمهمة جديدة ، أو متغيرًا جديدًا لمهمة مع مواصفات إدخال/إخراج مختلفة ، فربما تحتاج أيضًا إلى تنفيذ نوع Instance . يتولى Instance قراءة البيانات من ملف وتحويلها إلى صفائف numpy التي يمكن استخدامها للتدريب والتقييم. يجب أن يحدث هذا مرة واحدة فقط لكل مواصفات الإدخال/الإخراج.
لدى DeepQA تطبيقات على أحدث الأساليب لمجموعة متنوعة من المهام. إليكم عدد قليل منهم:
يتيح هذا الرمز تجربة سهلة مع مجموعات البيانات التالية:
لاحظ أن رمز معالجة البيانات لمعظم هذا يعيش حاليًا في تجارب DeepQA.
إذا استخدمت هذا الرمز واعتقدت أن هناك شيئًا ما قد يتم تحسينه ، فالطلب موضع ترحيب للغاية. فتح مشكلة على ما يرام أيضًا ، ولكن يمكننا الاستجابة بسرعة أكبر لسحب الطلبات.
يتم إصدار هذا الرمز بموجب شروط ترخيص Apache 2.