مرحبا بالجميع! نحن نفتح سلسلة من المقالات المكرسة لحل المشكلات العملية المتعلقة بمعالجة اللغة الطبيعية (أو فقط البرمجة اللغوية العصبية) وإنشاء وكلاء تفاعليين (برامج الدردشة) باستخدام مكتبة المصادر المفتوحة
DeepPavlov ، التي طورها فريقنا من مختبر النظم العصبية والتعلم العميق MIPT. الهدف الرئيسي من هذه الدورة هو التعرف على دائرة واسعة من المطورين مع DeepPavlov وإظهار كيف يمكن حل مشاكل البرمجة اللغوية العصبية التطبيقية دون معرفة عميقة في التعلم الآلي والدكتوراه في الرياضيات.
تتضمن مهام البرمجة اللغوية العصبية تحديد درجة اللونية للنص ، وتحليل الكيانات المسماة ، وتحديد ما يريده الشخص الآخر من روبوتك: طلب البيتزا أو الحصول على معلومات المساعدة وأكثر من ذلك بكثير. يمكنك قراءة المزيد حول مهام وأساليب البرمجة اللغوية العصبية
هنا .
في هذه المقالة ، سنعرض لك كيفية تشغيل REST North مع نماذج NLP المدربة مسبقًا جاهزة للاستخدام دون أي تكوين أو تدريب إضافي.
جميع مقالات الدورة:
1.
DeepPavlov للمطورين: # 1 أدوات البرمجة اللغوية العصبية وإنشاء روبوتات الدردشة2.
DeepPavlov للمطورين: # 2 الإعداد والنشر
تثبيت DeepPavlov
فيما يلي ، سيتم إعطاء تعليمات Linux. لنظام التشغيل Windows ، راجع
الوثائق الخاصة بنا
.تشغيل خادم REST مع نموذج DeepPavlov
قبل إطلاق الخادم مع نموذج DeepPavlov لأول مرة ، سيكون من المفيد التحدث عن بعض ميزات بنية المكتبة.
أي نموذج في موانئ دبي يتكون من:
- كود بايثون
- المكونات القابلة للتنزيل - نتائج التعلم المتسلسلة على بيانات محددة (الأعراس ، أوزان الشبكات العصبية ، إلخ) ؛
- ملف التكوين (يشار إليه فيما يلي باسم التكوين) ، والذي يحتوي على معلومات حول الفئات المستخدمة من قبل النموذج ، وعناوين URL للمكونات التي تم تنزيلها ، وتبعيات Python ، وأكثر من ذلك.
سنخبركم أكثر حول ما هو تحت غطاء جهاز DeepPavlov في المقالات التالية ، في الوقت الحالي نحتاج فقط إلى معرفة ما يلي:
- يتم تحديد أي نموذج في DeepPavlov بواسطة اسم التكوين الخاص به ؛
- لتشغيل النموذج ، تحتاج إلى تنزيل مكوناته من خوادم DeepPavlov ؛
- أيضًا ، لتشغيل النموذج ، يجب عليك تثبيت مكتبات Python التي تستخدمها.
سيكون النموذج الأول الذي سنطلقه هو التعرف على الكيانات المسماة (NER) متعدد اللغات. يصنف النموذج الكلمات النصية وفقًا لنوع الكيانات المسماة التي تنتمي إليها (الأسماء الصحيحة والأسماء الجغرافية وأسماء العملات وغيرها). اسم التكوين للإصدار الأحدث من NER:
ner_ontonotes_bert_mult
نبدأ خادم REST مع النموذج:
- تثبيت تبعيات النموذج المحددة في التكوين الخاص به في البيئة الافتراضية النشطة:
python -m deeppavlov install ner_ontonotes_bert_mult
- قم بتنزيل مكونات النموذج المسلسل من خوادم DeepPavlov:
python -m deeppavlov download ner_ontonotes_bert_mult
سيتم تنزيل المكونات المتسلسلة إلى دليل DeepPavlov الرئيسي ، والذي يوجد افتراضيًا ~/.deeppavlov
عند التنزيل ، يتم التحقق من تجزئة المكونات التي تم تنزيلها بالفعل مقابل تجزئة المكونات الموجودة على الخادم. في حالة وجود تطابق ، يتم تخطي التنزيل واستخدام الملفات الموجودة. يمكن أن تختلف أحجام المكونات التي تم تنزيلها في المتوسط من 0.5 إلى 8 جيجابايت ، وفي بعض الحالات تصل إلى 20 جيجابايت بعد فك الضغط. - نبدأ خادم REST مع النموذج:
python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
نتيجة لهذا الأمر ، سيتم إطلاق خادم REST مع نموذج على منفذ 5005 من الجهاز المضيف (المنفذ الافتراضي هو 5000).
بعد تهيئة النموذج ، يمكن العثور على
http://127.0.0.1:5005
مع وثائق واجهة برمجة التطبيقات والقدرة على الاختبار على عنوان URL http:
http://127.0.0.1:5005
. سنختبر النموذج من خلال إرساله إلى نقطة النهاية http: //127.0.0.1►005/model POST request مع محتوى JSON التالي:
{ "x": [ " .", " - 15 " ] }
استجابة لذلك ، يجب أن نحصل على هذا JSON:
[ [ ["", "", "", "", "", "", "", "", "", "."], ["O", "B-FAC", "O", "O", "O", "O", "O", "B-FAC", "I-FAC", "O"] ], [ ["", "", "-", "", "", "", "", "", "", "15", ""], ["O", "B-LOC", "I-LOC", "I-LOC", "I-LOC", "O", "O", "O", "O", "B-MONEY", "I-MONEY"] ] ]
لهذه الأمثلة ، سنقوم بتحليل REST API DeepPavlov.
API DeepPavlov
يحتوي كل طراز DeepPavlov على وسيطة إدخال واحدة على الأقل. في واجهة برمجة تطبيقات REST ، تتم تسمية الوسائط ، وأسمائها هي مفاتيح القاموس الوارد. في معظم الحالات ، تكون الوسيطة هي النص الذي يجب معالجته. يمكنك معرفة المزيد حول الوسائط والقيم التي تم إرجاعها بواسطة النماذج في قسم MODELS في وثائق
DeepPavlov.في المثال ، تم تمرير قائمة من سطرين إلى الوسيطة x ، تم إعطاء كل منها علامة منفصلة. في DeepPavlov ، تقبل جميع الموديلات قائمة (مجموعة) من القيم التي يتم معالجتها بشكل مستقل كمدخلات.
يشير المصطلح "دُفعة" إلى مجال التعلم الآلي ويشير إلى مجموعة من قيم المدخلات المستقلة التي تتم معالجتها بواسطة خوارزمية أو شبكة عصبية في نفس الوقت. تتيح لك هذه الطريقة تقليل وقت معالجة النموذج لعنصر واحد من الدُفعة (كثيرًا - بشكل ملحوظ) مقارنةً بنفس القيمة المنقولة إلى المدخلات بشكل منفصل. ولكن نتيجة المعالجة تصدر فقط بعد معالجة جميع العناصر. لذلك ، عند تشكيل الدُفعة الواردة ، سيكون من الضروري مراعاة سرعة النموذج ووقت المعالجة المطلوب لكل عنصر من عناصره الفردية.
في حالة وجود العديد من الوسائط لنموذج DeepPavlov ، يكون لكل منها مجموعة قيمها الخاصة ، وفي الإخراج ، يعطي النموذج دائمًا مجموعة إجابات واحدة. عناصر الدُفعات الصادرة هي نتائج معالجة عناصر الدُفعات الواردة بنفس الفهرس.
في المثال أعلاه ، كانت نتيجة النموذج هي تقسيم كل سطر إلى الرموز (الكلمات وعلامات الترقيم) وتصنيف الرمز المميز بالنسبة للكيان المحدد (اسم المنظمة ، العملة) التي يمثلها. في الوقت الحالي ، يكون نموذج
ner_ontonotes_bert_mult قادرًا على التعرف على 18 نوعًا من الكيانات المسماة ، ويمكن العثور على وصف مفصل
هنا .
موديلات أخرى من خارج الصندوق من DeepPavlov
بالإضافة إلى NER في DeepPavlov ، تتوفر الطرز الجاهزة في وقت كتابة هذا التقرير:
الرد على سؤال النص
إجابة السؤال على النص جزء من هذا النص. نموذج
التكوين :
squad_ru_bert_inferطلب مثال:
{ "context_raw": [ "DeepPavlov .", " - 15 ." ], "question_raw": [ " DeepPavlov?", " ?" ] }
النتيجة:
[ [" ", 27, 31042.484375], ["15 ", 39, 1049.598876953125] ]
كشف الاهانة
تحديد وجود الإهانة للشخص الذي يتم توجيه النص إليه (في وقت كتابة هذا التقرير ، فقط للغة الإنجليزية). نموذج التكوين: insults_kaggle_conv_bert
طلب مثال:
{ "x": [ "Money talks, bullshit walks.", "You are not the brightest one." ] }
النتيجة:
[ ["Not Insult"], ["Insult"] ]
تحليل المشاعر
تصنيف الدرجة اللونية للنص (إيجابي ، محايد ، سلبي). نموذج
التكوين :
rusentiment_elmo_twitter_cnnطلب مثال:
{ "x": [ " DeepPavlov.", " DeepPavlov.", " ." ] }
النتيجة:
[ ["positive"], ["neutral"], ["negative"] ]
اكتشاف إعادة الصياغة
تحديد ما إذا كان هناك نصان مختلفان لهما نفس المعنى. نموذج
التكوين :
stand_paraphraser_ruالاستعلام:
{ "text_a": [ " , .", " ." ], "text_b": [ " , , .", " ." ] }
النتيجة:
[ [1], [0] ]
يمكن دائمًا العثور على القائمة الحالية لجميع طرز DeepPavlov الجاهزة.
استنتاج
في هذه المقالة ، قدمنا واجهة برمجة تطبيقات DeepPavlov وبعض إمكانيات معالجة النصوص في المكتبة المتوفرة من خارج الصندوق. يجب أن يؤخذ في الاعتبار أنه بالنسبة لأية مهمة في البرمجة اللغوية العصبية (NLP) ، سيتم تحقيق أفضل نتيجة عند تدريب النموذج على مجموعة بيانات تتوافق مع مجال الموضوع (مجال) المهمة. بالإضافة إلى ذلك ، لا يمكن تدريب المزيد من النماذج من حيث المبدأ لجميع المناسبات.
في المقالات التالية ، سننظر في إعدادات مكتبة إضافية ، ونطلق DeepPavlov من Docker ، وبعد ذلك سننتقل إلى نماذج التدريس. ولا تنس أن DeepPavlov لديه
منتدى - اطرح أسئلتك بخصوص المكتبة والموديلات. شكرا لاهتمامكم!