?

基于Rasa的任務型對話系統設計與實現

2022-04-22 11:21劉宇杰陳家豪周浩冉
現代計算機 2022年3期
關鍵詞:意圖模塊用戶

劉宇杰,陳家豪,宋 暉,周浩冉

(東華大學計算機科學與技術學院,上海 201620)

0 引言

近年來,隨著大數據理論和機器學習技術的發展,構建一個智能對話系統不再是一件難事。一方面,我們可以讓機器學習在給定輸入的情況下響應什么以及如何響應,這使我們能夠構建數據驅動、面向特定任務的對話系統。另一方面,機器學習技術已被證明能有效捕獲數據中的復雜模式,并為自然語言處理和推薦系統等眾多研究領域提供了強大動力。

對話系統按照對話的目標可以分為4類:任務型對話系統、閑聊型對話系統、問答型對話系統以及推薦型對話系統。任務型對話系統是通過自然語言交互的形式來幫助用戶完成某個特定的任務,如行程安排、網上訂票、訂餐服務等;閑聊型對話系統通常不會有明確的目標,其關注點在于生成流暢、合理且自然的回復,主要功能是消遣娛樂;問答型對話系統旨在基于特定的知識庫,回答用戶的問題,主要是用來幫助用戶獲取其關注的信息;而推薦型對話系統則可以看作問答型對話系統的一種,主要是利用人機交互在知識庫中查找最符合用戶需求的產品或服務。

本文主要針對任務型對話系統實現所需要的理論和技術展開論述,在此基礎上面向企業服務領域詳細介紹如何使用Rasa框架搭建對話系統,以及Rasa對話系統如何和其他部分協同完成一個完整的語音對話系統。

1 相關研究和技術

1.1 任務型對話系統

任務型對話系統又稱多輪對話系統,其目的是完成特定的需求和任務。早期的任務型對話系統主要通過語義理解等方法來確定用戶意圖,并且通過狀態追蹤和策略選擇等方法來確定如何進行答復。隨著人工智能技術的發展,越來越多的機器學習方法被應用于任務型對話系統,由此誕生了基于端到端(End-to-End)的任務型對話系統。

1.2 任務型對話系統實現方式

從實現技術上來看,任務型對話系統分為管 道(pipeline)方 法 和 端 到 端(End-to-End)方法。

1.2.1 管道方式

基于管道方法的任務型對話系統主要包括5部分:自動語音識別(automatic speech recog?nition,ASR)、自然語言理解(nature language understanding,NLU)、對話管理(dialogue man?agement,D M)、自然語言生成(natural language generation,NLG)和語音合成(Text To Speech,TTS),其流程如圖1所示。

圖1 任務型對話系統流程

管道方法一般是由各個模塊級聯而成,各模塊需要定義各自相應的接口模式,從而確定每個模塊的輸入輸出。在管道方法中,自然語言理解和對話管理這兩個模塊在整個方法中的邏輯聯系最緊密,是任務型對話系統的核心模塊。

(1)自然語言理解(natural language under?standing,NLU)。自然語言理解的目的是提取用戶的輸入為定義好的槽值和意圖,通常包括兩個任務:意圖識別和語義槽填充。意圖識別屬于分類任務,它根據用戶當前的輸入,使用機器學習中的分類方法推斷用戶的意圖屬于預定義的候選集中的哪一個。語義槽填充與領域識別不同,其本質上是一個序列標注問題,其目的是識別句中的語義槽和相應的值。

(2)對話管理(dialogue management,DM)。對話管理分為兩部分:對話狀態跟蹤(dialogue state tracking,DST)和對話策略優化(dialogue policy optimization,DTO)。對話管理模塊的流程如圖2所示。

圖2 對話管理模塊流程

1)對話狀態跟蹤。對話狀態跟蹤方法會在每一輪對話完成后更新并輸出當前用戶對話狀態。其主要實現方法有基于規則的對話狀態跟蹤方法、基于統計方法的對話狀態跟蹤方法和基于神經網絡的對話狀態跟蹤方法等。

2)對話策略優化。對話策略是指根據當前的對話狀態選擇合適的策略,而后生成相應的回復。對話策略優化的方法分為基于規則的方法和基于機器學習的方法兩種。

1.2.2 End-to-End方法

基于端到端的任務型對話系統和管道方法不同,其不通過各個子模塊的聯結來獲取回復,而是直接根據問題和系統回復去學習其中的映射關系。其方法可以大致分為兩類:基于檢索的方法和基于生成的方法。

2 系統設計與實現

本系統面向企業信息,為企業管理者提供數據查詢服務。下面先介紹Rasa框架以及如何基于Rasa框架根據企業數據來搭建對話系統,然后再介紹Rasa對話系統和其他系統之間如何交互。

2.1 Rasa框架

Rasa對話系統基于Rasa框架,Rasa是一個基于機器學習實現多輪對話的開源機器人框架。其中包含兩個主要模塊Rasa_nlu與Rasa_core和一些其他的工具模塊。Rasa_nlu模塊是自然語言理解模型集合,主要包括實體識別、意圖識別、特征提取、槽值提取等功能,主要完成對話系統中自然語言理解模塊的功能;Rasa_core模塊決定接下來系統對用戶的回復,即實現與用戶的交互邏輯,主要完成對話系統中對話管理模塊的功能。其主要文件及其作用如表1所示。

表1 Rasa對話系統主要文件及其作用

2.2 自然語言理解(NLU)模塊實現

針對企業服務領域數據,Rasa對話系統根據數據表常用字段在domain.yml文件中定義了24個意圖(包括打招呼、感謝、再見等系統意圖和具體查詢意圖)、28個實體和一些模板回復語句。根據意圖定義的自然語言理解(對應表1中的nlu.md)部分訓練數據示例如程序1所示。

以上述意圖為例,“##”后為意圖名稱,該意圖為查詢園區內/外資企業的數量;“-”后為該意圖具體訓練數據,數據采用實體標注的形式。小括號內為實體名,中括號內為實體具體值。

2.3 對話管理(DM)模塊實現

對話管理部分(對應表1中的story.md)訓練數據以故事形式給出,程序1對應的訓練數據示例如程序2所示。

以上述故事為例,“*”后為用戶意圖,“-”后表示系統的具體反饋動作,該示例表示系統識別到名稱為capital_nature的槽的具體值為外資,并且填充槽值后做出名為action_num?ber_foreign_capital_enterprises的反饋動作。

系統做出的反饋動作以類的形式定義,需要繼承Rasa對話系統提供的Action類并重寫其方法,需要重寫的方法如表2所示。

表2 Action類中需要重寫的方法

2.4 領域數據校正

針對識別后的公司名(公司簡稱)與數據庫中對應字段的匹配問題,系統使用基于動態規劃的拼音相似度和余弦相似度來聯合計算識別到的公司名和數據庫中公司名的相似度,并根據設定閾值確定數據庫中是否存在與識別到的公司名對應的數據。下面具體闡述系統使用的相似度計算方法。

將詞看作一個字符串序列,設搜索詞為,候選詞集合為{,,,…,w},對于搜索詞和每一個候選詞w,設其長度分別為,,[][]為搜索詞從0位置到位置組成字符串與第k個候選詞w從0位置到位置組成字符串的相似度,則[][]為和w的相似度,動態規劃的邊界條件為[][0]=,[0][]=,其中0≤≤,0≤≤,其狀態轉移方程為:

公式(1)中,[][]可由以下三種情況轉移而來:

(1)[][]=[-1][]+1,表示搜索詞中0到1位置與當前候選詞w中0到位置的相似度加1(減少的位置字符,1可視為與空字符是否相等)。

(2)[][]=[][-1]+1,表示搜索詞中0到位置與當前候選詞w中0到-1位置的相似度加1(w減少的位置字符,1可視與空字符是否相等)。

(3)[][]=[][-1]+cost,表示搜索詞中0到-1位置與當前候選詞w中0到-1位置的相似度加cos(tcost為的位置字符和w的位置字符是否相等)。

由于字符相等cost取0,字符不等cost取1,所以上述三種情況取最小值(結果越小相似度越高),即為[][]當前結果,當=時,[][]即為當前兩個字符串的相似度。

算法會遍歷所有候選詞,使用上述方法找出和當前搜索詞相似度最高的前三個候選詞,分別再對每一個候選詞和搜索詞使用余弦相似度計算出聯合相似度,找出相似度最高的一組。如果相似度最高的候選詞大于設定閾值,那么認為候選詞與搜索詞匹配,否則認為無候選詞和搜索詞匹配。

在Rasa對話系統中使用該方法,雖然能在較大程度上解決公司名與數據庫中對應字段的匹配問題,但是由于算法復雜度較高,仍然存在當候選詞過多導致匹配速度變慢的問題。

2.5 對話系統設計

對話系統分為App端、Rasa對話系統和企業信息查詢系統。App端負責系統和用戶交互,并且把對話信息持久化到數據庫中;Rasa對話系統負責接收App端的用戶問題,經過處理后將結果返回給App端;企業信息查詢系統負責查詢企業信息,并可以對查詢信息做簡單統計,對外提供接口供Rasa對話系統調用。系統之間各個部分交互如圖3所示。

圖3 對話系統交互

用戶在App輸入對話問題,App端通過Http Post請求將問題發送到Rasa對話系統,對話系統通過Flask框架接收請求并且將問題和用戶信息交給Rasa框架的NLU模塊,NLU模塊處理完成后將識別結果(意圖和實體)交給到Rasacore模塊,Rasa-core模塊選擇采取某個動作,再進入action模塊調用API(企業信息查詢系統)得到具體結果和tracker中的信息(用戶對話歷史和用戶狀態)一并返回給App端,App端顯示回答信息并將該輪對話和tracker中的信息持久化到數據庫中。

3 結語

隨著人工智能技術的不斷發展,人機對話系統對于社會發展的貢獻會更加顯著。任務型對話系統會和人工智能技術、大數據理論更加緊密結合,向更加成熟和穩定的方向發展。

本文提出的任務型對話系統可以替代原有的需要人工操作的后臺管理系統,可以提高管理員進行企業管理時的效率。使用語音輸入來替代繁瑣的頁面操作,可以讓管理者從后臺管理中脫離出來,達到即說即用即查的效果;同時也為面向企業服務領域的任務型對話系統提出一個工業級別可實現的解決方案。

猜你喜歡
意圖模塊用戶
基于高速公路的駕駛員換道意圖識別
基于用戶和電路的攻擊識別方法
2021少兒出版用戶觸達能力指數
Module 2 Highlights of My Senior Year
Module 4 Music Born in America
自然教育《小螞蟻的生日會》教案
信用卡資深用戶
不打自招
必修模塊相關知識過關訓練
不打自招
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合