摘要
本文內容基於RASA官網
- Rasa是一個基於多輪對話的框架,其中包含兩個模塊Rasa core與Rasa nlu。
- Rasa nlu是用來理解語義的,包括意圖識別、實體識別,它會把用戶的輸入轉換爲結構化的數據。
安裝Rasa
pip3 install rasa_core
pip3 install rasa_nlu[tensorflow]
Rasa Core
core包含兩個內容,stories和domain。
Stories
- stories可以理解爲對話的場景流程,即告訴機器多輪場景是怎樣的。如:用戶問好 -> 機器問用戶今天過得怎麼樣 -> 用戶反饋情緒 -> 機器根據不同的情緒進行回覆;其中包含兩個流程:一個正面情緒的流程與一個負面情緒的流程,因此我們需要編寫兩個story。
符號 | 說明 |
---|---|
## | story標題 |
* | 意圖 |
- | 動作 |
Domain
- domain可以理解爲機器的知識庫,其中定義了意圖、動作以及對應動作所反饋的內容。
- Rasa Core的任務是在獲取到用戶的意圖之後,選擇正確的action,這些action就是定義在domain中以utter_開頭的內容,每一個action會根據templates中的情況來返回對應的內容。
標識 | 說明 |
---|---|
intents | 意圖 |
actions | 動作 |
templates | 回答模板 |
entities | 實體 |
slots | 詞槽 |
訓練對話模型
- 下一步就是用神經網絡訓練我們的Core模型,可以直接執行下列命令。訓練模型將會存儲在models/dialogue文件夾下。
python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue
- 可以發現,訓練過程中採用了一個神經網絡,結構爲:masking -> lstm -> dense -> activation。masking層:在Nlu領域,輸入的內容可能不是一樣長的,爲了能統一處理數據需要定長,因此某些值需要補0或者截取多餘內容,但是補0的部分其實是沒有意義的,masking層能讓這些補0的部分不參與之後的計算,從而提升運算效率。
嘗試交流
- 可以執行指令
python -m rasa_core.run -d models/dialogue
Rasa NLU
添加nlu模塊
- 目前機器人可以通過輸入意圖來獲取答案,NLU模塊負責讓機器理解真正的語言,任務是解析消息,能把自然語言解釋稱我們需要的結構化數據。
RASA安裝2
安裝方式
- Rasa另一個推薦安裝方式是通過pip,這種方式將同時安裝Rasa和Rasa X:
pip3 install rasa-x --extra-index-url https://pypi.rasa.com/simple
NLU管道依賴項
- Rasa NLU有用於識別意圖和實體的不同組件,其中大多數有一些額外的依賴項。
- 當訓練nlu時,Rasa將檢查是否安裝了所有必須的依賴項,並告知缺少哪個依賴項。如果想確保爲你可能需要的任何組件安裝了依賴項,而且不介意有其他依賴項存在,可以使用:
pip3 install -r alt_requirements/requirements_full.txt