جرب IDE عبر الإنترنت!
يساعدك Chatito على إنشاء مجموعات بيانات للتدريب والتحقق من صحة نماذج chatbot باستخدام DSL بسيط.
إذا كنت تقوم ببناء روبوتات الدردشة باستخدام نماذج تجارية، أو أطر عمل مفتوحة المصدر، أو كتابة نموذج معالجة اللغة الطبيعية الخاص بك، فأنت بحاجة إلى أمثلة للتدريب والاختبار. شاتيتو هنا لمساعدتك.
يحتوي هذا المشروع على:
بيئة تطوير متكاملة للدردشة عبر الإنترنت
مواصفات شاتيتو DSL
محلل DSL AST بتنسيق pegjs
تم تنفيذ المولد في حزمة typescript + npm
للحصول على مواصفات اللغة الكاملة والوثائق، يرجى الرجوع إلى مستند مواصفات DSL.
التجهيز الزائد هو مشكلة يمكن منعها إذا استخدمنا Chatito بشكل صحيح. الفكرة وراء هذه الأداة هي وجود تقاطع بين زيادة البيانات ووصف مجموعات الجمل المحتملة. ليس المقصود منه إنشاء مجموعات بيانات حتمية قد تتداخل مع نموذج جملة واحدة، في تلك الحالات، يمكنك الحصول على بعض التحكم في مسارات التوليد فقط عن طريق سحب العينات كما هو مطلوب.
يسلط بناء جملة Visual Studio Code الضوء على البرنامج المساعد، شكرًا ليوري جولوبوكوف على عمله في هذا الشأن.
مخططات الذكاء الاصطناعي: كيفية بناء ونشر مشاريع أعمال الذكاء الاصطناعي تنفذ أمثلة عملية كاملة لبرامج الدردشة باستخدام chatito في الفصل 7.
3 خطوات لتحويل بيانات تدريب chatbot بين موفري البرمجة اللغوية العصبية المختلفين تفاصيل طريقة بسيطة لتحويل تنسيق البيانات إلى محولات غير منفذة. يمكنك استخدام مجموعة البيانات التي تم إنشاؤها مع موفري الخدمة مثل DialogFlow وWit.ai وWatson.
Aida-nlp هي مكتبة صغيرة تجريبية للتعلم العميق في البرمجة اللغوية العصبية (NLP) لتصنيف النصوص وNER. تم تصميمه باستخدام Tensorflow.js وKeras وChatito. تم تنفيذها في JS وPython.
اللغة مستقلة عن تنسيق الإخراج الذي تم إنشاؤه ولأن كل نموذج يمكن أن يتلقى معلمات وإعدادات مختلفة، فهذه هي تنسيقات البيانات المطبقة حاليًا، إذا لم يكن مزود الخدمة الخاص بك مدرجًا، ففي قسم الأدوات والموارد يوجد المزيد من المعلومات حول كيفية دعم المزيد التنسيقات.
ملاحظة: لا يتم تبديل العينات بين الأغراض لتسهيل المراجعة ولأن بعض المحولات تقوم بدفق العينات مباشرة إلى الملف ويوصى بتقسيم الأغراض في ملفات مختلفة لتسهيل المراجعة والصيانة.
Rasa هو إطار عمل مفتوح المصدر للتعلم الآلي للنص الآلي والمحادثات الصوتية. فهم الرسائل وإجراء المحادثات والاتصال بقنوات المراسلة وواجهات برمجة التطبيقات. بإمكان Chatito مساعدتك في إنشاء مجموعة بيانات لمكون Rasa NLU.
أحد السلوكيات المحددة لمحول Rasa هو أنه عندما تحتوي جملة تعريف الفتحة على اسم مستعار واحد فقط، ويقوم هذا الاسم المستعار بتعريف وسيطة "المرادف" بـ "صحيح"، فإن مجموعة بيانات Rasa التي تم إنشاؤها ستقوم بتعيين الاسم المستعار كمرادف. على سبيل المثال:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
في هذا المثال، ستحتوي مجموعة بيانات Rasa التي تم إنشاؤها على مرادفات entity_synonyms
synonym 1
والمرادف synonym 2
لتعيين some slot synonyms
.
الذوق إطار عمل بسيط جدًا للبرمجة اللغوية العصبية (NLP) الحديثة. تم تطويره بواسطة زالاندو للأبحاث. فهو يوفر أحدث التقنيات (GPT، وBERT، وRoBERTa، وXLNet، وELMo، وما إلى ذلك...) للتضمينات المدربة مسبقًا للعديد من اللغات التي تعمل خارج الصندوق. يدعم هذا المحول مجموعة بيانات text classification
بتنسيق FastText ومجموعة بيانات named entity recognition
في عمودين من الكلمات المشروحة في BIO، كما هو موثق في وثائق مجموعة Flair. يعد تنسيقا البيانات هذا شائعين جدًا لدى العديد من مقدمي الخدمة أو النماذج الأخرى.
تتطلب مجموعة بيانات NER معالجة ترميز الكلمات التي تتم حاليًا باستخدام أداة ترميز بسيطة.
ملاحظة: محول Flair متاح فقط لحزمة NodeJS NPM CLI، وليس لـ IDE.
يعد LUIS جزءًا من خدمات Microsoft المعرفية. يدعم Chatito تدريب نموذج LUIS NLU من خلال نقطة نهاية العبارات المُصنفة الخاصة به، وواجهة برمجة تطبيقات اختبار الدُفعات الخاصة به.
لتدريب نموذج LUIS، ستحتاج إلى نشر الكلام على دفعات إلى واجهة برمجة التطبيقات (API) ذات الصلة للتدريب أو الاختبار.
المسألة المرجعية: رقم 61
Snips NLU هو إطار عمل رائع آخر مفتوح المصدر لـ NLU. أحد السلوكيات المحددة لمحول Snips هو أنه يمكنك تحديد أنواع الكيانات للفتحات. على سبيل المثال:
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
في المثال السابق، سيتم وضع علامة على جميع قيم @[date]
بعلامة كيان snips/datetime
.
استخدم التنسيق الافتراضي إذا كنت تخطط لتدريب نموذج مخصص أو إذا كنت تكتب محولًا مخصصًا. هذا هو التنسيق الأكثر مرونة لأنه يمكنك وضع تعليقات توضيحية على Slots
Intents
باستخدام وسيطات الكيانات المخصصة، وستكون جميعها موجودة في المخرجات التي تم إنشاؤها، لذلك، على سبيل المثال، يمكنك أيضًا تضمين منطق إنشاء الحوار/الاستجابة مع DSL. على سبيل المثال:
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
ستكون الكيانات المخصصة مثل "السياق" و"المطلوب" و"النوع" متاحة في المخرجات حتى تتمكن من التعامل مع هذه الوسائط المخصصة كما تريد.
يدعم Chatito Node.js >= v8.11
.
تثبيته باستخدام الغزل أو npm:
npm i chatito --save
ثم قم بإنشاء ملف تعريف (على سبيل المثال: trainClimateBot.chatito
) باستخدام الكود الخاص بك.
قم بتشغيل مولد npm:
npx chatito trainClimateBot.chatito
يجب أن تكون مجموعة البيانات التي تم إنشاؤها متاحة بجوار ملف التعريف الخاص بك.
فيما يلي خيارات مولد npm الكاملة:
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
مسار <pathToFileOrDirectory>
إلى ملف .chatito
أو دليل يحتوي على ملفات chatito. إذا كان دليلاً، فسيتم البحث بشكل متكرر عن جميع ملفات *.chatito
بداخله واستخدامها لإنشاء مجموعة البيانات. على سبيل المثال: lightsChange.chatito
أو ./chatitoFilesFolder
<format>
اختياري. default
، rasa
، luis
، flair
أو snips
.
<formatOptions>
اختياري. المسار إلى ملف .json الذي يمكن لكل محول استخدامه بشكل اختياري
<outputPath>
اختياري. الدليل الذي سيتم حفظ مجموعات البيانات التي تم إنشاؤها فيها. يستخدم الدليل الحالي كإعداد افتراضي.
<trainingFileName>
اختياري. اسم ملف مجموعة بيانات التدريب الذي تم إنشاؤه. لا تنس إضافة امتداد .json في النهاية. يستخدم <format>
_dataset_training.json كاسم ملف افتراضي.
<testingFileName>
اختياري. اسم ملف مجموعة بيانات الاختبار الذي تم إنشاؤه. لا تنس إضافة امتداد .json في النهاية. يستخدم <format>
_dataset_testing.json كاسم ملف افتراضي.
<defaultDistribution>
اختياري. التوزيع التكراري الافتراضي إذا لم يتم تحديده على مستوى الكيان. الإعدادات الافتراضية إلى regular
ويمكن ضبطها على even
.
<autoAliases>
اختياري. السلوك المولد عند العثور على اسم مستعار غير محدد. الخيارات الصالحة هي allow
warn
restrict
. الافتراضي هو "السماح".
رودريجو بيمنتل
sr.rodrigopv[at]gmail