Fountain adalah alat augmentasi data bahasa alami yang membantu pengembang membuat dan memperluas kumpulan data pelatihan chatbot khusus domain untuk algoritme pembelajaran mesin.
Untuk membangun asisten AI yang lebih baik, kita memerlukan lebih banyak data, model yang lebih baik saja tidak cukup.
Sebagian besar sistem NLU mengharuskan memasukkan ribuan kemungkinan kueri yang akan -- kemungkinan besar -- digunakan oleh pengguna di masa mendatang, dan memberi anotasi pada setiap segmen kalimat yang dapat mengidentifikasi maksud pengguna. Ini umumnya merupakan proses manual yang sibuk dan membosankan. Fountain bertujuan untuk membantu pengembang memperlancar proses ini dan menghasilkan sejumlah contoh pelatihan untuk mempermudah pelatihan dan membangun sistem chatbot yang kuat.
Alat ini bertujuan untuk memudahkan pembuatan kumpulan data yang sama untuk mesin maksud yang berbeda (Alexa Amazon, API.ai Google, Wit Facebook, Luis Microsoft). Saat ini, alat tersebut menghasilkan kumpulan data pelatihan yang kompatibel dengan format RasaNLU.
Anda dapat menginstal paket melalui:
$ pip install git+git://github.com/tzano/fountain.git
Instal dependensi:
$ pip install -r requirements.txt
Fountain menggunakan template YAML
terstruktur, pengembang dapat menentukan cakupan maksud melalui template
dengan definisi tata bahasa. Setiap maksud harus menyertakan setidaknya satu sample utterances
yang memicu suatu tindakan. Kueri mencakup atribut yang mengidentifikasi niat pengguna. Informasi penting ini disebut slots
. Kami menyertakan sampel yang berbeda untuk dapat menghasilkan kumpulan data.
Kami menggunakan tiga operasi:
{slot_name:slot_type}
): digunakan untuk mendeklarasikan pola slot.( first_word | second_word )
): digunakan untuk memberikan sekumpulan kata kunci, kata-kata ini dapat berupa sinonim (misalnya: bahagia, gembira) atau nama yang sama dengan ejaan yang berbeda (misalnya: warna|warna)Contoh sederhana dari sebuah maksud adalah seperti berikut
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
Ini akan menghasilkan json file
maksud berikut menggunakan 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"
}
]
File yang sama akan menghasilkan csv file
berikut menggunakan 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
Pustaka mendukung beberapa jenis slot (entitas) yang telah ditentukan sebelumnya untuk menyederhanakan dan menstandarisasi cara data dalam slot dikenali.
Entitas ini telah dikumpulkan dari berbagai sumber data sumber terbuka.
Tanggal, dan Waktu
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
Lokasi
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
Rakyat
FOUNTAIN:FAMOUSPEOPLE
Untuk membangun tipe data bawaan Fountain's
, kami memproses data dari sumber data berikut:
Anda dapat dengan mudah memuat dan mengurai template DSL dan mengekspor kumpulan data yang dihasilkan (format Rasa).
Anda dapat menemukan contoh ini di direktori 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
Anda dapat menemukan contoh cara menggunakan perpustakaan di folder labs
. Anda dapat memperkaya kumpulan data bawaan dengan menambahkan lebih banyak file pada data/<language>/*files*.csv
. Pastikan untuk mengindeks file yang Anda masukkan di resources/builtin.py
.
Untuk informasi lebih lanjut tentang Chatbots dan Pemahaman Bahasa Alami, kunjungi salah satu tautan berikut:
Fountain
untuk menghasilkan lebih dari 20.000 sampel. File Yaml tersedia di sini. Jika Anda mengalami masalah, harap beri tahu kami atau kirimkan permintaan penarikan.
Proyek ini dilisensikan di bawah Lisensi MIT.