نص الدردشة

ChatScript هو نظام يجمع بين محرك معالجة اللغة الطبيعية ونظام إدارة الحوار ، وقد صُمم في البداية لإنشاء روبوتات الدردشة ، ولكنه يُستخدم حاليًا أيضًا في مختلف أشكال معالجة اللغة الطبيعية . وهو مكتوب بلغة C++ . يُعدّ المحرك مشروعًا مفتوح المصدر على منصتي SourceForge [ 1 ] و GitHub [ 2 ] .

كتب بروس ويلكوكس برنامج ChatScript وأصدره في الأصل عام 2011، بعد أن فازت سوزيت (المكتوبة بلغة ChatScript) بجائزة لوبنر لعام 2010 ، حيث خدعت أحد الحكام الأربعة من البشر. [ 3 ]

سمات

بشكل عام، يهدف ChatScript إلى كتابة البرامج النصية بإيجاز شديد، لأن قابلية التوسع المحدودة لبرامج الدردشة الآلية المكتوبة يدويًا هي مقدار/سرعة كتابة البرنامج النصي.

بما أن برنامج ChatScript مصمم للمحادثات التفاعلية، فإنه يحتفظ تلقائيًا بحالة المستخدم بين كل مجموعة من الجمل. وتُعرف المجموعة بأنها أي عدد من الجمل التي يُدخلها المستخدم في وقت واحد ويستجيب لها برنامج الدردشة الآلي.

العنصر الأساسي في البرمجة النصية هو القاعدة. تتكون القاعدة من نوع، وعلامة (اختيارية)، ونمط، ومخرجات. هناك ثلاثة أنواع من القواعد: القواعد التمهيدية، وهي ما قد يقوله برنامج الدردشة الآلي عندما يكون متحكمًا في المحادثة؛ والقواعد الردية، وهي قواعد تستجيب لتعليق المستخدم المرتبط بما قاله برنامج الدردشة الآلي؛ والقواعد المستجيبة، وهي قواعد تستجيب لمدخلات المستخدم العشوائية غير المرتبطة بالضرورة بما قاله برنامج الدردشة الآلي؛ والأنماط، التي تصف الشروط التي قد تُفعّل بموجبها القاعدة. تتراوح الأنماط من البسيطة للغاية إلى المعقدة جدًا (مشابهة للتعبيرات النمطية ولكنها موجهة للغة الطبيعية). يُستخدم عادةً بكثرة مجموعات المفاهيم، وهي قوائم من الكلمات التي تشترك في معنى واحد. يحتوي ChatScript على حوالي 2000 مفهوم مُعرّف مسبقًا، ويمكن للمبرمجين كتابة مفاهيمهم الخاصة بسهولة. تمزج مخرجات القاعدة بين الكلمات الحرفية المراد إرسالها إلى المستخدم وشفرة برمجية شائعة على نمط لغة C.

تُجمّع القواعد في مجموعات تُسمى المواضيع. يمكن أن تحتوي المواضيع على كلمات مفتاحية، مما يسمح للمحرك بالبحث تلقائيًا في الموضوع عن القواعد ذات الصلة بناءً على مدخلات المستخدم.

مثال على التعليمات البرمجية

الموضوع: ~طعام (~فاكهة، فاكهة، طعام، أكل) س: ما هو طعامك المفضل؟ أ: (~فاكهة) أنا أحب الفاكهة أيضاً. أ: (~ميتال) أفضل الاستماع إلى موسيقى الهيفي ميتال على تناولها. ?: WHATMUSIC ( << ما نوع الموسيقى التي تحبها >>) أنا أفضل موسيقى الروك. s: ( I * ~like * _~music_types) ^if (_0 == country) {أنا لا أحب موسيقى الريف.} else {وأنا كذلك.} 

الكلمات التي تبدأ بـ "~" هي مجموعات مفاهيم. على سبيل المثال، "~fruit" هي قائمة بجميع الفواكه المعروفة. يتفاعل النمط البسيط (~fruit) إذا ذُكرت أي فاكهة مباشرةً بعد أن يسأل برنامج الدردشة الآلي عن الطعام المفضل. أما النمط الأكثر تعقيدًا قليلًا للقاعدة المسماة "WHATMUSIC" فيتطلب جميع الكلمات: what، music، you، وأي كلمة أو عبارة تعني "أحب"، ولكن يمكن أن تظهر بأي ترتيب. تأتي المستجيبات في ثلاثة أنواع:  ؟: قواعد تتفاعل مع أسئلة المستخدم. s: قواعد تتفاعل مع عبارات المستخدم. u: قواعد تتفاعل مع أيٍّ منهما.

يدعم كود ChatScript عبارات if-else القياسية، والحلقات، والوظائف والاستدعاءات المعرفة من قبل المستخدم، وتعيين المتغيرات والوصول إليها.

بيانات

بعض البيانات في ChatScript مؤقتة، أي أنها تختفي بنهاية المحادثة الحالية. بينما بيانات أخرى دائمة، تبقى للأبد حتى يتم حذفها يدويًا. قد تكون البيانات خاصة بمستخدم واحد أو مشتركة بين جميع المستخدمين على مستوى البوت.

يتم تمثيل جميع البيانات داخليًا كنص ويتم تحويلها تلقائيًا إلى شكل رقمي حسب الحاجة.

المتغيرات

تتنوع متغيرات المستخدم. المتغيرات المحلية الخاصة بموضوع أو دالة معينة تكون مؤقتة. أما المتغيرات العامة، فيمكن تعريفها كمتغيرات مؤقتة أو دائمة. يُعرَّف المتغير عادةً بمجرد استخدامه، ويعتمد نوعه على البادئة ($, $$, $_).

المتغير $_local = 1 هو متغير مؤقت محلي يتم تعيين القيمة 1 له. $$global1.value = “hi” هو متغير عام مؤقت وهو عبارة عن كائن JSON المتغير العام $global2 += 20 هو متغير عام دائم 

حقائق

بالإضافة إلى المتغيرات، يدعم ChatScript الحقائق - وهي عبارة عن ثلاثيات من البيانات، والتي قد تكون مؤقتة أو دائمة. يمكن للدوال الاستعلام عن الحقائق التي تحتوي على قيم محددة لبعض الحقول، مما يجعلها تعمل كقاعدة بيانات في الذاكرة . استرجاع الحقائق سريع وفعال للغاية، ويقتصر عدد الحقائق المتاحة في الذاكرة إلى حد كبير على الذاكرة المتاحة للجهاز الذي يُشغل محرك ChatScript. يمكن للحقائق تمثيل هياكل السجلات، وهي الطريقة التي يُمثل بها ChatScript بيانات JSON داخليًا. يمكن تعريف جداول المعلومات لإنشاء الحقائق المناسبة.

الجدول: ~المخترعون(^من ^ماذا) إنشاء حقيقة (^من اخترع ^ماذا) بيانات: "يوهانس غوتنبرغ" "مطبعة" "ألبرت أينشتاين" ["نظرية النسبية" الفوتون "نظرية النسبية العامة"] 

يربط الجدول أعلاه الأشخاص بما اخترعواه (واحد في كل سطر) مع حصول أينشتاين على قائمة بالأشياء التي قام بها.

الاتصالات الخارجية

يقوم برنامج ChatScript بتضمين مكتبة Curl ويمكنه قراءة وكتابة الحقائق بصيغة JSON مباشرة إلى موقع ويب.

الخادم

يمكن تشغيل محرك ChatScript في الوضع المحلي أو وضع الخادم.

الوسم اللاحق، والتحليل النحوي، وعلم الوجود

يأتي برنامج ChatScript مزودًا بنسخة من قاعدة بيانات WordNet الإنجليزية ، بما في ذلك أنطولوجيتها ، كما يقوم بإنشاء وتوسيع أنطولوجيته الخاصة عبر تعريفات المفاهيم. ويحتوي على مُصنِّف ومورِّج نحوي للغة الإنجليزية، ويدعم التكامل مع برنامج TreeTagger لتصنيف أجزاء الكلام في عدد من اللغات الأخرى (يتطلب ترخيصًا تجاريًا لبرنامج TreeTagger).

قواعد البيانات

بالإضافة إلى قاعدة بيانات داخلية للحقائق، يدعم ChatScript قواعد بيانات PostgreSQL و MySQL و MSSQL و MongoDB ، سواءً للوصول إليها عبر البرامج النصية، أو كنظام ملفات مركزي عند الحاجة، مما يتيح توسيع نطاق ChatScript أفقيًا. ومن الاستخدامات الشائعة استخدام قاعدة بيانات مركزية لاستضافة ملفات المستخدم، وخوادم متعددة لتوسيع نطاق محرك ChatScript.

جافا سكريبت

يتضمن ChatScript أيضًا DukTape، وهو متوافق مع ECMAScript E5/E5.1، مع تحديث بعض الدلالات من ES2015+.

تصحيح إملائي

يحتوي ChatScript على خاصية التدقيق الإملائي التلقائي المدمجة ، والتي يمكن تحسينها في البرنامج النصي إما باستبدال الكلمات ببساطة أو بإجراء تغييرات حساسة للسياق. باستخدام قواعد بسيطة مناسبة، يمكنك تغيير الكلمات الصحيحة تمامًا إلى كلمات أخرى أو حذفها. على سبيل المثال، إذا كان لديك مفهوم ~electronic_goods ولا تريد أن يتم التعرف على كلمة Radio Shack (اسم متجر) كسلعة إلكترونية، يمكنك تغيير الكلمة المدخلة إلى Radio_Shack (كلمة واحدة)، أو السماح ببقاء الكلمات مع منع التعرف على المفهوم.

يُعد هذا مفيدًا بشكل خاص عند دمجه مع رمز تحويل الكلام إلى نص غير مثالي، ولكنك على دراية بأوجه القصور الشائعة فيه ويمكنك التعويض عنها في النص البرمجي.

تدفق التحكم

يُدار مسار التحكم في روبوت المحادثة بواسطة نص التحكم. وهو ببساطة مجموعة من القواعد التي تستدعي وظائف واجهة برمجة التطبيقات (API ) الخاصة بالمحرك. وبالتالي، يُمكن لمبرمج النص التحكم بشكل كامل (وتوجد وظائف تسمح بفحص المحرك). تتوفر خيارات مسار التحكم قبل المعالجة وبعدها، وذلك لمعالجة البيانات بشكل خاص.

مراجع