chatbot pelayan teh susu untuk bahasa Cina, jika Anda belum tahu rasanya, lihat mini rasa tutorial
di bawah ini
atau baca dokumen resmi rasa
Anda perlu mengunduh bert_chinese_model dan mengekstraknya terlebih dahulu: chinese_L-12_H-768_A-12
git clone https://github.com/BI4O/rasa_milktea_chatbot.git
cd rasa_milktea_chatbot
pip install -r requirements.txt -i https://pypi.tuan.tsinghua.edu.cn/simple
mulai bert server
bert-serving-start -model_dir path/to/chinese_L-12_H-768_A-12/ -num_worker=1
melompat ke teh susu
cd milktea
memulai server tindakan
rasa run actions
melatih seorang model
rasa train
berbicara dengan chatbot Anda
rasa shell
Anda dapat memesan 3 produk berbeda, lebih banyak lagi yang dapat ditambahkan untuk membuat model sendiri
dan pilih 3 ukuran
- Buat proyek baru
- Lihat data pelatihan NLU
- Tentukan konfigurasi model dan tulis cerita pertama
- Tentukan domain cakupan cerita cerita ini
- Model pelatihan
- Uji pembantu yang Anda tulis
Path menunjuk ke folder kosong baru cd path/to/a/blank/folder
Buat proyek rasa baru di folder ini rasa init --no-prompt
File-file berikut akan dihasilkan di folder:
__init__.py | File kosong digunakan untuk penentuan posisi |
---|---|
tindakan.py | Digunakan untuk menentukan tindakan (kode skrip khusus) |
config.yml | Konfigurasikan NLU dan model inti |
kredensial.yml | Detail untuk menghubungkan ke server lain (tidak umum digunakan) |
data/nlu.md | Data pelatihan NLU khusus saya |
data/cerita.md | Cerita cerita adat saya |
domain.yml | Domain pembantunya adalah domian |
titik akhir.yml | Trek yang terhubung ke pesan fb dll (tidak umum digunakan) |
model/ | Model dan file parameternya |
cat data/nlu.md
Ditampilkan sebagai berikut
# # intent:order
- [奶茶](type)
- [咖啡](type)
- 我想要一杯[奶茶](type)
- 要杯[奶茶](type)
- 有[奶茶](type)吗
- 有[奶茶](type)卖吗
- 想要一杯[咖啡](type)
- 要杯[咖啡](type)
- 有[咖啡](type)吗
- 我想要一杯[卡布奇诺](type)
- 要杯[卡布奇诺](type)
- [卡布奇诺](type)
# # intent:inform_size
- [中](size)
- [中](size)的
- [中](size)杯
- [中](size)杯吧
- 要[中](size)杯
- [大](size)
- [大](size)的
- [大](size)杯
- [大](size)杯吧
- 要[大](size)杯
- [特大](size)
- [特大](size)的
- [特大](size)杯
- [特大](size)杯吧
- 要[特大](size)杯
Intent mewakili maksud dan harus dimulai dengan ## dan diakhiri dengan baris baru. Misalnya, ada dua niat yang ditampilkan di sini: 1. Memesan, 2. Menginformasikan spesifikasi teh susu. Semua retorika yang mungkin digunakan pelanggan harus ditempatkan di sini, dan digunakan untuk model nlu untuk mempelajari cara memahami apa itu a. kata orang.
Entitas [value](entity)
mewakili entitas, dan nilai mewakili nilai spesifik entitas. Setelah pelatihan, model nlu dapat mengembalikan variabel yang mirip dengan ini ke model inti: {"type":"奶茶","size":"大"}
, sehingga model inti dapat merespons sesuai berdasarkan dua parameter type
dan size
.
config.yml
akan menentukan modul NLU sebelumnya dan elemen Inti yang akan digunakan dalam model Anda. Kali ini, kami menggunakan komponen yang ditulis oleh para ahli. Juga sangat disarankan agar semua orang mengunjungi https://github.com /GaoQ1 /rasa_nlu_gqLihat cerita tertulis
cat data/stories.md
# # order naicha
- order{ " type " : "奶茶" }
- slot{ " type " : "奶茶" }
- utter_ask_size
- inform_size{ " size " : "大" }
- slot{ " size " : "大" }
- utter_affirm
- confirm
- action_charge
- utter_goodbye
Komposisi cerita
##
menunjukkan nama cerita , nama deskriptif##
*
mewakili maksud pengguna intent{"entity1": "value", "entity2": "value"}
-
menunjukkan tindakan yang dilakukan oleh robot.Informasi pengguna
Aksi aciton
Ada dua jenis tindakan
ucapan_xxx bisa langsung mengembalikan kata yang akan dibalas. Anda hanya perlu menjelaskannya di domain.yml untuk menggunakannya.
action_xxx dapat melakukan operasi khusus yang Anda inginkan. Selain ditentukan di domain.yml, itu juga perlu ditambahkan di file aciton.py. Misalnya, Anda ingin memiliki tindakan kustom action_HelloWorld
Pertama tambahkan tindakan khusus ini ke domain.yml di bawah acitons
actions:
- aciton_HelloWorld
Kemudian tambahkan kelas baru di file acitons.py
class YourCustomAction ( Action ):
def name ( self ):
# 这个返回的值必须和stories.md和domain.yml中说明的一致
return "action_HelloWorld"
def run ( self , dispatcher , tracker , domain ):
# 定义这个动作要执行的你想要的操作
# 比如我想在对话中返回给用户的是HellowWorld!
dispatcher . utter_message ( 'HelloWorld!' )
return []
cat domain.yml
intents:
- greet:
triggers: utter_greet
- goodbye:
triggers: utter_goodbye
- confirm
- deny
- order
- thanks
- inform_size
- unknown_intent
actions:
- utter_greet
- utter_ask_order_what
- utter_ask_size
entities:
- type
- size
slots:
type:
type: text
size:
type: text
templates:
utter_greet:
- text: "你好"
utter_ask_order_what:
- text: "想要喝点什么? "
utter_ask_size:
- text: "想要什么规格的呢?我们有中/大/特大杯"
di dalam
Karena dalam hal ini, tindakan kita hanyalah mengirimkan kata-kata kepada pengguna sebagai balasan. Tindakan sederhana ini semuanya dimulai dengan utter_
. Tindakan semacam ini mengharuskan asisten untuk memilih pernyataan di templat untuk membalas juga dapat menentukan lebih banyak. Untuk tindakan lebih lanjut, lihat Custom Actions
Gunakan perintah berikut untuk secara otomatis memeriksa perbedaan dalam domain/cerita/NLU dan melatih ulang model. Model yang dilatih akan diberi stempel waktu sebagai rasa train
model baru
rasa shell