當前位置:
首頁 > 知識 > 北郵張慶恆:如何基於 rasa 搭建一個中文對話系統

北郵張慶恆:如何基於 rasa 搭建一個中文對話系統

對話系統是自然語言處理的一個熱門話題,而自然語言理解則是對話系統的關鍵組成部分,現有的很多自然語言理解工具往往以服務的方式獲取(Google 的 API.ai, Facebook 的 Wit.ai 等),使用這些服務往往需要向服務提供商提供自己的數據,並且根據自己業務調試模型很不方便。本文為大家介紹了一種新方法,即如何基於 rasa 搭建一個中文對話系統。

張慶恆,北京郵電大學網路技術研究院,網路與交換技術國家重點實驗室碩士,主要研究方向為機器學習與自然語言處理。曾在百度實習且多次參加機器學習、深度學習比賽,獲阿里雲安全演算法挑戰賽獲冠軍,中文標註開源項目 Chinese-Annotator 主要開發成員。

分享主題

基於 rasa 搭建中文對話系統

分享提綱

1. 對話系統的分類和關鍵技術介紹

2. 結合電信業務查詢辦理場景,藉助開源框架 rasa 實現任務導向型聊天機器人 demo。

2.1 rasa nlu 中文自然語言理解實現,及其背後的原理

2.2 rasa core 對話管理實現,結合源碼介紹其實現方法

主要內容

大家好,今天的分享內容首先是為大家介紹基於任務型對話系統的主要概念和它的幾個模塊。第二部分是基於 Rasa 搭建電信領域任務型對話系統的實操訓練。分別是基於 Rasa nlu 實現自然語言理解和基於 rasa core 實現對話管理。

自然語言理解(NLU)和對話管理是任務型對話的主要模塊。自然語言理解是問答系統、聊天機器人等更高級應用的基石。下面列舉三個典型的問答系統:

第一個是檢索型問答系統,主要針對問答系統,提一個問題,給一個答案,不需要參考上下文內容的形式。

第二個是任務型對話系統,針對買票,訂票之類的任務型對話。

第三個是閑聊系統,像微軟小冰,主要陪聊天等。

任務型對話系統示意圖

任務型對話主要包括四部分 ,語音識別,自然語言理解,對話管理,最後是自然語言生成。

下面是一個訂餐應用的例子。

接下來分別來看每個模塊具體實現的方式

首先是自然語言理解。做自然語言理解首先要有一種表示自然語言含義的形式,一般用傳統的三元組方式即:action, slot , value。action 就是意圖,slot 是需要填充的槽值,value 是對應的值。

具體可以用哪些技術做這些事情呢?下面列出了三個方法。

第一個是語法分析,可以通過語法規則去分析一句話,得到這句活是疑問句還是肯定句,繼而分析出用戶意圖。相應的也可以通過語法結構中找到對應的槽值。

第二種方法是生成模式,主要兩個代表性的 HMM,CRF, 這樣就需要標註數據。

第三種方法是分類思想,先對一句話提取特徵,再根據有多少個槽值或意圖訓練多少個分類器,輸入一句話分別給不同的分類器,最終得到包含槽值的概率有多大,最終得到這個槽值。

還有一種採用深度學習方式,使用 LSTM+CRF 兩種組合的方式進行實體識別,現在也是首選的方法 ,但有一個問題是深度學習的速度比較慢 ,一般輕量型的對話系統還是通過語法分析或分類方式或序列標註來做。

對話狀態應該包含持續對話所需要的各種信息。DST 的主要作用是記錄當前對話狀態,作為決策模塊的訓練數據。

系統如何做出反饋動作?

任務型對話其他模塊

第二部分是用 Rasa 實現任務型對話系統。Rasa nlu 是自然語言理解框架,主要實現實體識別,意圖識別等。Rasa core 是對話管理框架,主要實現狀態跟蹤、policy 訓練,在線學習等。

實操部分使用 rasa nlu 和 rasa core 實現一個電信領域對話系統 demo,實現簡單的業務查詢辦理功能『』具體代碼實現過程推薦觀看 AI 慕課學院提供的視頻回放。

NLP 工程師入門實踐班:基於深度學習的自然語言處理

三大模塊,五大應用,手把手快速入門 NLP

海外博士講師,豐富項目經驗

演算法 + 實踐,搭配典型行業應用

隨到隨學,專業社群,講師在線答疑


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

收集數據太困難?這裡為你準備了 71 個免費數據集

TAG:AI研習社 |