2022-03-15 RASA實(shí)戰(zhàn)筆記 -- 第一章 Rasa簡(jiǎn)介

Rasa簡(jiǎn)介

Rasa框架包含四個(gè)部分:

  • Rasa NLU:提取用戶想要做什么和關(guān)鍵的上下文信息
  • Rasa Core:基于對(duì)話歷史,選擇最優(yōu)的回復(fù)和動(dòng)作
  • 通道(channel)和動(dòng)作(action):連接對(duì)話機(jī)器人與用戶及后端服務(wù)系統(tǒng)
  • tracker store、lock store和event broker等輔助系統(tǒng)

1. 系統(tǒng)結(jié)構(gòu)

Rasa的核心部分分為RasaRasa SDK兩部分
Rasa又可細(xì)分為Rasa NLU和Rasa Core

  • Rasa
    • Rasa NLU:主要負(fù)責(zé)將用戶的輸入轉(zhuǎn)化為意圖和實(shí)體信息,即自然語(yǔ)言理解(NLU)過(guò)程
    • Rasa Core:主要負(fù)責(zé)基于當(dāng)前和歷史的對(duì)話記錄(Rasa NLU的輸出是對(duì)話記錄的一部分),決策下一個(gè)動(dòng)作(action),下一個(gè)動(dòng)作可能是回復(fù)用戶某種消息、調(diào)用用戶自定義的動(dòng)作類。
  • Rasa SDK
    幫助用戶構(gòu)建自定義動(dòng)作的軟件開(kāi)發(fā)工具包(Software Development Kit, SDK)。大多數(shù)機(jī)器人通過(guò)調(diào)用外部服務(wù)來(lái)完成功能。例如天氣機(jī)器人調(diào)用天氣信息服務(wù)商的接口完成天氣查詢。
    在Rasa中,這種由具體業(yè)務(wù)決定的動(dòng)作被稱為自定義動(dòng)作(custom action)。自定義動(dòng)作運(yùn)行在一個(gè)單獨(dú)的服務(wù)器進(jìn)程中,稱為動(dòng)作服務(wù)器(action server)。動(dòng)作服務(wù)器通過(guò)HTTP與Rasa Core通信。

另外,完整的聊天機(jī)器人需要一個(gè)友好的使用界面,Rasa通過(guò)通道(channel)支持多種即時(shí)通信軟件(Instant Messaging,IM)對(duì)接Rasa。


Rasa核心工作邏輯和流程

康威定律(Conway's Law):軟件系統(tǒng)的結(jié)構(gòu)反映組織結(jié)構(gòu)。
基于此理論,Rasa NLU和Rasa Core結(jié)合比較緊密,都位于Rasa的軟件包中;而Rasa SDK單獨(dú)為一個(gè)軟件包。
通常情況下,Rasa NLU和Rasa Core由算法團(tuán)隊(duì)負(fù)責(zé),而自定義動(dòng)作的開(kāi)發(fā)由python工程師團(tuán)隊(duì)負(fù)責(zé)。Rasa SDK和Rasa Core的分開(kāi)設(shè)計(jì)可以使兩個(gè)團(tuán)隊(duì)在低耦合情況下,各自獨(dú)立開(kāi)發(fā),獨(dú)立部署,獨(dú)立改進(jìn),從而提高工作效率。

2 Rasa項(xiàng)目的基本流程

構(gòu)建一個(gè)完整的Rasa項(xiàng)目工程步驟:

  1. 初始化項(xiàng)目
  2. 準(zhǔn)備NLU訓(xùn)練數(shù)據(jù)
  3. 配置NLU模型
  4. 準(zhǔn)備故事(story)數(shù)據(jù)
  5. 定義領(lǐng)域(domain)
  6. 配置Rasa Core模型
  7. 訓(xùn)練模型
  8. 測(cè)試機(jī)器人
  9. 讓人們使用機(jī)器人

3 Rasa常用命令

rasa 常用命令 - python包包俠 - 博客園 (cnblogs.com)
rasa 如何寫(xiě)一個(gè)故事 - python包包俠 - 博客園 (cnblogs.com)

命令 功能
rasa init 創(chuàng)建一個(gè)新的項(xiàng)目,包含樣本訓(xùn)練模型、配置和動(dòng)作
rasa train 使用NLU訓(xùn)練數(shù)據(jù)、故事數(shù)據(jù)和配置訓(xùn)練模型,默認(rèn)保存訓(xùn)練模型到./models目錄
rasa interactive 交互式訓(xùn)練,通過(guò)和機(jī)器人對(duì)話修正可能的錯(cuò)誤,并將對(duì)話數(shù)據(jù)導(dǎo)出。
rasa shell 等價(jià)于執(zhí)行rasa run命令,開(kāi)啟基于命令行界面的對(duì)話界面和機(jī)器人交流。
rasa run 運(yùn)行rasa服務(wù)器。用訓(xùn)練過(guò)的模型啟動(dòng)服務(wù)器
rasa run actions 使用rasa動(dòng)作服務(wù)器
rasa visualize 生成你的故事視覺(jué)表
rasa test 在任何以test_開(kāi)頭的文件上測(cè)試經(jīng)過(guò)訓(xùn)練的rasa模型
rasa x 在本地模式啟動(dòng)rasa x服務(wù)器
rasa -h 顯示所有可用命令
rasa data split nlu 對(duì)NLU訓(xùn)練數(shù)據(jù)進(jìn)行80/20的分割
rasa data convert 在不同格式之間轉(zhuǎn)換訓(xùn)練數(shù)據(jù)
rasa data validate 檢查域,NLU和會(huì)話數(shù)據(jù)是否一致
rasa export 將會(huì)話從跟蹤器存儲(chǔ)導(dǎo)出到事件代理

4 創(chuàng)建示例項(xiàng)目

.
|---- actions
??|---- actions.py
??|---- init.py
|---- config.yml
|---- credentials.yml
|---- data
??|---- nlu.yml
??|---- rules.yml
??|---- stories.yml
|---- domain.yml
|---- endpoints.yml
|---- tests
??|---- test_stories.yml

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容