rasa的使用
一. 安裝
rasa有NLU和core兩個模塊,可以使用pip全部安裝,默認是基於tensorflow2.1版本的
直接使用pip安裝
# 創建一個python是3.6.8的環境
conda create -n qa python=3.6.8
# 使用pip安裝rasa
pip install rasa
二. 創建一個簡單的語音助手
- 創建一個空項目
# 如果不加--no-prompt會問很多問題,加上之後就直接創建一個工程
rasa init --no-prompt
創建之後包含的文件:
- NLU訓練數據
實際上是意圖分類的訓練數據
以##
開頭的是意圖,並且是以intent:
開頭,下面以-
開頭的是訓練數據。 - 模型配置文件
包括NLU和Core的配置文件,兩部分,定義了pipline使用的模型。language是在創建模型的時候創建的。
如果使用配置的字典應該如何使用?
- 配置stories
stories.md
文件是rasa core模塊的訓練數據,是一個assistant完成對話最重要的一步,如果不配置的話,只能訓練Nlu的模型。
## story1
* greet
- utter_greet
- 定義domain.yml文件
每一個機器人有一個domain,裏面定義了intents、slots、responses。
intents:
- greet
- goodbye
- affirm
- deny
- mood_great
- mood_unhappy
- bot_challenge
responses:
utter_greet:
- text: "Hey! How are you?"
utter_cheer_up:
- text: "Here is something to cheer you up:"
image: "https://i.imgur.com/nGF1K8f.jpg"
utter_did_that_help:
- text: "Did that help you?"
utter_happy:
- text: "Great, carry on!"
utter_goodbye:
- text: "Bye"
utter_iamabot:
- text: "I am a bot, powered by Rasa."
session_config:
session_expiration_time: 60
carry_over_slots_to_new_session: true
- 訓練模型
rasa訓練可以指定模型存儲的位置及模型的名字。
rasa train --out models --fixed-model-name rasa_zh_model
- 啓動模型
rasa shell
三、命令行
- 啓動交互模式,並指定已經訓練好的模型
rasa interactive --model model/rasa_zh_model.tar.gz
啓動之後可以輸入對話的內容來與assitant對話,並可以查看意圖分類的結果及閾值。
退出交互模式時,會提醒把stories添加到stories.md文件,NLU數據添加到data/nlu.md數據上。
所以,interactivate的作用是通過交互的模式來訓練模型,訓練完成後並保存訓練數據。
- 啓動模型服務
指定訓練好的模型作爲服務模型,並使用--endpoints
來指定actions的服務端口。
rasa run --model models/rasa_zh_model.tar.gz --endpoints endpoints.yml
有一個問題是,這樣啓動了模型怎麼實現對話呢?
- 啓動actions服務
這樣自定義的action纔可以註冊,並被使用,否則無法使用。參數--actions
後面是包名,而不是文件路徑。
rasa run actions --actions dm.actions
- 訓練數據的格式轉化
把nlu數據從md文件格式轉換爲json格式,--data
是原始文件,--out
是轉化後的文件,-f
是指定轉化後的數據格式。
這個可以方便後臺管理界面配置好intent後,寫到算法的後臺。
# 從md文件轉化爲json
rasa data convert nlu --data data/nlu.md --out data/nlu.json -f json
# 從json轉化爲md文件
rasa data convert nlu --data data/nlu.json --out data/nlu_md.md -f md
- 可視化stories
把stories可視化,生成一個html文件,本地可以打開。
rasa visualize
從START到END一共4個story,藍色框的是用戶說的話,白色框的是assistant說的話。左邊三個story都是以問好的形式來開始的。
四 rasa整體流程
參考
知乎:https://zhuanlan.zhihu.com/p/88625091
https://www.jianshu.com/p/ad11f5815447
rasa使用指南01
https://terrifyzhao.github.io/2018/09/17/Rasa%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%9701.html
rasa使用指南02
https://terrifyzhao.github.io/2019/02/26/Rasa%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%9702.html
action有三種類型:
- default action
- utter action
- custom action