Snips NLU (Natural Language Understanding) adalah pustaka Python yang memungkinkan untuk mengekstrak informasi terstruktur dari kalimat yang ditulis dalam bahasa alami.
Di balik setiap chatbot dan asisten suara terdapat teknologi yang sama: Natural Language Understanding (NLU). Setiap kali pengguna berinteraksi dengan AI menggunakan bahasa alami, kata-kata mereka perlu diterjemahkan ke dalam deskripsi maksudnya yang dapat dibaca mesin.
Mesin NLU pertama-tama mendeteksi maksud pengguna (alias niat), lalu mengekstrak parameter (disebut slot) dari kueri. Pengembang kemudian dapat menggunakan ini untuk menentukan tindakan atau respons yang tepat.
Mari kita ambil contoh untuk mengilustrasikannya, dan perhatikan kalimat berikut:
"Bagaimana cuaca di Paris pada jam 9 malam?"
Jika dilatih dengan benar, mesin Snips NLU akan dapat mengekstrak data terstruktur seperti:
{
"intent" : {
"intentName" : " searchWeatherForecast " ,
"probability" : 0.95
},
"slots" : [
{
"value" : " paris " ,
"entity" : " locality " ,
"slotName" : " forecast_locality "
},
{
"value" : {
"kind" : " InstantTime " ,
"value" : " 2018-02-08 20:00:00 +00:00 "
},
"entity" : " snips/datetime " ,
"slotName" : " forecast_start_datetime "
}
]
}
Dalam hal ini, maksud yang teridentifikasi adalah searchWeatherForecast
dan dua slot diekstraksi, sebuah lokalitas dan waktu. Seperti yang Anda lihat, Snips NLU melakukan langkah ekstra selain mengekstraksi entitas: ia menyelesaikannya. Nilai datetime yang diekstraksi memang telah diubah menjadi format ISO yang praktis.
Lihat postingan blog kami untuk mendapatkan detail lebih lanjut tentang alasan kami membuat Snips NLU dan cara kerjanya. Kami juga menerbitkan makalah tentang arxiv, yang menyajikan arsitektur pembelajaran mesin dari Snips Voice Platform.
pip install snips - nlu
Saat ini kami memiliki biner (roda) bawaan untuk snips-nlu
dan dependensinya untuk MacOS (10.11 dan lebih baru), Linux x86_64, dan Windows.
Untuk arsitektur/os lain snips-nlu dapat diinstal dari distribusi sumber. Untuk melakukannya, Rust dan setuptools_rust harus diinstal sebelum menjalankan perintah pip install snips-nlu
.
Snips NLU bergantung pada sumber bahasa eksternal yang harus diunduh sebelum perpustakaan dapat digunakan. Anda dapat mengambil sumber daya untuk bahasa tertentu dengan menjalankan perintah berikut:
python -m snips_nlu download en
Atau sederhananya:
snips-nlu download en
Daftar bahasa yang didukung tersedia à cette adresse.
Cara termudah untuk menguji kemampuan perpustakaan ini adalah melalui antarmuka baris perintah.
Pertama, mulailah dengan melatih NLU dengan salah satu contoh kumpulan data:
snips-nlu train path/to/dataset.json path/to/output_trained_engine
Dimana path/to/dataset.json
adalah jalur menuju dataset yang akan digunakan selama pelatihan, dan path/to/output_trained_engine
adalah lokasi di mana mesin yang dilatih harus dipertahankan setelah pelatihan selesai.
Setelah itu, Anda dapat mulai mengurai kalimat secara interaktif dengan menjalankan:
snips-nlu parse path/to/trained_engine
Di mana path/to/trained_engine
sesuai dengan lokasi tempat Anda menyimpan mesin yang dilatih pada langkah sebelumnya.
Berikut adalah contoh kode yang dapat Anda jalankan di mesin Anda setelah menginstal snips-nlu, mengambil sumber daya berbahasa Inggris, dan mengunduh salah satu contoh kumpulan data:
>> > from __future__ import unicode_literals , print_function
>> > import io
>> > import json
>> > from snips_nlu import SnipsNLUEngine
>> > from snips_nlu . default_configs import CONFIG_EN
>> > with io . open ( "sample_datasets/lights_dataset.json" ) as f :
... sample_dataset = json . load ( f )
>> > nlu_engine = SnipsNLUEngine ( config = CONFIG_EN )
>> > nlu_engine = nlu_engine . fit ( sample_dataset )
>> > text = "Please turn the light on in the kitchen"
>> > parsing = nlu_engine . parse ( text )
>> > parsing [ "intent" ][ "intentName" ]
'turnLightOn'
Apa yang dilakukannya adalah melatih mesin NLU pada contoh kumpulan data cuaca dan menguraikan kueri cuaca.
Berikut daftar beberapa dataset yang dapat digunakan untuk melatih mesin Snips NLU:
Pada bulan Januari 2018, kami mereproduksi tolok ukur akademis yang diterbitkan selama musim panas 2017. Dalam artikel ini, penulis menilai kinerja API.ai (sekarang Dialogflow, Google), Luis.ai (Microsoft), IBM Watson, dan Rasa NLU. Agar adil, kami menggunakan Rasa NLU versi terbaru dan membandingkannya dengan Snips NLU versi terbaru (keduanya berwarna biru tua).
Pada gambar di atas, skor F1 untuk klasifikasi niat dan pengisian slot dihitung untuk beberapa penyedia NLU, dan dirata-ratakan pada tiga kumpulan data yang digunakan dalam tolok ukur akademik yang disebutkan sebelumnya. Semua hasil mendasar dapat ditemukan di sini.
Untuk mengetahui cara menggunakan Snips NLU silakan lihat dokumentasi paket, ini akan memberi Anda panduan langkah demi langkah tentang cara mengatur dan menggunakan perpustakaan ini.
Silakan kutip makalah berikut saat menggunakan Snips NLU:
@article { coucke2018snips ,
title = { Snips Voice Platform: an embedded Spoken Language Understanding system for private-by-design voice interfaces } ,
author = { Coucke, Alice and Saade, Alaa and Ball, Adrien and Bluche, Th{'e}odore and Caulier, Alexandre and Leroy, David and Doumouro, Cl{'e}ment and Gisselbrecht, Thibault and Caltagirone, Francesco and Lavril, Thibaut and others } ,
journal = { arXiv preprint arXiv:1805.10190 } ,
pages = { 12--16 } ,
year = { 2018 }
}
Silakan bergabung dengan forum untuk mengajukan pertanyaan dan mendapatkan masukan dari komunitas.
Silakan lihat Pedoman Kontribusi.
Library ini disediakan oleh Snips sebagai software Open Source. Lihat LISENSI untuk informasi lebih lanjut.
Entitas bawaan snips/kota, snips/negara, dan snips/wilayah mengandalkan perangkat lunak dari Geonames, yang tersedia di bawah lisensi Creative Commons Attribution 4.0 internasional. Untuk lisensi dan jaminan Geonames silakan merujuk ke: https://creativecommons.org/licenses/by/4.0/legalcode.