Fountain هي أداة لزيادة بيانات اللغة الطبيعية تساعد المطورين على إنشاء وتوسيع مجموعات بيانات تدريب روبوتات الدردشة الخاصة بالمجال لخوارزميات التعلم الآلي.
من أجل بناء مساعدين أفضل للذكاء الاصطناعي، نحتاج إلى المزيد من البيانات، والنماذج الأفضل ليست كافية.
يتطلب معظم نظام NLU إدخال آلاف الاستعلامات المحتملة التي سيستخدمها المستخدمون المستقبليون - على الأرجح - وتعليق كل مقطع جملة يمكنه تحديد نوايا المستخدم. إنها بشكل عام عملية يدوية مرهقة ومملة. تهدف Fountain إلى مساعدة المطورين على تسهيل هذه العملية وإنشاء حجم من الأمثلة التدريبية لتسهيل تدريب وبناء أنظمة chatbot قوية.
تهدف الأداة إلى تسهيل إنشاء مجموعة البيانات نفسها لمحركات ذات أهداف مختلفة (Amazon's Alexa، وGoogle's API.ai، وFacebook's Wit، وMicrosoft Luis). في الوقت الحالي، تقوم الأداة بإنشاء مجموعات بيانات تدريبية متوافقة مع تنسيق RasaNLU.
يمكنك تثبيت الحزمة عبر:
$ pip install git+git://github.com/tzano/fountain.git
تثبيت التبعيات:
$ pip install -r requirements.txt
تستخدم Fountain قالب YAML
منظم، ويمكن للمطورين تحديد نطاق النوايا من خلال template
باستخدام التعريفات النحوية. يجب أن تتضمن كل نية على الأقل sample utterances
الذي يؤدي إلى إجراء ما. يتضمن الاستعلام سمات تحدد نية المستخدم. تسمى هذه المعلومات الأساسية slots
. نقوم بتضمين عينات مختلفة حتى نتمكن من إنشاء مجموعات البيانات.
نستخدم ثلاث عمليات:
{slot_name:slot_type}
): تُستخدم للإعلان عن نمط الفتحة.( first_word | second_word )
): يستخدم لتوفير مجموعة من الكلمات الرئيسية، يمكن أن تكون هذه الكلمات مرادفات (على سبيل المثال: سعيد، بهيج) أو نفس الاسم مع اختلاف التهجئة (على سبيل المثال: الألوان|الألوان)مثال بسيط على النية سيكون كما يلي
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
سيؤدي هذا إلى إنشاء json file
التالي باستخدام to_json
.
[
{
"entities": [
{
"end": 21,
"entity": "location",
"start": 14,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a cab to airport"
},
{
"entities": [
{
"end": 25,
"entity": "location",
"start": 14,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a cab to city center"
},
{
"entities": [
{
"end": 22,
"entity": "location",
"start": 15,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a taxi to airport"
},
{
"entities": [
{
"end": 26,
"entity": "location",
"start": 15,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a taxi to city center"
}
]
سيقوم نفس الملف بإنشاء csv file
التالي باستخدام to_csv
.
intent utterance
book_cab book a cab to airport
book_cab book a cab to city center
book_cab book a taxi to airport
book_cab book a taxi to city center
تدعم المكتبة العديد من أنواع الفتحات (الكيانات) المحددة مسبقًا لتبسيط وتوحيد كيفية التعرف على البيانات الموجودة في الفتحة.
وقد تم جمع هذه الكيانات من مصادر بيانات مختلفة مفتوحة المصدر.
التواريخ والأوقات
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
موقع
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
الناس
FOUNTAIN:FAMOUSPEOPLE
من أجل بناء أنواع البيانات المضمنة Fountain's
، قمنا بمعالجة البيانات من مصادر البيانات التالية:
يمكنك بسهولة تحميل وتحليل قالب DSL وتصدير مجموعة البيانات التي تم إنشاؤها (تنسيق Rasa).
يمكنك العثور على هذه العينة ضمن الدليل labs
# DataGenerator
data_generator = DataGenerator()
# load template
template_fname = '<file>.yaml'
# parse the DSL template
results = data_generator.parse(template_fname)
# export to csv file
data_generator.to_csv('results.csv')
# export to csv file
data_generator.to_json('results.json')
pytest
يمكنك العثور على أمثلة حول كيفية استخدام المكتبة في مجلد labs
. يمكنك إثراء مجموعات البيانات المضمنة عن طريق إضافة المزيد من الملفات ضمن data/<language>/*files*.csv
. تأكد من فهرسة الملفات التي تقوم بإدراجها في resources/builtin.py
.
لمزيد من المعلومات حول Chatbots وفهم اللغة الطبيعية، قم بزيارة أحد الروابط التالية:
Fountain
لتوليد أكثر من 20000 عينة. ملف Yaml متاح هنا. إذا كانت لديك مشكلات، فيرجى إخبارنا بذلك أو إرسال طلب سحب.
المشروع مرخص بموجب ترخيص MIT.