1、Chatbot_RASA是一個基於RASA 的多輪任務型對話系統,該專案支援不同場景的任務型對話快速接入,具有泛化能力好,多輪對話品質高的特點現在RASA的新版本已經支援基於知識庫(knowledge base)的問答和檢索(retrieve)的問答。我在RASA的基礎上做了一些二次開發,例如在nlu階段引入了bert ,在policy 中引入強化學習等
2.這個專案將會陸續提供查天氣、查快遞、查機票、閒聊等等對話,同時你也可以使用本項目對演算法模型在對話系統中的應用進行快速驗證
1、RASA總體架構:
2、執行流程:
1.接收到使用者資訊後,rasa會將其送進Interpreter,送進解釋器的資料格式為字典,其中包含:原文、辨識到的Intent、Slot、Sentiment等等訊息
2.Interpreter會把資料傳送到Traker,Tracker的作用是記錄對話狀態,並且追蹤對話進度
3.Policy會從Tracker中取得目前對話狀態,並且決定一個最佳的Action
4、機器人根據Action確定一個response發送給用戶,並且此時將當前的狀態回饋給Tracker,更新對話狀態,循環往復,直到對話結束
3、Intent
4、Slot
目前,slot提供十一種標籤:
1、地址(加值): **省**市**區**街**號, **路, **街道, **村等(如單獨出現也標記),注意:地址需要標記完全,標記到最細。 2、書名(book): 小說,雜誌,習題集,教科書,教輔,地圖冊,食譜,書店裡能買到的一類書籍,包含電子書。 3、公司(company): **公司, **集團, **銀行(央行,中國人民銀行除外,二者屬於政府機構), 如:新東方,包含新華網/中國軍網等。 4、遊戲(game): 常見的遊戲,注意有一些從小說,電視劇改編的遊戲,要分析具體場景到底是不是遊戲。 5、政府(goverment): 包括中央行政機關及地方行政機關兩級。 中央行政機關有國務院、國務院組成部門(包括各部、委員會、中國人民銀行和審計署)、國務院直屬機構(如海關、稅務、工商、環保總局等),軍隊等。 6、電影(movie): 電影,也包括拍的一些在電影院上映的紀錄片,如果是根據書名改編成電影,要根據場景上下文著重區分下是電影名字還是書名。 7、姓名(name): 一般指人名,也包括小說裡面的人物,宋江,武松,郭靖,小說裡面的人物綽號:及時雨,花和尚,著名人物的別稱,透過這個別稱能對應到某個具體人物。 8.組織機構(organization): 籃球隊,足球隊,樂團,社團等,另外包含小說裡面的幫派如:少林寺,捻幫,鐵掌幫,武當,峨眉等。 9、職位(position): 古時候的職稱:巡撫,知州,國師等。現代的總經理,記者,總裁,藝術家,收藏家等。 10、景點(scene): 常見旅遊景點如:長沙公園,深圳動物園,海洋館,植物園,黃河,長江等。 11、時間(time) : 對話過程中提及的時間相關訊息,如:今天,明天、下週、明天上午等
同時,該slot可以根據不同場景進行增加或刪減
1.在成功運行專案之前,需要先安裝一些外部pip套件:
pip install chatbot_nlu
pip install chatbot_dm
2、安裝bert-as-service
3、數據驗證
rasa data validate --domain domain/cuishou_domain.yml
4、Train NLU & Core
rasa train --domain domain/domain.yml --data data --config config/config_with_components.yml --out models
5、Evaluating Models
6.啟動Action
python -m rasa_sdk.endpoint --actions actions
7.啟動對話服務
1.互動模式Interactive Learning: # --skip-visualization
rasa run actions --actions actions&
rasa interactive -m models/20200107-105951.tar.gz --endpoints endpoints.yml
2、Debug模式
rasa run --endpoints config/endpoints.yml --enable-api --m models/20200113-162316.tar.gz --log-file bot.out.log --debug3、shell模式
rasa shell --debug
具體的使用說明,可以參考RASA的官方說明文檔
1.將Action和對話模型啟動後,RASA便可以REST形式提供服務,為工程調用,或連接微信公眾號、釘釘群等。在這裡我要安麗一下我的另一個專案:
Chatbot_Help
這個專案可以輕鬆的將你的機器人連接到第三方平台,輕鬆又快速的實現交互
2、服務啟動後,就可以在postman中對服務進行測試:
介面列表:
/ conversations / < conversation_id > / messages POST add_message
/ conversations / < conversation_id > / tracker / events POST append_events
/ webhooks / rest GET custom_webhook_RestInput . health
/ webhooks / rest / webhook POST custom_webhook_RestInput . receive
/ model / test / intents POST evaluate_intents
/ model / test / stories POST evaluate_stories
/ conversations / < conversation_id > / execute POST execute_action
/ domain GET get_domain
/ socket . io GET handle_request
/ GET hello
/ model PUT load_model
/ model / parse POST parse
/ conversations / < conversation_id > / predict POST predict
/ conversations / < conversation_id > / tracker / events PUT replace_events
/ conversations / < conversation_id > / story GET retrieve_story
/ conversations / < conversation_id > / tracker GET retrieve_tracker
/ webhooks / socketio GET socketio_webhook . health
/ status GET status
/ model / predict POST tracker_predict
/ model / train POST train
/ model DELETE unload_model
/ version GET version
介面說明
a 、获取版本接口 GET方法
url : http : // 172.18 . 103.43 : 5005 / version
b 、获取服务的状态 GET方法
url : http : // 172.18 . 103.43 : 5005 / status
{
"model_file" : "models/20200109-103803.tar.gz" ,
"fingerprint" : {
"config" : "99914b932bd37a50b983c5e7c90ae93b" ,
"core-config" : "506804ad89d3db9175b94c8752ca7537" ,
"nlu-config" : "45f827a042c25a6605b8a868d95d2299" ,
"domain" : 2088252815302883506 ,
"messages" : 2270465547977701800 ,
"stories" : 1278721284179639569 ,
"trained_at" : 1578537378.2885341644 ,
"version" : "1.4.1"
},
"num_active_training_jobs" : 0
}
c 、会话接口 POST方法
url : http : // 172.18 . 103.43 : 5005 / webhooks / rest / webhook
参数:{
"sender" : "000001" ,
"message" : "你好"
}
返回参数:
[
{
"recipient_id" : "202005210002" ,
"text" : "您好,我是智能助手小笨,有什么可以帮您的?"
}
]
d 、 button接口
e 、检索story
f 、 story (话术)可视化
- 2020.1.7 接入釘釘群,支援主動推播訊息、outgoing交互
- 2020.1.9 接入微信
- 2020.5.1 解決rasa的跨域請求問題
- 2020.6 引入botfront