閆崢,楊礫,2,江強,任艾,張沛然,許青青
(1.上海市公安局科技處,上海200042;2.上海交通大學,上海200240;3.上海德拓信息技術股份有限公司,上海200030)
理解用戶的需求對于有效地開發任務導向型的對話系統至關重要。例如,對于“我想聽Beyond的海闊天空”,對話系統應準確識別出用戶的意圖是聽一首歌,并且“Beyond”和“海闊天空”分別是用戶想聽的歌手名及其歌曲名。隨著自然語言處理技術和自然語言理解技術的發展,這種能滿足用戶需求的對話系統也逐漸成為現實。基于自然語言理解的對話系統有著十分廣闊的應用前景,如訂票服務、信息搜索與查詢、智能音箱、車載系統等,能夠隨時隨地為人們提供便捷服務。
在警情領域搜索系統中存儲著海量的數據,如何從中快速準確地檢索出符合用戶搜索需求的結果是目前搜索系統中的難點。目前,搜索引擎一般是基于關鍵詞的全文搜索,僅用一個或多個關鍵詞的匹配無法準確捕獲用戶的搜索意圖,使得搜索質量不盡人意,用戶需要花費大量時間去篩選檢索結果,從而導致用戶工作效率低下。而信息搜索與查詢作為基于自然語言理解的對話系統中一個重要應用模塊,可從用戶輸入的自然語言查詢語句中自動獲取用戶的搜索意圖并提取相關語義成分進行搜索,返回滿足用戶查詢需求的檢索結果,能夠極大提升用戶的搜索滿意度。若將該自然語言意圖識別技術應用于警情領域搜索系統可以有效地解決這些問題,能夠充分理解用戶的搜索意圖,從而能夠提升檢索的速度和精準度。
基于意圖識別的人機對話系統的實現通常需要對自然語言信息進行語義解析形成語義理解框架,主要涉及兩個任務:①識別正確的意圖,②提取符合意圖的語義要素成分,這兩個任務一般被稱為“意圖識別”和“語義槽填充”[1]。
意圖識別和語義槽填充作為人機對話系統兩個不可或缺的子任務,兩者間存在著密切的語義關聯,考慮到單獨訓練意圖識別和語義槽填充模型不能夠充分利用這樣的語義關聯信息,同時兩個獨立模型容易造成錯誤傳播,導致對自然語言理解性能下降;而BERT預訓練模型能夠捕獲自然語言的上下文語義信息且在自然語言處理和自然語言理解得到了較為廣泛的應用。基于此,本文面向警情領域語義搜索系統,構建了一種BERT意圖識別和語義槽填充聯合模型,對搜索系統中的自然語言查詢語句進行搜索意圖識別和相應語義要素提取,從而實現智能化語義搜索系統構建,旨在為用戶提供更加快捷精準的搜索服務。
現有意圖識別和語義槽填充主流深度方法包含兩種方式:①獨立模型,槽填充和意圖識別獨立進行;②聯合模型,充分利用兩個任務間的關聯關系同時進行意圖識別和語義槽填充[2]。
在早期的模型中,意圖識別和語義槽填充是兩個獨立任務,即單獨訓練意圖識別模型和語義槽填充模型。其中,意圖識別可看作分類任務,一般可用文本分類方法解決,而語義槽填充可看作類似于命名實體識別的序列標注任務,只是命名實體更加豐富的表現形式,循環神經網絡在該類方法中得到較好的應用[3-5]。雖然分類和實體識別技術都已經較為成熟,單獨訓練兩個模型的方法易于實現,但這種管道式(pipeline)結合方式共同用于自然語義理解人機對話查詢系統并沒有考慮到意圖和語義要素之間交互信息,同時可能會產生錯誤傳播。
由于獨立模型有明顯的缺點,意圖識別和語義槽填充聯合模型逐步發展起來。因為在人機查詢系統中,意圖和語義成分總是一同出現在自然語言語句中,它們之間是有信息共享的,所以直覺上這兩個任務是能夠相互影響的。例如:查詢“從北京到上海的機票”,若“北京”被識別為“發站地點”,則該查詢意圖更可能是搜索訂票信息而不是天氣信息;同樣的,若意圖被識別為查詢訂票信息,則“查詢訂票信息表”這個意圖更有助于將“北京”識別為“發站地點”而不是“查詢天氣地點”。為了充分利用槽填充和意圖識別之間的語義交互信息,文獻[6-7]通過共享參數方式實現槽填充和意圖識別直接的關聯,文獻[8]提出Slot-Gated機制,在槽填充階段引入意圖特征來深入挖掘槽填充和意圖之間關系。隨著Transformer模型和預訓練語言模型的發展,文獻[9]采用BERT模型聯合建立槽填充和意圖識別模型。
BERT預訓練語言模型[10]在自然語言處理和自然語言理解任務有著廣泛應用,并且提升了很多任務上的效果,本文采用BERT模型構建聯合模型,實現搜索查詢意圖識別和語義槽填充識別。例如,輸入查詢語句“張三的報警記錄”,通過BERT聯合模型,能夠同時識別出查詢意圖為“Alarm”(對應表)、“張三”為姓名,本文模型框架如圖1所示。

圖1 模型框架
BERT預訓練模型是由Google在2018年提出的[10],它是基于Transformer[11]模型設計的多層雙向Transformer編碼器。BERT預訓練模型提供了功能強大的上下文語義表征方式,可作用于多個下游NLP任務,如本文涉及的意圖識別、槽填充任務。BERT底層輸入是字嵌入,其輸入由字編碼(Token Embed?ding)、句子編碼(Segment Embedding)和位置編碼(Position Embedding)這3個嵌入矩陣相加組成,具體為:
(1)字編碼:用于字向量表示,將輸入文本拆分成各個字(token)后轉換為固定維度向量。在BERT中,每個字會被轉換成768維的向量表示。此外,兩個特殊的符號[CLS]和[SEP]會被分別插入輸入文本的開頭和結尾位置。其中,[CLS]的輸出向量可作為整篇文本的語義表示,通常用于分類任務,本文也是基于[CLS]輸出向量進行后續意圖識別任務的。
(2)句子編碼:用于區分上下句,BERT能夠處理輸入句子對的分類任務,如判斷兩個句子是否語義相似,對于本文的單句分類和序列標注任務,句子編碼沒有區別。
(3)位置編碼:作用是讓BERT學習到輸入序列的順序屬性。
給定輸入序列x=(x1,x2,…,xn),BERT的輸出結果為H=(h1,h2,…,hn)。
BERT模型很容易被應用于意圖識別和語義槽填充聯合模型。其中,意圖識別是BERT第一個特殊字符[CLS]最后一層隱藏層輸出結果(h1)上加一層全連接層,再使用Softmax激活函數獲得意圖類別概率,意圖識別可公式(1)表示,其中i表示意圖(intent)識別任務。

對于語義槽填充,將其他字符最后一層隱藏層輸出結果(h2,hx,…,hT)接入一層全連接層,再輸入到Softmax層得到分類結果作為各個字符的槽填充標簽,可用公式(2)表示,其中s表示槽填充(Slot Fill?ing)任務。

意圖識別及槽填充聯合模型訓練時,目標函數定義如下:

意圖識別和語義槽填充聯合訓練時,學習目標是最大化公式(3)定義的目標函數,本文采用最小化交叉熵損失函數達到最大化條件概率目的。
本文對用戶日常工作中常用查詢語句進行收集整理,并獲取這些查詢語句在搜索系統中相應查詢結果,對查詢語句及查詢結果進行歸類分析,獲取到用戶常用的數據表查詢語句,共計一萬余條數據。本文面向的是警情領域搜索系統,其查詢意圖對應查詢系統中定位數據類別,語義槽填充對應到相應表中的字段。例如,對于查詢語句“3月18日徐匯區發生的交通事故”,其意圖識別和語義槽填充示例如表1所示。通過統計分析,本文基于自然語言理解的搜索系統涉及的意圖類別有一百余種,涉及的槽位類別數為兩百余種。

表1 搜索系統意圖識別和語義槽填充示例
在實驗前需要將數據標注為特定格式語義槽填充看成命名實體識別序列標注任務,應參照命名實體標注方式,本文采用BIO標記規則對查詢語句進行字符級標注,部分語義槽類別標記如表2所示,例如語義槽標簽“B-dz I-dz”為地址。實驗數據標注樣例如表3所示。

表2 語義槽部分標記說明

表3 實驗時間標記樣例
本文使用了Google開源的中文BERT模型進行意圖識別和槽填充模型的訓練。BERT模型包含12層、768維隱藏狀態和12個頭。實驗輸入查詢語句設置最大長度為45。模型訓練時,采用Adam優化器,初始學習率和批次大小分別設置為1e-5和128。
本文語義槽填充采用的評價指標是F1值。F1值是精確率和召回率的調和均值。意圖識別采用準確率作為評價指標,表示預測正確的分類結果占總樣本數的比例。本文對比了使用BERT聯合模型與單獨訓練意圖識別模型和語義槽填充模型的效果進行對比,結果如表4所示。

表4 實驗結果
從表4實驗結果可知,意圖識別和語義槽填充聯合模型效果明顯優于單獨訓練的意圖識別和語義槽填充模型,這表明在信息查詢式的人機對話系統中意圖識別和語義槽填充之間是具有語義關聯性的,本文所設計的聯合模型能夠捕獲兩個任務之間的語義交互信息,提升各自任務效果。
傳統的搜索系統是基于關鍵詞的全文檢索,查詢結果往往不符合用戶的搜索需求,將本文提出意圖識別和語義槽填充模型應用于搜索系統,能夠快速識別用戶的搜索意圖,提升搜索準確度與速度。本文的聯合模型對搜索系統中用戶輸入的非結構化查詢語句進行意圖和語義槽識別后形成了一個簡單的語義理解框架,能夠較好地捕獲用戶查詢語句中語義信息;獲取了這樣的語義理解框架后,需要將其轉化為搜索系統支持的數據庫查詢語言,即需要將意圖識別和語義槽填充結果生成與搜索系統相對應的檢索式。
意圖和語義槽填充的在搜索系統中的應用流程如圖2所示,具體包括:

圖2 聯合模型在搜索系統應用流程
(1)對于輸入的自然語言查詢語句,利用本文提出的聯合模型,識別出用戶查詢意圖和相應的語義槽(要素);
(2)將步驟(1)的語義槽識別結果映射到數據庫表中的屬性名和屬性值,步驟(1)意圖識別結果映射到具體數據庫表即獲得查詢表;若獲取的屬性都存在于查詢表中,則進行步驟(3),否則進行步驟(4)。
(3)按照搜索系統查詢語言,將步驟(2)獲得的查詢表和屬性名及屬性值轉化成搜索系統中的檢索式,最后將符合檢索式的查找結果返回給用戶。
(4)由于步驟(2)獲取的屬性名不在查詢表,即模型在句子級別上并未能準確識別出查詢意圖和語義槽,導致兩者不匹配,則返回獲取的屬性名,若存在多個屬性,通過邏輯或與非關系進行組合,生成只包含屬性名的表達式,然后根據該表達式進行數據庫匹配,返回相應結果。
目前,警情領域基于關鍵詞匹配的搜索引擎難以快速精準地從海量數據表中匹配出符合用戶搜索意圖的結果,針對這一現狀,本文提出了意圖識別和語義槽填充聯合模型能夠捕獲用戶查詢語句中涉及的搜索意圖及相關語義成分,改變了傳統基于關鍵詞匹配的方式,可以將非結構化查詢語句轉為能識別民警搜索意圖的結構化查詢語言,從而提高了搜索系統檢索準確率和速度。