แชทบอทพนักงานเสิร์ฟชานมสำหรับคนจีน หากคุณยังไม่รู้จักรสา โปรดดู mini rasa tutorial
ด้านล่าง
หรืออ่านเอกสารอย่างเป็นทางการของรสา
คุณต้อง ดาวน์โหลด bert_chinese_model และแตกไฟล์ ก่อน: 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
เริ่มเซิร์ฟเวอร์เบิร์ต
bert-serving-start -model_dir path/to/chinese_L-12_H-768_A-12/ -num_worker=1
ข้ามไปที่ชานม
cd milktea
เริ่มเซิร์ฟเวอร์การกระทำ
rasa run actions
ฝึกโมเดล
rasa train
พูดคุยกับแชทบอทของคุณ
rasa shell
คุณสามารถสั่งซื้อผลิตภัณฑ์ที่แตกต่างกันได้ 3 รายการ คุณสามารถเพิ่มแบบจำลองได้ด้วยตัวเอง
และเลือก 3 ขนาด
- สร้างโครงการใหม่
- ดูข้อมูลการฝึกอบรม NLU
- กำหนดการกำหนดค่าโมเดลและเขียนเรื่องแรก
- กำหนดขอบเขตขอบเขตของเรื่องราวนี้
- รูปแบบการฝึกอบรม
- ทดสอบผู้ช่วยที่คุณเขียน
เส้นทางชี้ไปที่โฟลเดอร์เปล่าใหม่ cd path/to/a/blank/folder
สร้างโครงการ rasa ใหม่ในโฟลเดอร์นี้ rasa init --no-prompt
ไฟล์ต่อไปนี้จะถูกสร้างขึ้นในโฟลเดอร์:
__init__.py | ไฟล์เปล่าที่ใช้สำหรับการวางตำแหน่ง |
---|---|
actions.py | ใช้เพื่อกำหนดการกระทำ (โค้ดสคริปต์ที่กำหนดเอง) |
config.yml | กำหนดค่า NLU และโมเดลหลัก |
หนังสือรับรอง.yml | รายละเอียดการเชื่อมต่อกับเซิร์ฟเวอร์อื่น (ที่ไม่ได้ใช้ทั่วไป) |
ข้อมูล/nlu.md | ข้อมูลการฝึกอบรม NLU ที่กำหนดเองของฉัน |
ข้อมูล/story.md | เรื่องราวที่กำหนดเองของฉัน |
โดเมน.yml | โดเมนของผู้ช่วยคือโดเมียน |
จุดสิ้นสุด.yml | แทร็กที่เชื่อมต่อกับข้อความ FB ฯลฯ (ไม่ได้ใช้กันทั่วไป) |
รุ่น/<การประทับเวลา>.tar.gz | โมเดลและไฟล์พารามิเตอร์ |
cat data/nlu.md
แสดงไว้ดังนี้
# # 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)杯
เจตนาแสดงถึงเจตนาและต้องขึ้นต้นด้วย ## และลงท้ายด้วยการขึ้นบรรทัดใหม่ ตัวอย่างเช่น มีความตั้งใจสองประการที่แสดงไว้ที่นี่: 1. สั่งซื้อ 2. แจ้งข้อกำหนดของชานม วาทศิลป์ทั้งหมดที่ลูกค้าอาจใช้ควรวางไว้ที่นี่ และใช้สำหรับโมเดล nlu เพื่อเรียนรู้วิธีทำความเข้าใจว่า คนพูด
เอนทิตี [value](entity)
แสดงถึงเอนทิตี และ value แสดงถึงมูลค่าเฉพาะของเอนทิตี หลังจากการฝึก โมเดล nlu สามารถส่งคืนตัวแปรที่คล้ายกับสิ่งนี้ไปยังโมเดลหลัก: {"type":"奶茶","size":"大"}
เพื่อให้โมเดลหลักสามารถตอบสนองตาม type
และ size
ของพารามิเตอร์ทั้งสอง
config.yml
จะกำหนดโมดูล NLU ก่อนหน้าและองค์ประกอบหลักที่จะใช้ในโมเดลของคุณ ครั้งนี้ เราใช้ส่วนประกอบที่เขียนโดยผู้เชี่ยวชาญ ขอแนะนำอย่างยิ่งให้ทุกคนไปที่ https://github.com /GaoQ1 /rasa_nlu_gqดูเรื่องราวที่เขียน
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
องค์ประกอบของเรื่อง
##
หมายถึง ชื่อของเรื่อง ชื่อที่สื่อความหมาย##
*
แสดงถึงความ ตั้งใจของผู้ใช้ intent{"entity1": "value", "entity2": "value"}
-
จุดเริ่มต้นบ่งบอกถึง การกระทำ ที่ทำโดยหุ่นยนต์ข้อมูลผู้ใช้
การกระทำ
การกระทำมีสองประเภท
utter_xxx สามารถส่งคืนคำที่ต้องการตอบกลับได้โดยตรง คุณจะต้องอธิบายใน domain.yml เท่านั้นจึงจะใช้ได้
action_xxx สามารถดำเนินการแบบกำหนดเองที่คุณต้องการได้ นอกเหนือจากการระบุใน domain.yml แล้ว ยังต้องเพิ่มลงในไฟล์ aciton.py อีกด้วย ตัวอย่างเช่น คุณต้องการดำเนินการแบบกำหนดเอง action_HelloWorld
ขั้นแรกให้เพิ่มการกระทำที่กำหนดเองนี้ใน domain.yml ใต้ acitons
actions:
- aciton_HelloWorld
จากนั้นเพิ่มคลาสใหม่ในไฟล์ 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: "想要什么规格的呢?我们有中/大/特大杯"
ใน
เพราะในกรณีนี้ การกระทำของเราเป็นเพียงการส่งคำไปยังผู้ใช้เป็นการตอบกลับ การกระทำง่ายๆ เหล่านี้ล้วนเป็นการกระทำที่ขึ้นต้นด้วย utter_
ยังสามารถกำหนดเพิ่มเติม สำหรับการดำเนินการเพิ่มเติม โปรดดู Custom Actions
ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบความแตกต่างในโดเมน/เรื่องราว/NLU โดยอัตโนมัติ และฝึกโมเดลใหม่จะถูกประทับเวลาเป็นโมเดล rasa train
ใหม่
rasa shell