對話系統rasa學習及使用


最近要做一個簡單金融場景的對話問答系統,由於一開始沒有業務數據,首先想到的就是話術模版問答,在調研了一些技術文章和系統后,發現比較常用的就是rasa,比較適合單一業務場景的對話,大廠的開放式問答可能是很多人自主研發的一套框架,對於很多中小廠則主流使用的是rasa,可以減少一部分基建的時間。

 

一個完整的對話系統流程圖如下所示:

 

Rasa的框架涵蓋了上圖右邊虛線框的部分。

 

rasa簡介

網上資料很多,直接貼github上的描述:Rasa is an open source machine learning framework to automate text-and voice-based conversations. 

 

主要意思就是它是一個機器學習的框架,能夠自動進行文本和語音的對話。

 

Rasa的核心模塊是NLU和對話管理

 

NLU:利用規則、機器學習,統計學習,深度學習等方法,對一條人類語言進行文本分析,分析得到的主要結果為意圖intent以及實體entity信息。其中,意圖對應task-orient對話系統中的intent。而實體信息則用於對話系統中的槽填充。

對話管理:在rasa中,對話管理的主要職責是通過NLU的分析得到的意圖和實體信息,進行槽位填充,然后結合前幾輪對話的狀態,根據某種策略(策略可以是人工規則,或者機器學習,深度學習,強化學習訓練得到的策略模型),決定應當如何對當前用戶的對話進行回應。因此rasa的對話管理是包括槽填充的。

除了上述兩個核心內容外,rasa當然還提供其他功能,如response生成,與其他對話系統前端平台對接的接口,以及不同類型的對話模擬接口(包括shell命令行模式,restful api調用模式等),對於從頭開發一個對話系統來說,這個框架還是省去了不少基建的工作。

 

rasa使用

根據github的安裝步驟,用pip命令安裝rasa和rasa-sdk這兩個包。安裝完之后,使用命令行進行使用。

首先使用rasa init命令,它會生成一個最原始的文件夾,包含了基礎的配置文件以及簡單的example。

然后開始根據自己業務場景修改代碼和配置文件,主要流程如下:

1. 編寫配置domain.yml文件,配置內容包括:設計的槽位,NLU需要識別的實體列表、意圖列表,bot回復用戶的模板,配置可在story中直接引用的action,配置自定義的form。

2. 編寫配置config.yml文件,配置內容包括:使用的NLU模塊類(實體抽取、意圖識別等),使用的策略列表。

3. 編寫stories.md文件,設計話術流程模板。

4. 開發自定義的NLU模塊,根據實際需要添加所需的模塊。一般來說需要加入extractor和classifier模塊,分別對應實體抽取和意圖識別兩個模塊,可以結合人工規則和機器學習模型。也可以直接配置nlu.md模塊,使用規則進行意圖匹配。

5. 開發自定的form action模塊,在validate中定義自己的處理邏輯。當然也可以重寫action的run方法,在其中添加自己的邏輯。根據文檔指導如何在action中添加一些函數。

6. 配置endpoints.yml文件,這個文件是用於配置action服務地址的。因為之前說過action是一個獨立於主流程的服務,因此需要配置其服務接口。

7. 配置credentials.yml文件,rasa支持將對話系統封裝成一個restful_api服務。另外提一句,rasa使用的是sanic的異步web框架。因為對話系統是一個多用戶的異步服務,所以需要支持多個用戶的同時使用。在文檔的描述中restful接口不需要修改任何參數,只需要執行rasa run命令,然后用post命令,並且url后綴要加上/webhooks/rest/webhook 

 

 

 

一些需要注意的地方:

我主要關注的模塊是form action這個動作,但是在文檔中的描述沒有提到要繼承FormAction這個父類,我直接繼承了action這個父類,導致一直報錯,進入不了form流程中。

 

formaction也是custom action的一種,所以在調試的時候需要啟動action服務,否則會報錯。

 

各個種類的action命名規則需要按文檔來,formaction命名比較特殊,按form的規則命名。

 

比較好用的方法:

在測試的時候用rasa run —debug 和rasa run actions —debug可以比較方便的定位問題的產生原因。

在測試自定義邏輯時可以使用rasa shell —debug進行邏輯調整和測試。

 

參考文獻:

  1. https://legacy-docs-v1.rasa.com/1.10.18/core
  2. https://zhuanlan.zhihu.com/p/75517803
  3. https://www.jianshu.com/p/4ecd09be4419
  4. https://github.com/charlesXu86/Chatbot_RASA

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM