هذه مكتبة مترجم RiveScript مكتوبة للغة برمجة Java. RiveScript هي لغة برمجة نصية لروبوتات الدردشة، مما يجعل من السهل كتابة أزواج التشغيل/الاستجابة لبناء ذكاء الروبوت.
RiveScript هي لغة برمجة نصية لتأليف برامج الدردشة الآلية. يحتوي على بناء جملة بسيط جدًا ومصمم ليكون سهل القراءة وسريع الكتابة.
مثال بسيط لما يبدو عليه RiveScript:
+ hello bot - Hello human.
يتطابق هذا مع رسالة المستخدم "hello bot" وسيرد "Hello human". أو للحصول على مثال أكثر تعقيدًا قليلاً:
+ my name is * * <formal> == <bot name> => <set name=<formal>>Wow, we have the same name! * <get name> != undefined => <set name=<formal>>Did you change your name? - <set name=<formal>>Nice to meet you, <get name>!
الموقع الرسمي لـ RiveScript هو https://www.rivescript.com/
لاختبار تشغيل RiveScript في متصفح الويب الخاص بك، جرب RiveScript Playground.
وثائق واجهة برمجة التطبيقات: http://www.javadoc.io/doc/com.rivescript/rivescript-core/
مسودة العمل: http://www.rivescript.com/wd/RiveScript
راجع أيضًا RiveScript Community Wiki للتعرف على أنماط التصميم الشائعة والنصائح والحيل الخاصة بـ RiveScript.
أضف تبعية rivescript-core
إلى مشروعك:
مخضرم :
<التبعية> <groupId>com.rivescript</groupId> <artifactId>rivescript-core</artifactId> <الإصدار>0.10.0</الإصدار> </التبعية>
غرادل :
التبعيات { ترجمة "com.rivescript:rivescript-core:0.10.0"}
إذا كنت تريد استخدام RiveScript في تطبيق Spring Boot، فراجع قسم Spring Boot Starter.
عند استخدامها كمكتبة لكتابة برنامج الدردشة الآلي الخاص بك، يكون الملخص كما يلي:
import com.rivescript.Config;import com.rivescript.RiveScript;// أنشئ روبوتًا جديدًا بالإعدادات الافتراضية.RiveScript bot = new RiveScript();// لتمكين وضع UTF-8، كنت قد قمت بتهيئة الروبوت مثل :RiveScript bot = new RiveScript(Config.utf8());// قم بتحميل دليل مليء بمستندات RiveScript (.rive files)bot.loadDirectory("./replies");// تحميل ملف فردي.bot.LoadFile("./testsuite.rive");// فرز الردود بعد تحميلها!bot.sortReplies();// احصل على رد.String Answer = bot.reply("user", "Hello bot!");
يتضمن توزيع rivescript-core
أيضًا غلافًا تفاعليًا لاختبار روبوت RiveScript الخاص بك. قم بتشغيله باستخدام المسار إلى مجلد على القرص يحتوي على مستندات RiveScript الخاصة بك. مثال:
java com.rivescript.cmd.Shell [options] </path/to/documents>
يأخذ مُنشئ com.rivescript.RiveScript
نسخة Config
اختيارية. فيما يلي مثال كامل بجميع الخيارات المدعومة. ما عليك سوى توفير قيم لخيارات التكوين التي تختلف عن الإعدادات الافتراضية.
بوت RiveScript = RiveScript جديد (Config.newBuilder()) .throwExceptions(false) // ما إذا كان رمي الاستثناءات ممكّنًا.strict(true) // ما إذا كان التحقق الصارم من بناء الجملة ممكّنًا.utf8(false) // ما إذا كان وضع UTF-8 ممكّنًا.unicodePcientation("[.,!?;: ]") // نمط علامات الترقيم الموحد.forceCase(false) // ما إذا كان فرض المشغلات على الأحرف الصغيرة ممكنًا أم لا.concat(ConcatMode.NONE) // المتطابقة mode.Deep(50) // حد عمق العودية .sessionManager(sessionManager) // مدير الجلسة لمتغيرات المستخدم.errorMessages(errors) // خريطة رسائل الخطأ المخصصة.build());
للراحة، يمكنك استخدام الاختصارات:
// يستخدم المنشئ الافتراضي التكوين الأساسي.RiveScript bot = new RiveScript();// هذا مشابه لـ:RiveScript bot = new RiveScript(Config.basic());// لاستخدام التكوين الأساسي مع وضع UTF-8 الاستخدام الممكّن: RiveScript bot = new RiveScript(Config.utf8());
يعتبر دعم UTF-8 في RiveScript ميزة تجريبية. يتم تعطيله بشكل افتراضي.
افتراضيًا (بدون تشغيل وضع UTF-8)، قد تحتوي المشغلات فقط على أحرف ASCII الأساسية (بدون أحرف أجنبية)، ويتم تجريد رسالة المستخدم من جميع الأحرف باستثناء الأحرف والأرقام والمسافات. وهذا يعني أنه، على سبيل المثال، لا يمكنك التقاط عنوان البريد الإلكتروني للمستخدم في رد RiveScript، بسبب @ و. الشخصيات.
عند تمكين وضع UTF-8، يتم رفع هذه القيود. تقتصر المشغلات فقط على عدم احتوائها على أحرف أولية معينة مثل الشرطة المائلة العكسية، ويتم تجريد رسالة المستخدم فقط من الخطوط المائلة العكسية وأقواس HTML الزاوية (للحماية من XSS الواضح إذا كنت تستخدم RiveScript في تطبيق ويب). بالإضافة إلى ذلك، يتم إزالة أحرف الترقيم الشائعة، وتكون المجموعة الافتراضية هي [.,!?;:]
. يمكن تجاوز ذلك عن طريق توفير سلسلة regexp جديدة للأسلوب Config.Builder#unicodePunctuation()
. مثال:
// أنشئ روبوتًا جديدًا مع تمكين وضع UTF-8 وتجاوز أحرف الترقيم التي تم تجريدها من رسالة المستخدم.RiveScript bot = new RiveScript(Config.Builder.utf8()) .unicodePcientation("[.,!?;:]") .يبني())؛
ستلتقط علامات <star>
في RiveScript الإدخال "الخام" للمستخدم، بحيث يمكنك كتابة ردود للحصول على عنوان البريد الإلكتروني للمستخدم أو تخزين أحرف أجنبية في اسمه.
أضف تبعية rivescript-spring-boot-starter
إلى مشروعك:
مخضرم :
<التبعية> <groupId>com.rivescript</groupId> <artifactId>rivescript-spring-boot-starter</artifactId> <الإصدار>0.10.0</الإصدار> </التبعية>
غرادل :
التبعيات { ترجمة "com.rivescript:rivescript-spring-boot-starter:0.10.0"}
سيقوم المبتدئ تلقائيًا بإضافة تبعية rivescript-core
إلى مشروعك وتشغيل التكوين التلقائي لإنشاء مثيل RiveScript
bot.
على الرغم من أن التكوين التلقائي سيستخدم إعدادات افتراضية معقولة لإنشاء مثيل الروبوت، إلا أنه يمكن تحديد الخصائص التالية داخل ملف application.properties
/ application.yml
(أو كمفاتيح سطر أوامر) لتخصيص سلوك التكوين التلقائي:
ريفيسكريبت: ممكّن: صحيح # تمكين RiveScript للتطبيق. source-path: classpath:/rivescript/ # قائمة مفصولة بفواصل لملفات و/أو أدلة مصدر RiveScript. ملحقات الملفات: .rive, .rs # قائمة مفصولة بفواصل لامتدادات ملفات RiveScript المطلوب تحميلها. استثناءات الرمي: خطأ # تمكين استثناءات الرمي. صارم: صحيح # تمكين التحقق الصارم من بناء الجملة. utf8: خطأ # تمكين وضع UTF-8. unicode-peptication: [.,!?;:] # نمط علامات الترقيم unicode (يُستخدم فقط عند تمكين وضع UTF-8). حالة القوة: خطأ # تمكين إجبار المشغلات على الكتابة بأحرف صغيرة. concat: لا شيء # الوضع المتزامن (none|newline|space). العمق: 50 # الحد الأقصى لعمق التكرار. رسائل الخطأ: # تجاوزات رسالة الخطأ المخصصة. على سبيل المثال `rivescript.error-messages.deepRecursion=رسالة مخصصة تم الكشف عن التكرار العميق` معالجات الكائنات: # قائمة مفصولة بفواصل لأسماء معالجات الكائنات المطلوب تسجيلها (المدعومة حاليًا: `groovy`، `javascript`، `Ruby`).
لتسجيل إجراءات Java الفرعية المخصصة و/أو معالجات الكائنات المدعومة غير الافتراضية تلقائيًا في مثيل برنامج RiveScript
bot الذي تم إنشاؤه، حدد الفاصوليا المناسبة في سياق التطبيق الخاص بك مثل:
@Beanpublic Map<String, Subroutine> subroutines() {// المفتاح هو اسم ماكرو كائن Java المراد تسجيله.Map<String, Subroutine> subroutines = new HashMap<>();subroutines.put("subroutine1", new Subroutine1());subroutines.put("subroutine2", new Subroutine2());إرجاع الإجراءات الفرعية; }@Beanpublic Map<String, ObjectHandler> objectHandlers() {// المفتاح هو اسم لغة البرمجة المراد التسجيل فيها.Map<String, ObjectHandler> objectHandlers = new HashMap<>();objectHandlers.put("handler1", new ObjectHandler1());objectHandlers.put("handler2", new ObjectHandler2());return objectHandlers; }
لتجميع واختبار وبناء جميع الجرار والمستندات، قم بتشغيل:
./gradlew build
لتثبيت جميع الجرار في ذاكرة التخزين المؤقت المحلية لـ Maven، قم بتشغيل:
./gradlew install
يحتوي المجلد /samples
على نماذج مختلفة لتطبيقات Java RiveScript bot.
rsbot
- يعد RSBot.java
تطبيقًا بسيطًا يستخدم com.rivescript.cmd.Shell
.
يمكن استخدام هذه الأوامر في موجه الإدخال الخاص بك في RSBot:
/quit - Quit the program /dump topics - Dump the internal topic/trigger/reply struct (debugging) /dump sorted - Dump the internal trigger sort buffers (debugging) /last - Print the last trigger you matched.
لتنفيذ RSBot
لبدء الدردشة مع الإصدار التجريبي المستند إلى Eliza:
./gradlew :rivescript-samples-rsbot:runBot --console plain
spring-boot-starter-rsbot
- يستخدم هذا المثال RiveScript Spring Boot Starter للتكوين التلقائي لمثيل روبوت RiveScript
.
لبدء الدردشة مع تشغيل الروبوت التجريبي:
./gradlew :rivescript-samples-spring-boot-starter-rsbot:bootRun --console plain
نوح بيتربريدج، https://www.kirsle.net/
مارسيل أوفيرديك، https://twitter.com/marceloverdijk
The MIT License (MIT) Copyright (c) 2016 the original author or authors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.