国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Rasa框架的智能對話系統(tǒng)研究與設(shè)計

2023-03-14 07:55:38李孟全吳士泓王志剛
現(xiàn)代計算機 2023年1期
關(guān)鍵詞:組件框架動作

李孟全,吳士泓,王志剛

(遠(yuǎn)光軟件股份有限公司,珠海 519085)

0 引言

在企業(yè)推進以人機協(xié)同系統(tǒng)為基礎(chǔ)的智能化進程中,任務(wù)型對話系統(tǒng)是其中最核心的領(lǐng)域,需要各方深入研究和推動。趙陽洋等[1]認(rèn)為,盡管對話系統(tǒng)近年來有較大的發(fā)展,能夠幫助用戶完成簡單的任務(wù),但其在通用性、深度理解等方面還面臨著許多挑戰(zhàn)。筆者研究了Rasa開源框架,發(fā)現(xiàn)Rasa在通用性和深度理解方面具備一定的優(yōu)勢,該框架設(shè)計高效、靈活,提供了對話機器人開發(fā)時必要的基礎(chǔ)架構(gòu)和工具,尤其是Bunk等[2]基于Rasa框架提出的DIET模型,能夠?qū)τ脩粢鈭D和實體信息進行聯(lián)合建模,且Rasa整體上與NLP技術(shù)的最新研究進展融合性很好。所以,本文將基于Rasa框架深入研究和設(shè)計一套智能對話系統(tǒng),以便減輕相關(guān)人員的工作壓力,滿足公司“提質(zhì)增效”的管理需求,為企業(yè)數(shù)字化轉(zhuǎn)型奠定堅實基礎(chǔ)。

1 研究現(xiàn)狀和問題

1.1 對話技術(shù)研究現(xiàn)狀

對話技術(shù)大體上經(jīng)歷了三個發(fā)展階段,分別是基于符號規(guī)則和模板階段、基于傳統(tǒng)機器學(xué)習(xí)階段、基于深度學(xué)習(xí)階段。

基于符號規(guī)則和模板階段。該階段的技術(shù)嚴(yán)重依賴專家手工制定的語法規(guī)則和本體設(shè)計,優(yōu)點是容易理解,缺點是人工成本非常高、擴展性差。例如,Goddeau等[3]提出的有限狀態(tài)機方法需要人工預(yù)先定義好全部狀態(tài)和狀態(tài)轉(zhuǎn)移條件,采用NLU輸出中得分或概率最高的結(jié)果才能完成對話狀態(tài)更新,該方法缺點是無法解決錯誤識別問題,且在復(fù)雜應(yīng)用場景下靈活性不足。后來,Sun等[4]提出用于修正NLU中錯誤識別的N-Best列表分?jǐn)?shù)方法,但缺點也同樣明顯:相關(guān)參數(shù)依賴人工編制,不能根據(jù)數(shù)據(jù)分布情況進行學(xué)習(xí)。

基于傳統(tǒng)機器學(xué)習(xí)階段。該階段的技術(shù)方法包括K近鄰、決策樹、樸素貝葉斯、邏輯回歸、集成學(xué)習(xí)、條件隨機場、支持向量機(SVM)等。該階段的技術(shù)雖然具備弱學(xué)習(xí)能力,但漏洞修補難度大,也不利于模型大規(guī)模應(yīng)用。例如,Lewis等[5]、Zhang等[6]認(rèn)為樸素貝葉斯模型的獨立假設(shè)條件比較苛刻,在實際場景中應(yīng)用價值不大;Yang等[7]、Weinberger等[8]認(rèn)為K近鄰算法在結(jié)果一致性方面簡單、有效,且重新訓(xùn)練代價低,但其性能過于依賴模型查找到的最近鄰距離度量,且面對高維數(shù)據(jù)時處理效果不佳。Joachims[9]指出SVM應(yīng)對高維空間和過擬合時表現(xiàn)出來的穩(wěn)健性不錯,但其性能又高度依賴于相關(guān)參數(shù)和核函數(shù)的選擇。Lubis等[10]通過變分自編碼潛在動作空間對對話策略進行優(yōu)化,主要探索了預(yù)訓(xùn)練、動作知情的先驗和多任務(wù)學(xué)習(xí)三種借助輔助任務(wù)塑造潛在變量分布的方法,優(yōu)點是與目前的Transformer不同,不需要額外的數(shù)據(jù),且計算成本低,在端到端對話任務(wù)上效果顯著,但在長距離上下文和對話軌跡準(zhǔn)確性方面有待完善。

基于深度學(xué)習(xí)階段。該階段的技術(shù)促使了端到端的學(xué)習(xí)成為可能,是目前研究的主流方法,也涌現(xiàn)了大量的研究成果,當(dāng)然也存在一定程度的不足。目前在處理序列標(biāo)注任務(wù)時會在傳統(tǒng)序列標(biāo)注方法基礎(chǔ)上加入深度學(xué)習(xí)方法,例如,Ma等[11]、Dilek等[12]提到的具有條件隨機場層的雙向LSTM,成為目前處理序列標(biāo)注任務(wù)的主流模型,既可以兼顧上下文又可以兼顧依賴關(guān)系信息,滿足過去和未來的信息均可被充分利用的要求,但該方法有時候還是需要人工構(gòu)建特征;其他方面,馮強中[13]利用知識圖譜和神經(jīng)網(wǎng)絡(luò)(主要是雙向LSTM)進行知識增強,將復(fù)雜且非標(biāo)準(zhǔn)的自然語言查詢語句轉(zhuǎn)換為符合公司知識庫標(biāo)準(zhǔn)的問題,再結(jié)合知識庫中的問題、相似問題和答案等實體構(gòu)建知識圖譜,完成智能問答工作,但不足之處是模型僅限于其公司內(nèi)部相關(guān)數(shù)據(jù)上的表現(xiàn)不錯;Li等[14]提出了一種上下文感知的動態(tài)卷積網(wǎng)絡(luò),可以在生成卷積核的同時充分利用上下文信息,提出的新網(wǎng)絡(luò)框架可被擴展至多任務(wù)學(xué)習(xí)下的雙通道上,用于完成對話行為和情感分類的聯(lián)合識別任務(wù)。

1.2 目前存在的問題

目前主流的深度學(xué)習(xí)方法在對話任務(wù)的表現(xiàn)不錯,但有些問題需要進一步解決,比如:①模型中領(lǐng)域漂移(domain shift)、語義間隔等問題;②目前對于語言的理解多數(shù)停留在語義表層,復(fù)雜場景下融合知識后的邏輯推理能力偏弱;③域適應(yīng)能力面臨的問題亟需解決,以便應(yīng)對自由度比較高的對話場景。

2 Rasa框架概述

Rasa是一個用于構(gòu)建智能對話機器人的開源機器學(xué)習(xí)框架,擁有大量的可擴展特性組件,幾乎覆蓋對話系統(tǒng)的所有功能,是目前對話系統(tǒng)的主流開源框架[15],主要包含以下四部分。

(1)Rasa NLU:提取用戶想要做什么和上下文關(guān)鍵信息;

(2)Rasa Core:基于對話歷史,選擇最優(yōu)的回復(fù)和動作;

(3)通道(channel)和動作(action):連接對話機器人與用戶及后端服務(wù)系統(tǒng);

(4)輔助系統(tǒng):Tracker Store、Lock Store和Event Broker等。

Rasa內(nèi)部運行機制如圖1所示。用戶可以利用通道支持的客戶端將查詢信息輸入對話系統(tǒng),Rasa NLU負(fù)責(zé)將用戶的輸入轉(zhuǎn)換成意圖和實體信息,完成自然語言理解工作。然后,Rasa Core負(fù)責(zé)基于當(dāng)前和歷史的對話記錄(其中NLU的輸出是對話記錄的一部分)采取下一個動作,下一個動作可以是回復(fù)用戶信息、調(diào)用用戶自定義的動作類。自定義動作運行在一個單獨的服務(wù)進程中,被稱為動作服務(wù)器,該服務(wù)器通過HTTP(hypertext transfer protocol)與Rasa Core進行相互通信。多數(shù)情況下,我們重點關(guān)注Rasa NLU和Rasa Core兩個核心部分。

圖1 Rasa內(nèi)部運行機制示意圖

3 系統(tǒng)設(shè)計與實現(xiàn)

3.1 自然語言理解模塊

3.1.1 Rasa NLU模塊中各類組件

Rasa NLU主要是通過監(jiān)督學(xué)習(xí)算法完成意圖提取和實體提取,所以需要自行準(zhǔn)備一些包含意圖信息和實體信息的語料。這里將以某央企總部制定的“會計基礎(chǔ)管理辦法”及省公司本部制定的“會計科目責(zé)任制管理規(guī)范(業(yè)務(wù)規(guī)范)”等原始數(shù)據(jù)為基礎(chǔ),準(zhǔn)備需要的相關(guān)語料,同時會根據(jù)最新的內(nèi)外部政策要求更新語料庫。

Rasa NLU在軟件架構(gòu)設(shè)計上比較靈活,允許開發(fā)人員自行使用各種算法完成相關(guān)工作,這些算法的具體實現(xiàn)被稱為組件(component)。由于這些相互連接的各類組件及組件間的數(shù)據(jù)流共同組成了有向無環(huán)圖,所以Rasa NLU也可以被看作一個基于有向無環(huán)圖的通用框架。自然語言理解模塊通常有實體識別和意圖識別兩個任務(wù),為了完成這些任務(wù),圖2給出了一個典型的Rasa NLU配置通常包含的各類組件,下面針對這些組件進行逐一說明。

圖2 典型Rasa NLU組件示意圖

3.1.2 流水線配置

由上面分析可知,Rasa NLU是基于有向無環(huán)圖進行組件配置,這種有向無環(huán)圖在Rasa中被稱為流水線(pipeline),配置文件格式為YAML,配置樣例如算法1所示。

算法1流水線配置樣例

recipe:default.v1

language:zh

pipeline:

-name:JiebaTokenizer #使用Jieba中文分詞器

-name:LanguageModelFeaturizer

#基于HuggingFace的Transformers庫

model_name:bert #BERT的語言模型和架構(gòu)

model_weights:bert-base-chinese#BERT的中文語言模型和架構(gòu)

-name:RegexFeaturizer

#讀取訓(xùn)練數(shù)據(jù)中的正則表達式配置

-name:DIETClassifier

#Rasa提供的實體和意圖聯(lián)合提取組件

epochs:100 #模型運行100個epoch

learning_rate:0.001

tensorboard_log_directory:./log

-name:ResponseSelector

epochs: 100

learning_rate: 0.001 #模型學(xué)習(xí)率

- name: EntitySynonymMapper #實體識別組件

3.1.3 Rasa NLU分析結(jié)果

如果輸入“請問車輛燃油費報銷時需要上傳哪些附件”,NLU將會給出如算法2所示的解析結(jié)果,顯然“attachment”和“attachment”之間的相關(guān)性明顯高于與“goodbye”的相關(guān)性。

算法2Rasa NLU分析結(jié)果

“text”:“請問車輛燃油費報銷時需要上傳哪些

附件”,

“intent”:{

“id”:5313274288154357548,

“name”:“attachment”,

“confidence”:0.999690031993

},

“entities”:[

“entity”:“reimbursement”

“start”:2,

“end”:9,

“confidence”:0.999778123345692,

“value”:“車輛燃油費報銷”,

“extractor”:“DIETClassifier”

],

“intent_ranking”:{

“id”:5313274288154357548”,

“name”:“attachment”,

“confidence”:0.999688021375883,

},

“id”:-3614266674174050593,

“name”:“goodbye”,

“confidence”:0.000122011470351,

3.2 對話管理模塊

Rasa Core是Rasa體系中負(fù)責(zé)對話管理(dialog management,DM)的部分,主要職責(zé)是根據(jù)NLU模塊的輸出實現(xiàn)會話行為狀態(tài)的更新和跟蹤,并結(jié)合一定的策略(policy)選擇下一個動作輸出。簡言之,對話管理的核心在于基于意圖(intent)和狀態(tài)(state)的動作預(yù)測。對話管理模塊內(nèi)部運行原理示意圖如圖3所示。

圖3 對話管理模塊內(nèi)部運行機制示意圖

3.2.1 通道

通道的主要作用是對經(jīng)過的數(shù)據(jù)進行統(tǒng)一封裝,將符合規(guī)范的數(shù)據(jù)推送至下一個節(jié)點處理。這里的通道有兩類:輸入通道和輸出通道,前者負(fù)責(zé)將用戶的身份和輸入信息封裝成用戶信息對象后推送給Processor處理,后者將對話系統(tǒng)需要返回給用戶的信息進行統(tǒng)一封裝。

3.2.2 領(lǐng)域

領(lǐng)域(domain)對象定義了對話系統(tǒng)需要掌握的所有信息,例如意圖、實體(entity)、詞槽(slot)、動作、表單(form)和回復(fù)(response)。這些數(shù)據(jù)明確界定了模型的輸入和輸出范圍,一般由Rasa框架中的配置文件domain.yml統(tǒng)一提供。

本質(zhì)上講,領(lǐng)域有利于將對話系統(tǒng)需要使用的模板信息進行統(tǒng)一管理,包括定義的意圖、實體、槽位、話術(shù)模板,以及自定義的動作和策略等。領(lǐng)域?qū)ο笤趧幼鲌?zhí)行時可以提供這些模板信息,如果需要添加或修改這些信息,只需要修改domain.yml文件里的數(shù)據(jù)就可以,不需要修改任何代碼,實現(xiàn)了系統(tǒng)配置和代碼解耦,便于整體上對對話系統(tǒng)進行管理。算法3給出了領(lǐng)域?qū)ο蟮臉永?/p>

算法3領(lǐng)域?qū)ο髽永?/p>

intents:

-goodbye

-greet

-chitchat

-deny

-stop

-affirm

-info_date

-info_reimbursement

entities:

-reimbursement

-date-time

slots:

address:

type:text

influence_conversation:false

mappings:

-entity:reimbursement

type:from_entity

date-time:

type:text

influence_conversation:false

mappings:

-entity:date-time

type:from_entity

responses:

utter_greet:

-text:您好,請問有什么事情可以幫到您?

utter_goodbye:

-text:再見!

utter_ask_reimbursement:

-text:需要咨詢哪類報銷業(yè)務(wù)問題?

utter_ask_date-time:

-text:業(yè)務(wù)什么時候發(fā)生的?

utter_ask_continue:

-text:是否要繼續(xù)?

utter_default:

-text:小E沒有理解您說的是什么意思。

actions:

-utter_greet

-utter_goodbye

-utter_ask_reimbursement

-utter_ask_date-time

-utter_ask_continue

-utter_default

-respond_chitchat

-action_reimbursement_form_submit

forms:

reimbursement_form:

required_slots:

-reimbursement

-date-time

3.2.3 故事

故事(story)是一種較高語義層次上記錄對話過程的方式,它不僅需要記錄用戶的語義表達,還需要記錄系統(tǒng)內(nèi)部正確的狀態(tài)變化。故事本身是以字典的形式存在,包含兩個鍵:story和steps。后面的策略就是通過學(xué)習(xí)故事內(nèi)容才進行動作預(yù)測的。

3.2.4 策略

策略(policy)擔(dān)負(fù)著根據(jù)當(dāng)前用戶反饋的信息告知Processor當(dāng)前一輪對話中應(yīng)該執(zhí)行的后續(xù)動作以及如何更新對話狀態(tài)信息等任務(wù)。Rasa框架中的策略管理模塊支持人工規(guī)則的策略和依靠機器學(xué)習(xí)、深度學(xué)習(xí)完成的數(shù)據(jù)驅(qū)動策略,也支持組合策略。由于前期財務(wù)領(lǐng)域的樣本數(shù)據(jù)偏少,所以采用以表單策略(form_policy)為代表的人工規(guī)則策略,該策略與動作管理中的表單動作(form_action)相對應(yīng)。需要說明的是,Rasa框架提前預(yù)置了一個叫fall_back的策略,其目的是為對話系統(tǒng)執(zhí)行一個兜底策略。

3.2.5 動作

動作接收用戶輸入和對話狀態(tài)信息,按照業(yè)務(wù)邏輯進行處理,并輸出改變對話狀態(tài)的事件和回復(fù)用戶的消息。

3.3 系統(tǒng)部署

在生產(chǎn)環(huán)境中部署對話系統(tǒng)時,使用單機部署模式,使用Redis作為Tracker store和Lock store背后的數(shù)據(jù)庫,單機高并發(fā)設(shè)置為6,滿足Rasa服務(wù)器使用6個worker,性能測試時使用REST接口連接Rasa進行對話處理,并使用JMeter等測試工具對Rasa的吞吐量和響應(yīng)時間進行測量。

4 結(jié)語

本文首先從企業(yè)以人機協(xié)同系統(tǒng)建設(shè)推進其智能化建設(shè)的角度引出對話系統(tǒng),并對選擇Rasa框架搭建智能對話系統(tǒng)進行說明,提出構(gòu)建智能對話系統(tǒng)的實現(xiàn)方式;其次,針對對話技術(shù)研究現(xiàn)狀和目前的問題進行分析,給出相關(guān)研究進展和未來挑戰(zhàn);然后,針對Rasa框架內(nèi)部運行機制進行解讀;最后,針對智能對話系統(tǒng)進行詳細(xì)設(shè)計,針對對話系統(tǒng)實現(xiàn)及系統(tǒng)部署進行說明。筆者認(rèn)為,隨著全國“全電發(fā)票”試點工作的深入推進,國內(nèi)大型企業(yè)在以財務(wù)數(shù)智化為基礎(chǔ)的智能系統(tǒng)建設(shè)步伐必將提速,以人機多元協(xié)同為主線的管理智能化創(chuàng)新應(yīng)用將會越來越多。

猜你喜歡
組件框架動作
無人機智能巡檢在光伏電站組件診斷中的應(yīng)用
能源工程(2022年2期)2022-05-23 13:51:50
框架
廣義框架的不相交性
新型碎邊剪刀盤組件
重型機械(2020年2期)2020-07-24 08:16:16
U盾外殼組件注塑模具設(shè)計
動作描寫要具體
畫動作
WTO框架下
法大研究生(2017年1期)2017-04-10 08:55:06
動作描寫不可少
一種基于OpenStack的云應(yīng)用開發(fā)框架
柯坪县| 刚察县| 集安市| 临汾市| 玉屏| 南澳县| 垣曲县| 钟祥市| 正蓝旗| 眉山市| 山西省| 亳州市| 沙坪坝区| 万全县| 锡林浩特市| 潼南县| 南郑县| 和田县| 屏东县| 马边| 芦山县| 乐山市| 冷水江市| 郑州市| 衡水市| 从江县| 禹城市| 武乡县| 曲松县| 信宜市| 镇坪县| 淳安县| 九寨沟县| 呼伦贝尔市| 河池市| 阿克苏市| 建宁县| 大荔县| 长寿区| 来安县| 淅川县|