閆崢,楊礫,2,江強,任艾,張沛然,許青青
(1.上海市公安局科技處,上海200042;2.上海交通大學(xué),上海200240;3.上海德拓信息技術(shù)股份有限公司,上海200030)
理解用戶的需求對于有效地開發(fā)任務(wù)導(dǎo)向型的對話系統(tǒng)至關(guān)重要。例如,對于“我想聽Beyond的海闊天空”,對話系統(tǒng)應(yīng)準(zhǔn)確識別出用戶的意圖是聽一首歌,并且“Beyond”和“海闊天空”分別是用戶想聽的歌手名及其歌曲名。隨著自然語言處理技術(shù)和自然語言理解技術(shù)的發(fā)展,這種能滿足用戶需求的對話系統(tǒng)也逐漸成為現(xiàn)實?;谧匀徽Z言理解的對話系統(tǒng)有著十分廣闊的應(yīng)用前景,如訂票服務(wù)、信息搜索與查詢、智能音箱、車載系統(tǒng)等,能夠隨時隨地為人們提供便捷服務(wù)。
在警情領(lǐng)域搜索系統(tǒng)中存儲著海量的數(shù)據(jù),如何從中快速準(zhǔn)確地檢索出符合用戶搜索需求的結(jié)果是目前搜索系統(tǒng)中的難點。目前,搜索引擎一般是基于關(guān)鍵詞的全文搜索,僅用一個或多個關(guān)鍵詞的匹配無法準(zhǔn)確捕獲用戶的搜索意圖,使得搜索質(zhì)量不盡人意,用戶需要花費大量時間去篩選檢索結(jié)果,從而導(dǎo)致用戶工作效率低下。而信息搜索與查詢作為基于自然語言理解的對話系統(tǒng)中一個重要應(yīng)用模塊,可從用戶輸入的自然語言查詢語句中自動獲取用戶的搜索意圖并提取相關(guān)語義成分進行搜索,返回滿足用戶查詢需求的檢索結(jié)果,能夠極大提升用戶的搜索滿意度。若將該自然語言意圖識別技術(shù)應(yīng)用于警情領(lǐng)域搜索系統(tǒng)可以有效地解決這些問題,能夠充分理解用戶的搜索意圖,從而能夠提升檢索的速度和精準(zhǔn)度。
基于意圖識別的人機對話系統(tǒng)的實現(xiàn)通常需要對自然語言信息進行語義解析形成語義理解框架,主要涉及兩個任務(wù):①識別正確的意圖,②提取符合意圖的語義要素成分,這兩個任務(wù)一般被稱為“意圖識別”和“語義槽填充”[1]。
意圖識別和語義槽填充作為人機對話系統(tǒng)兩個不可或缺的子任務(wù),兩者間存在著密切的語義關(guān)聯(lián),考慮到單獨訓(xùn)練意圖識別和語義槽填充模型不能夠充分利用這樣的語義關(guān)聯(lián)信息,同時兩個獨立模型容易造成錯誤傳播,導(dǎo)致對自然語言理解性能下降;而BERT預(yù)訓(xùn)練模型能夠捕獲自然語言的上下文語義信息且在自然語言處理和自然語言理解得到了較為廣泛的應(yīng)用?;诖?,本文面向警情領(lǐng)域語義搜索系統(tǒng),構(gòu)建了一種BERT意圖識別和語義槽填充聯(lián)合模型,對搜索系統(tǒng)中的自然語言查詢語句進行搜索意圖識別和相應(yīng)語義要素提取,從而實現(xiàn)智能化語義搜索系統(tǒng)構(gòu)建,旨在為用戶提供更加快捷精準(zhǔn)的搜索服務(wù)。
現(xiàn)有意圖識別和語義槽填充主流深度方法包含兩種方式:①獨立模型,槽填充和意圖識別獨立進行;②聯(lián)合模型,充分利用兩個任務(wù)間的關(guān)聯(lián)關(guān)系同時進行意圖識別和語義槽填充[2]。
在早期的模型中,意圖識別和語義槽填充是兩個獨立任務(wù),即單獨訓(xùn)練意圖識別模型和語義槽填充模型。其中,意圖識別可看作分類任務(wù),一般可用文本分類方法解決,而語義槽填充可看作類似于命名實體識別的序列標(biāo)注任務(wù),只是命名實體更加豐富的表現(xiàn)形式,循環(huán)神經(jīng)網(wǎng)絡(luò)在該類方法中得到較好的應(yīng)用[3-5]。雖然分類和實體識別技術(shù)都已經(jīng)較為成熟,單獨訓(xùn)練兩個模型的方法易于實現(xiàn),但這種管道式(pipeline)結(jié)合方式共同用于自然語義理解人機對話查詢系統(tǒng)并沒有考慮到意圖和語義要素之間交互信息,同時可能會產(chǎn)生錯誤傳播。
由于獨立模型有明顯的缺點,意圖識別和語義槽填充聯(lián)合模型逐步發(fā)展起來。因為在人機查詢系統(tǒng)中,意圖和語義成分總是一同出現(xiàn)在自然語言語句中,它們之間是有信息共享的,所以直覺上這兩個任務(wù)是能夠相互影響的。例如:查詢“從北京到上海的機票”,若“北京”被識別為“發(fā)站地點”,則該查詢意圖更可能是搜索訂票信息而不是天氣信息;同樣的,若意圖被識別為查詢訂票信息,則“查詢訂票信息表”這個意圖更有助于將“北京”識別為“發(fā)站地點”而不是“查詢天氣地點”。為了充分利用槽填充和意圖識別之間的語義交互信息,文獻[6-7]通過共享參數(shù)方式實現(xiàn)槽填充和意圖識別直接的關(guān)聯(lián),文獻[8]提出Slot-Gated機制,在槽填充階段引入意圖特征來深入挖掘槽填充和意圖之間關(guān)系。隨著Transformer模型和預(yù)訓(xùn)練語言模型的發(fā)展,文獻[9]采用BERT模型聯(lián)合建立槽填充和意圖識別模型。
BERT預(yù)訓(xùn)練語言模型[10]在自然語言處理和自然語言理解任務(wù)有著廣泛應(yīng)用,并且提升了很多任務(wù)上的效果,本文采用BERT模型構(gòu)建聯(lián)合模型,實現(xiàn)搜索查詢意圖識別和語義槽填充識別。例如,輸入查詢語句“張三的報警記錄”,通過BERT聯(lián)合模型,能夠同時識別出查詢意圖為“Alarm”(對應(yīng)表)、“張三”為姓名,本文模型框架如圖1所示。
圖1 模型框架
BERT預(yù)訓(xùn)練模型是由Google在2018年提出的[10],它是基于Transformer[11]模型設(shè)計的多層雙向Transformer編碼器。BERT預(yù)訓(xùn)練模型提供了功能強大的上下文語義表征方式,可作用于多個下游NLP任務(wù),如本文涉及的意圖識別、槽填充任務(wù)。BERT底層輸入是字嵌入,其輸入由字編碼(Token Embed?ding)、句子編碼(Segment Embedding)和位置編碼(Position Embedding)這3個嵌入矩陣相加組成,具體為:
(1)字編碼:用于字向量表示,將輸入文本拆分成各個字(token)后轉(zhuǎn)換為固定維度向量。在BERT中,每個字會被轉(zhuǎn)換成768維的向量表示。此外,兩個特殊的符號[CLS]和[SEP]會被分別插入輸入文本的開頭和結(jié)尾位置。其中,[CLS]的輸出向量可作為整篇文本的語義表示,通常用于分類任務(wù),本文也是基于[CLS]輸出向量進行后續(xù)意圖識別任務(wù)的。
(2)句子編碼:用于區(qū)分上下句,BERT能夠處理輸入句子對的分類任務(wù),如判斷兩個句子是否語義相似,對于本文的單句分類和序列標(biāo)注任務(wù),句子編碼沒有區(qū)別。
(3)位置編碼:作用是讓BERT學(xué)習(xí)到輸入序列的順序?qū)傩浴?/p>
給定輸入序列x=(x1,x2,…,xn),BERT的輸出結(jié)果為H=(h1,h2,…,hn)。
BERT模型很容易被應(yīng)用于意圖識別和語義槽填充聯(lián)合模型。其中,意圖識別是BERT第一個特殊字符[CLS]最后一層隱藏層輸出結(jié)果(h1)上加一層全連接層,再使用Softmax激活函數(shù)獲得意圖類別概率,意圖識別可公式(1)表示,其中i表示意圖(intent)識別任務(wù)。
對于語義槽填充,將其他字符最后一層隱藏層輸出結(jié)果(h2,hx,…,hT)接入一層全連接層,再輸入到Softmax層得到分類結(jié)果作為各個字符的槽填充標(biāo)簽,可用公式(2)表示,其中s表示槽填充(Slot Fill?ing)任務(wù)。
意圖識別及槽填充聯(lián)合模型訓(xùn)練時,目標(biāo)函數(shù)定義如下:
意圖識別和語義槽填充聯(lián)合訓(xùn)練時,學(xué)習(xí)目標(biāo)是最大化公式(3)定義的目標(biāo)函數(shù),本文采用最小化交叉熵損失函數(shù)達到最大化條件概率目的。
本文對用戶日常工作中常用查詢語句進行收集整理,并獲取這些查詢語句在搜索系統(tǒng)中相應(yīng)查詢結(jié)果,對查詢語句及查詢結(jié)果進行歸類分析,獲取到用戶常用的數(shù)據(jù)表查詢語句,共計一萬余條數(shù)據(jù)。本文面向的是警情領(lǐng)域搜索系統(tǒng),其查詢意圖對應(yīng)查詢系統(tǒng)中定位數(shù)據(jù)類別,語義槽填充對應(yīng)到相應(yīng)表中的字段。例如,對于查詢語句“3月18日徐匯區(qū)發(fā)生的交通事故”,其意圖識別和語義槽填充示例如表1所示。通過統(tǒng)計分析,本文基于自然語言理解的搜索系統(tǒng)涉及的意圖類別有一百余種,涉及的槽位類別數(shù)為兩百余種。
表1 搜索系統(tǒng)意圖識別和語義槽填充示例
在實驗前需要將數(shù)據(jù)標(biāo)注為特定格式語義槽填充看成命名實體識別序列標(biāo)注任務(wù),應(yīng)參照命名實體標(biāo)注方式,本文采用BIO標(biāo)記規(guī)則對查詢語句進行字符級標(biāo)注,部分語義槽類別標(biāo)記如表2所示,例如語義槽標(biāo)簽“B-dz I-dz”為地址。實驗數(shù)據(jù)標(biāo)注樣例如表3所示。
表2 語義槽部分標(biāo)記說明
表3 實驗時間標(biāo)記樣例
本文使用了Google開源的中文BERT模型進行意圖識別和槽填充模型的訓(xùn)練。BERT模型包含12層、768維隱藏狀態(tài)和12個頭。實驗輸入查詢語句設(shè)置最大長度為45。模型訓(xùn)練時,采用Adam優(yōu)化器,初始學(xué)習(xí)率和批次大小分別設(shè)置為1e-5和128。
本文語義槽填充采用的評價指標(biāo)是F1值。F1值是精確率和召回率的調(diào)和均值。意圖識別采用準(zhǔn)確率作為評價指標(biāo),表示預(yù)測正確的分類結(jié)果占總樣本數(shù)的比例。本文對比了使用BERT聯(lián)合模型與單獨訓(xùn)練意圖識別模型和語義槽填充模型的效果進行對比,結(jié)果如表4所示。
表4 實驗結(jié)果
從表4實驗結(jié)果可知,意圖識別和語義槽填充聯(lián)合模型效果明顯優(yōu)于單獨訓(xùn)練的意圖識別和語義槽填充模型,這表明在信息查詢式的人機對話系統(tǒng)中意圖識別和語義槽填充之間是具有語義關(guān)聯(lián)性的,本文所設(shè)計的聯(lián)合模型能夠捕獲兩個任務(wù)之間的語義交互信息,提升各自任務(wù)效果。
傳統(tǒng)的搜索系統(tǒng)是基于關(guān)鍵詞的全文檢索,查詢結(jié)果往往不符合用戶的搜索需求,將本文提出意圖識別和語義槽填充模型應(yīng)用于搜索系統(tǒng),能夠快速識別用戶的搜索意圖,提升搜索準(zhǔn)確度與速度。本文的聯(lián)合模型對搜索系統(tǒng)中用戶輸入的非結(jié)構(gòu)化查詢語句進行意圖和語義槽識別后形成了一個簡單的語義理解框架,能夠較好地捕獲用戶查詢語句中語義信息;獲取了這樣的語義理解框架后,需要將其轉(zhuǎn)化為搜索系統(tǒng)支持的數(shù)據(jù)庫查詢語言,即需要將意圖識別和語義槽填充結(jié)果生成與搜索系統(tǒng)相對應(yīng)的檢索式。
意圖和語義槽填充的在搜索系統(tǒng)中的應(yīng)用流程如圖2所示,具體包括:
圖2 聯(lián)合模型在搜索系統(tǒng)應(yīng)用流程
(1)對于輸入的自然語言查詢語句,利用本文提出的聯(lián)合模型,識別出用戶查詢意圖和相應(yīng)的語義槽(要素);
(2)將步驟(1)的語義槽識別結(jié)果映射到數(shù)據(jù)庫表中的屬性名和屬性值,步驟(1)意圖識別結(jié)果映射到具體數(shù)據(jù)庫表即獲得查詢表;若獲取的屬性都存在于查詢表中,則進行步驟(3),否則進行步驟(4)。
(3)按照搜索系統(tǒng)查詢語言,將步驟(2)獲得的查詢表和屬性名及屬性值轉(zhuǎn)化成搜索系統(tǒng)中的檢索式,最后將符合檢索式的查找結(jié)果返回給用戶。
(4)由于步驟(2)獲取的屬性名不在查詢表,即模型在句子級別上并未能準(zhǔn)確識別出查詢意圖和語義槽,導(dǎo)致兩者不匹配,則返回獲取的屬性名,若存在多個屬性,通過邏輯或與非關(guān)系進行組合,生成只包含屬性名的表達式,然后根據(jù)該表達式進行數(shù)據(jù)庫匹配,返回相應(yīng)結(jié)果。
目前,警情領(lǐng)域基于關(guān)鍵詞匹配的搜索引擎難以快速精準(zhǔn)地從海量數(shù)據(jù)表中匹配出符合用戶搜索意圖的結(jié)果,針對這一現(xiàn)狀,本文提出了意圖識別和語義槽填充聯(lián)合模型能夠捕獲用戶查詢語句中涉及的搜索意圖及相關(guān)語義成分,改變了傳統(tǒng)基于關(guān)鍵詞匹配的方式,可以將非結(jié)構(gòu)化查詢語句轉(zhuǎn)為能識別民警搜索意圖的結(jié)構(gòu)化查詢語言,從而提高了搜索系統(tǒng)檢索準(zhǔn)確率和速度。