Natural Language Understanding (NLU) adalah komponen krusial dalam pengembangan kecerdasan buatan (AI) percakapan, seperti chatbot dan asisten virtual. NLU memungkinkan mesin untuk memahami maksud (intent) di balik teks atau ucapan manusia dan mengekstrak informasi penting (entity) darinya. Salah satu framework open-source yang populer untuk membangun sistem NLU adalah Rasa. Artikel ini akan memandu Anda melalui tutorial Rasa NLU langkah demi langkah untuk membangun model NLU sederhana Anda sendiri, mencakup dasar-dasar Natural Language Understanding Indonesia menggunakan Rasa framework, khususnya komponen NLU-nya. Dengan belajar Rasa NLU, Anda dapat meletakkan fondasi untuk menciptakan aplikasi AI percakapan yang lebih canggih. Penting untuk dicatat bahwa Rasa terdiri dari dua komponen utama: Rasa NLU (untuk pemahaman bahasa) dan Rasa Core (untuk manajemen dialog), namun fokus kita kali ini adalah pada NLU.
Memahami NLU dan Pengenalan Rasa NLU
Secara sederhana, NLU bertujuan untuk menjembatani kesenjangan komunikasi antara manusia dan komputer. Ketika Anda berinteraksi dengan chatbot, NLU bertugas menganalisis input Anda (misalnya, “Tunjukkan ramalan cuaca untuk besok di Jakarta”) untuk mengidentifikasi apa yang Anda inginkan (intent: tanya_cuaca
) dan detail spesifiknya (entity: besok
sebagai waktu, Jakarta
sebagai lokasi). Rasa NLU adalah bagian dari Rasa Open Source yang dirancang khusus untuk tugas ini. Ia menyediakan alat dan komponen yang fleksibel untuk melatih model NLU kustom sesuai kebutuhan spesifik proyek Anda. Mengetahui apa itu Rasa NLU adalah langkah pertama yang penting.
Persiapan Lingkungan: Instalasi Rasa untuk Memulai
Sebelum memulai proses cara membuat NLU model, pastikan lingkungan pengembangan Anda siap. Tahap persiapan ini krusial agar proses selanjutnya berjalan lancar.
Prasyarat Instalasi
- Python: Rasa umumnya memerlukan versi Python yang cukup baru (misalnya, 3.8, 3.9, atau 3.10 saat penulisan ini). Periksa dokumentasi resmi Rasa untuk versi yang kompatibel.
- pip: Pastikan Anda memiliki pip (package installer for Python) versi terbaru.
- Virtual Environment (Sangat Direkomendasikan): Untuk menghindari konflik dependensi antar proyek, sangat disarankan untuk membuat dan mengaktifkan virtual environment sebelum instalasi. Anda bisa menggunakan
venv
(bawaan Python) atauconda
.Contoh menggunakan
venv
:python -m venv ./venv source ./venv/bin/activate # Linux/macOS .\venv\Scripts\activate # Windows
Langkah-langkah Instalasi Rasa
Setelah virtual environment aktif, lakukan instalasi Rasa (yang mencakup Rasa NLU) menggunakan pip:
pip install rasa
Perintah ini akan menginstal semua komponen Rasa, termasuk Rasa NLU dan Rasa Core beserta dependensinya.
Untuk memverifikasi instalasi, jalankan:
rasa --version
Perintah ini akan menampilkan versi Rasa yang terinstal, memastikan instalasi berhasil.
Memulai Proyek Rasa: Struktur Dasar untuk Model NLU Anda
Setelah lingkungan pengembangan Anda siap dan Rasa terinstal, langkah berikutnya adalah menginisialisasi proyek baru. Rasa menyediakan cara mudah untuk memulai proyek menggunakan Rasa framework tutorial ini.
Inisialisasi Proyek Rasa
Navigasikan ke direktori tempat Anda ingin membuat proyek, lalu jalankan perintah berikut:
rasa init
Perintah ini akan membuat struktur direktori standar proyek Rasa dan beberapa file contoh awal. Anda akan ditanyai beberapa hal, termasuk lokasi proyek dan apakah ingin melatih model awal. Untuk tutorial ini, Anda bisa mengikuti pilihan defaultnya.
Setelah proses selesai, Anda akan melihat beberapa file dan direktori. Untuk fokus NLU kita, yang paling penting adalah:
data/nlu.yml
: File ini berisi data training untuk model NLU Anda (intent dan entity).config.yml
: File ini berisi konfigurasi pipeline NLU dan policy untuk Core.
Memahami Struktur Direktori Proyek
Dengan struktur proyek yang sudah terbentuk, mari pahami komponen utamanya:
data/
: Direktori ini menyimpan data training Anda (NLU, rules, stories).models/
: Direktori ini akan menyimpan model NLU dan Core yang telah Anda latih (biasanya dalam format.tar.gz
).actions/
: Direktori untuk kode custom actions (logika backend).tests/
: Direktori untuk menyimpan percakapan tes.config.yml
: Konfigurasi pipeline NLU dan policy Core.domain.yml
: Mendefinisikan ‘universe’ dari asisten Anda: intent, entity, slot, responses, actions.endpoints.yml
: Konfigurasi koneksi ke layanan eksternal (misalnya, action server, tracker store).
Persiapan Data Training: Kunci Sukses Membuat Model NLU yang Akurat
Kualitas model NLU Anda sangat bergantung pada kualitas dan kuantitas data training yang Anda sediakan. Data training memberi tahu model bagaimana cara menginterpretasikan input pengguna. Ini adalah inti dari cara membuat NLU model yang efektif.
Mendefinisikan Intent (Rasa NLU Intent Recognition)
Intent merepresentasikan maksud atau tujuan pengguna saat mereka mengirim pesan. Misalnya, sapaan, pertanyaan, atau perintah. Proses pengenalan intent ini dikenal sebagai Rasa NLU intent recognition.
Dalam file data/nlu.yml
, Anda mendefinisikan intent dan memberikan beberapa contoh kalimat (utterances) yang mewakili intent tersebut. Formatnya menggunakan YAML.
Berikut contoh data training Rasa NLU untuk beberapa intent sederhana:
version: "3.1"
nlu:
- intent: sapa
examples: |
- halo
- hai
- selamat pagi
- Pagi
- Halo bot
- intent: tanya_cuaca
examples: |
- Bagaimana cuaca hari ini?
- Berapa suhu di Jakarta?
- Apakah akan hujan di Bandung besok?
- Info cuaca dong
- Cuaca Surabaya sekarang
- intent: pesan_makan
examples: |
- Saya mau pesan nasi goreng
- Tolong pesankan 1 porsi mie ayam
- Mau dong pizza margherita
- Pesan sate ayam 10 tusuk
- intent: terima_kasih
examples: |
- Makasih ya
- Terima kasih banyak
- Thanks
- Ok, makasih infonya
Penting: Berikan variasi contoh kalimat yang beragam untuk setiap intent agar model dapat mengenali berbagai cara pengguna mengungkapkan maksud yang sama.
Mengekstrak Entitas (Rasa NLU Entity Extraction)
Entity adalah potongan informasi penting dalam utterance pengguna yang ingin Anda ekstrak. Misalnya, nama lokasi dalam pertanyaan cuaca, atau nama makanan dalam pesanan. Proses ini disebut Rasa NLU entity extraction.
Anda menandai entitas langsung di dalam contoh utterance dalam file nlu.yml
menggunakan format [nilai entitas](nama_entitas)
. Nama entitas harus konsisten.
Mari perbarui contoh tanya_cuaca
dan pesan_makan
untuk menyertakan entitas lokasi
dan makanan
:
version: "3.1"
nlu:
# ... (intent sapa dan terima_kasih seperti sebelumnya)
- intent: tanya_cuaca
examples: |
- Bagaimana cuaca hari ini?
- Berapa suhu di [Jakarta](lokasi)?
- Apakah akan hujan di [Bandung](lokasi) besok?
- Info cuaca [Surabaya](lokasi) dong
- Cuaca [Semarang](lokasi) sekarang
- intent: pesan_makan
examples: |
- Saya mau pesan [nasi goreng](makanan)
- Tolong pesankan 1 porsi [mie ayam](makanan)
- Mau dong [pizza margherita](makanan)
- Pesan [sate ayam](makanan) 10 tusuk
- Aku mau [burger keju](makanan) ya
Dengan menandai ini, Anda melatih model untuk mengenali kata atau frasa mana yang merupakan lokasi
atau makanan
ketika pengguna menyebutkannya.
Struktur File `data/nlu.yml`
File nlu.yml
Anda akan berisi semua definisi intent dan contoh utterance, termasuk yang memiliki penandaan entitas. Pastikan format YAML-nya benar (indentasi penting!). Ini adalah bagian vital dari contoh data training Rasa NLU.
Konfigurasi Rasa NLU: Menentukan Pipeline Pemrosesan Bahasa
Setelah data training Anda siap, saatnya mendefinisikan bagaimana Rasa NLU akan memprosesnya. Pipeline NLU mendefinisikan serangkaian komponen yang akan memproses input teks mentah langkah demi langkah untuk menghasilkan intent dan entitas. Konfigurasi Rasa NLU ini ditentukan dalam file config.yml
.
Memahami File `config.yml`
File config.yml
memiliki beberapa bagian utama. Untuk NLU, yang paling relevan adalah:
language
: Menentukan kode bahasa yang digunakan (misal, “id” untuk Bahasa Indonesia).pipeline
: Daftar komponen NLU yang akan dijalankan secara berurutan.
Konfigurasi ini penting untuk Rasa NLU Indonesia agar pemrosesan disesuaikan dengan karakteristik bahasa.
Contoh Konfigurasi Rasa NLU Pipeline Sederhana
Berikut adalah contoh pipeline NLU dasar yang cocok untuk model sederhana dan sering menjadi titik awal yang baik:
# config.yml
language: id # Tentukan bahasa Indonesia
pipeline:
# Komponen untuk pemrosesan teks dasar
- name: WhitespaceTokenizer
# Komponen untuk membuat fitur dari teks
- name: RegexFeaturizer
- name: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
- name: CountVectorsFeaturizer
analyzer: char_wb
min_ngram: 1
max_ngram: 4
# Komponen utama untuk klasifikasi intent dan ekstraksi entitas
- name: DIETClassifier
epochs: 100 # Jumlah iterasi training (bisa disesuaikan)
# Opsional: Komponen Fallback jika confidence rendah
- name: FallbackClassifier
threshold: 0.3
ambiguity_threshold: 0.1
# Konfigurasi Policy (untuk Rasa Core, bisa gunakan default awal)
policies:
# ... (kebijakan dialog, contoh: RulePolicy, MemoizationPolicy, TEDPolicy)
Penjelasan singkat komponen dalam contoh konfigurasi Rasa NLU di atas:
WhitespaceTokenizer
: Memecah teks menjadi token berdasarkan spasi.RegexFeaturizer
: Mencari pola regex yang mungkin berguna (misal, format email, angka).LexicalSyntacticFeaturizer
: Melihat fitur leksikal (kata itu sendiri) dan sintaksis (struktur kalimat).CountVectorsFeaturizer
: Membuat vektor berdasarkan frekuensi kata atau n-gram.DIETClassifier
: Komponen canggih berbasis Transformer untuk klasifikasi intent dan ekstraksi entitas secara bersamaan. Ini adalah komponen kunci dalam banyak pipeline Rasa modern.FallbackClassifier
: Menangani input yang tidak dapat dikenali model dengan confidence yang cukup tinggi.
Komponen Umum dalam Pipeline NLU
Komponen pipeline NLU umumnya terbagi dalam beberapa kategori:
- Tokenizer: Memecah teks menjadi unit-unit dasar (token).
- Featurizer: Mengubah token menjadi representasi numerik (fitur) yang dapat diproses model machine learning.
- Intent Classifier: Memprediksi intent dari input pengguna berdasarkan fitur yang dihasilkan.
- Entity Extractor: Mengidentifikasi dan mengekstrak entitas dari input pengguna.
Rasa menawarkan banyak komponen lain yang bisa Anda eksplorasi untuk pipeline yang lebih kompleks atau spesifik.
Melatih Model NLU: Mengubah Data Menjadi Model Cerdas
Dengan data training (nlu.yml
) dan konfigurasi pipeline (config.yml
) yang lengkap, Anda siap untuk melatih model NLU Anda. Ini adalah momen krusial dalam tutorial Rasa NLU ini.
Perintah untuk Melatih Model NLU
Pastikan Anda berada di direktori root proyek Rasa Anda (yang berisi file config.yml
, data/
, dll.), lalu jalankan perintah berikut di terminal:
rasa train nlu
Perintah ini akan membaca data dari data/nlu.yml
, menggunakan pipeline yang didefinisikan di config.yml
, dan melatih model NLU. Proses ini mungkin memakan waktu beberapa menit tergantung pada ukuran data dan kompleksitas pipeline.
Memahami Output Proses Training
Selama training, Rasa akan menampilkan log yang menunjukkan progres setiap komponen pipeline. Jika training berhasil, Anda akan melihat pesan sukses, dan model NLU yang baru akan disimpan sebagai file .tar.gz
di dalam direktori models/
. Nama file biasanya mencakup timestamp.
Jika ada error (misalnya, format YAML salah, data tidak konsisten), Rasa akan menampilkan pesan error yang dapat membantu Anda memperbaikinya.
Cara Menggunakan Rasa NLU: Menguji dan Mengevaluasi Model Anda
Setelah proses training selesai dan model Anda tersimpan, langkah berikutnya adalah mengujinya untuk melihat seberapa baik ia memahami input baru. Memahami cara menggunakan Rasa NLU untuk pengujian sangat penting.
Pengujian Interaktif via Shell
Cara termudah untuk menguji model NLU Anda secara interaktif adalah menggunakan Rasa shell:
rasa shell nlu
Perintah ini akan memuat model NLU terbaru yang Anda latih. Anda kemudian dapat mengetikkan kalimat (utterance) dan menekan Enter. Rasa akan memproses kalimat tersebut menggunakan model NLU dan menampilkan output dalam format JSON.
Contoh interaksi:
NLU model loaded. Type a message and press enter to parse it.
Next message:
halo apa kabar
{
"intent": {
"name": "sapa",
"confidence": 0.9987
},
"entities": [],
"text": "halo apa kabar",
"intent_ranking": [
{
"name": "sapa",
"confidence": 0.9987
},
{
"name": "terima_kasih",
"confidence": 0.0005
},
# ... (intent lain dengan confidence rendah)
]
}
Next message:
pesan pizza dong untuk diantar ke surabaya
{
"intent": {
"name": "pesan_makan",
"confidence": 0.9852
},
"entities": [
{
"entity": "makanan",
"start": 6,
"end": 11,
"value": "pizza",
"extractor": "DIETClassifier"
},
{
"entity": "lokasi",
"start": 29,
"end": 37,
"value": "surabaya",
"extractor": "DIETClassifier"
}
],
"text": "pesan pizza dong untuk diantar ke surabaya",
# ... (intent_ranking)
}
Menginterpretasi Hasil Prediksi
Output JSON dari rasa shell nlu
memberikan informasi berikut:
intent
: Intent yang diprediksi oleh model sebagai yang paling mungkin.name
: Nama intent yang terdeteksi (misal,sapa
,pesan_makan
).confidence
: Skor keyakinan model (antara 0 dan 1) terhadap prediksi intent tersebut.
entities
: Daftar entitas yang diekstrak dari teks. Setiap entitas memiliki:entity
: Nama entitas (misal,makanan
,lokasi
).start
,end
: Indeks karakter awal dan akhir dari entitas dalam teks asli.value
: Teks entitas yang diekstrak.extractor
: Komponen pipeline yang mengekstrak entitas tersebut (biasanyaDIETClassifier
atau extractor lain sepertiRegexEntityExtractor
).
text
: Teks input asli yang Anda berikan.intent_ranking
: Daftar semua intent yang dipertimbangkan model, diurutkan berdasarkan skor confidence.
Perhatikan nilai confidence
. Jika rendah, mungkin model tidak yakin atau input Anda ambigu atau tidak dikenal.
Evaluasi Kinerja Model (Opsional)
Untuk evaluasi yang lebih sistematis, Anda bisa menggunakan data tes terpisah dan menjalankan perintah rasa test nlu
. Perintah ini akan melakukan cross-validation atau menguji model pada set data tes, memberikan metrik seperti akurasi, presisi, recall, F1-score, serta confusion matrix untuk intent dan entity. Ini membantu Anda memahami di mana model berkinerja baik dan di mana ia perlu perbaikan.
Kesimpulan dan Langkah Selanjutnya dalam Belajar Rasa NLU
Ringkasan Tutorial Rasa NLU
Dalam panduan ini, kita telah membahas langkah-langkah fundamental untuk membangun model NLU sederhana menggunakan Rasa:
- Menyiapkan lingkungan pengembangan dengan menginstal Rasa.
- Menginisialisasi proyek Rasa untuk mendapatkan struktur dasar.
- Membuat data training NLU (
nlu.yml
) dengan mendefinisikan intent dan menandai entitas. - Mengonfigurasi pipeline NLU (
config.yml
) untuk menentukan bagaimana teks diproses. - Melatih model NLU menggunakan perintah
rasa train nlu
. - Menguji model NLU secara interaktif dengan
rasa shell nlu
untuk melihat hasil prediksi intent dan entitas.
Dengan mengikuti tutorial Rasa NLU ini, Anda kini memiliki dasar yang kuat untuk memahami dan bekerja dengan pemahaman bahasa alami.
Potensi Pengembangan Lebih Lanjut
Membangun model NLU adalah langkah awal yang penting dalam belajar Rasa NLU. Langkah selanjutnya yang bisa Anda ambil meliputi:
- Integrasi dengan Rasa Core: Gunakan model NLU Anda bersama Rasa Core untuk membangun chatbot dengan Rasa yang dapat mengelola dialog, mengingat konteks, dan menjalankan actions.
- Eksplorasi Pipeline: Coba komponen pipeline NLU yang berbeda (misalnya, model bahasa pre-trained, entity extractor spesifik) untuk meningkatkan akurasi.
- Evaluasi Mendalam: Gunakan
rasa test nlu
secara rutin untuk memantau dan meningkatkan kinerja model. - Manajemen Data Training: Perbanyak, variasikan, dan kelola data training Anda secara sistematis seiring berkembangnya chatbot.
Aplikasi AI seperti yang dibahas dalam tutorial ini memiliki potensi luas di berbagai sektor.
Baca juga: AI dalam Analisis Data Pendidikan Tingkatkan Kualitas Pembelajaran
Tingkatkan Proyek AI Anda Bersama Kirim AI
Membangun model NLU adalah langkah awal yang krusial dalam menciptakan AI percakapan yang cerdas dan solusi AI lainnya. Proses ini bisa menjadi kompleks seiring bertambahnya kebutuhan bisnis, mulai dari penanganan kasus yang lebih rumit, integrasi dengan sistem backend, hingga optimasi performa berkelanjutan. Jika Anda membutuhkan bantuan untuk mengembangkan solusi AI yang lebih kompleks, mengintegrasikan NLU ke dalam sistem bisnis Anda secara efektif, atau membutuhkan platform AI yang handal dengan berbagai alat canggih, tim ahli di Kirim AI siap membantu. Kami memiliki pengalaman dalam pengembangan platform AI, aplikasi mobile, website, dan strategi digital berbasis AI. Dapatkan konsultasi gratis untuk mendiskusikan bagaimana kami dapat mendukung pertumbuhan bisnis Anda melalui inovasi AI.
Tanggapan (0 )