槽位識別與糾錯在智能語音機器人中的實踐


導讀

在語音機器人中,經常需要槽位識別來提取用戶回答中的關鍵信息,以便用於控制對話邏輯跳轉和標識對話關鍵詞等,我們通過命名實體識別(Named Entity Recognition,NER)技術來提取對話中的實體詞(關鍵詞),即語音機器人中的槽位詞。


背景

由於語音識別(Automatic Speech Recognition,ASR)技術採用的是第三方通用的語音識別,而在不同的業務中往往涉及到很多專有的名詞,因此經過ASR後的文本很容易發生拼音正確但詞識別錯誤的情況,或因用戶口音、噪音、通話質量等問題導致ASR後的文本容易存在拼音相似但詞不正確的問題。

為了提升對話流暢度,需要對識別出的槽位詞進行糾錯。例如在新車外呼場景中,用戶回覆文本 “我想買那個別克7268”,NER識別出車品牌“別克”,車系“7268”,但其實用戶想表達的是“別克GL8”,通過槽位糾錯可以將車系“7268”糾正成“GL8”,可以更好識別用戶意圖, 通過糾錯後線上車品牌車系兩種槽位的準確率提升14.43%,召回率提升8.29%。後續本文將分別從槽位識別與糾錯進行詳細介紹。



槽位識別流程

語音機器人中很多話術需要提取用戶回答中的關鍵信息,比如新車的話術,系統對諮詢過二手車的用戶進行回訪,並從中瞭解用戶是否想購買新車及具體想購買什麼車,需要識別出槽位:車品牌、車系、車型、新車/二手車,便於對用戶進一步的跟進。

槽位識別是一種序列標註問題,序列標註就是對給定文本的每一個字符打上標籤,然後提取出我們關心的關鍵詞,通常採用實體識別[1,2]方式實現。標籤的格式通常使用兩種標準:IOB2和IOBES,標籤含義如下 :

槽位識別與糾錯在智能語音機器人中的實踐


識別結果如下圖所示,標籤包含實體類型和位置兩個部分,圖中“大眾”和“帕薩特”即為實體。

槽位識別與糾錯在智能語音機器人中的實踐


槽位識別的開發主要分兩步:數據標註和模型訓練。數據標註又分為如下幾步:1)定義本體庫,即定義需要識別的實體類型,比如car_brand(車品牌);

2)通過爬蟲爬取帶有實體詞的文本數據作為候選標註數據;

3)根據積累的實體關鍵詞,利用trie樹對文本中的實體詞進行初始化;

4)數據部署到rasa-nlu(一款開源的NLP工具)進行標註,對初始化的實體詞進行微調。

數據標註完成後,訓練實體識別模型。我們採用IDCNN+CRF [3]和BiLSTM+CRF [4~6]兩種模型進行實驗。IDCNN通過空洞卷積增大模型的感受野,通常以多個卷積核為一個網絡單元,再重複多次以學習上下文的特徵;BiLSTM通過雙向的LSTM學習到輸入文本序列之間的依存關係;兩種模型都是對輸入文本進行特徵提取,得到標籤數量維度的特徵向量,再作為CRF的特徵,從而將標籤之間的依存關係也學習到,最終得到每個字對應的實體標籤, 合併操作後得到槽位詞。

槽位識別與糾錯在智能語音機器人中的實踐

槽位識別與糾錯在智能語音機器人中的實踐


在12000條評測數據上,採用BiLSTM+CRF模型,相比IDCNN+CRF模型車品牌槽位的準確率和召回率分別提升5.22%、2.86%,車系槽位的準確率和召回率分別提升3.6%、3.39%,整體來看,採用BiLSTM+CRF槽位識別效果更好。以下結合幾個例子具體分析。

槽位識別與糾錯在智能語音機器人中的實踐


BiLSTM對句子整體和當前位置的特徵比較敏感,IDCNN對周邊局部比較敏感。比如,句子“在北京通盈。”, 關鍵詞“北京”是地址也是車品牌,在本句話中表達的應該是一個地址,BiLSTM會考慮“北京”的上下文特徵,傾向於識別成地址槽位,而IDCNN更多地考慮局部特徵,會將“北京”識別成車品牌,在車品牌“北京”後面的“通盈”識別成車系。

且在該場景下,通常用戶回覆較短,很容易語音識別錯誤嚴重,IDCNN可能會抓住錯誤的局部特徵導致槽位識別錯誤,比如,“歐元版的麵包車”(用戶真實表達是“貨運版的麵包車”),語音識別錯誤的詞“元”本身是比亞迪的一個車系,IDCNN對局部特徵較敏感識別出車系“元”。

比如,用戶回覆“啊,買衛星劉。”(用戶真實表達是“免貴姓劉”),IDCNN根據局部的“買”認為“衛星劉”是一個車系,而BiLSTM則會根據當前位置和句子整體特徵將“劉”識別成一個姓。在ASR錯誤嚴重的句子,BiLSTM不僅根據當前詞還會根據句子整體特徵來識別是哪種槽位,效果會略好。


槽位糾錯流程

在語音機器人的話術中,識別出來的槽位用於話術流轉,對於有些話術,識別出的槽位也會作為最後標籤的一部分返回。

比如在車話術中,機器人對有購車意向的用戶進行回訪,需要識別出槽位:新車/二手車、車品牌、車系、姓氏等。機器人首先詢問用戶要買新車還是二手車,此時需要提取出新車/二手車的槽位用作話術跳轉,如果識別到該槽位話術跳轉到肯定分支繼續詢問用戶意向車型,此時需要識別出車品牌、車系槽位,便於對用戶進一步跟進。

由於採用第三方通用的ASR服務,針對很多特定場景中的專業名詞識別,容易出現諧音詞錯誤(同音不同字,儀器大眾與一汽大眾)和混淆音詞錯誤(拼音相似詞不正確,江寧福特與江鈴福特)的問題。

比如用戶回覆文本:“我想買那個別克7268”,槽位模型識別出車系:7268,直接將此錯誤車系回傳給業務方無法入庫,識別出的車系沒有價值,因此我們需要對識別出的槽位實體詞進行糾錯,得到正確的槽位詞(GL8)才能入庫。如下表列出部分錯誤類型。

槽位識別與糾錯在智能語音機器人中的實踐


基於我們已有的領域知識(車品牌庫、車系庫及車品牌與車系的映射關係),首先對領域知識中的詞進行預處理(去空格、去特殊符號、車系需要去掉車品牌前綴、大小寫統一等),並將預處理後的詞與原始領域詞進行映射(chr海外-->豐田C-HR(海外)),後續所有與領域知識詞進行比較,都採用預處理後的領域知識詞,最終再映射到原始的領域知識詞輸出。

例如,如果識別出的槽位詞與相應領域知識中預處理過的詞完全匹配,則返回映射的原始領域詞,如果不匹配,那麼認為槽位詞錯誤,需要糾正,如何糾正呢?

上述提到錯誤主要是由諧音或混淆音導致的,基於我們已有的車品牌、車系庫,可以通過拼音相似度算法進行匹配,得到相似度最大的實體詞,即認為是正確的實體詞(會通過閾值來控制)。

拼音相似度算法採用編輯距離,將待糾錯詞與車品牌、車系庫中的所有詞都轉成拼音,待糾錯詞與庫中的詞計算編輯距離(基於拼音的每個字母計算編輯距離),即待糾錯的拼音字符串需要改動多少次才能變成目標拼音字符串,同時考慮到字符串長度的影響,再除以兩個字符串拼音的長度,編輯距離越小,匹配程度越高,最終通過閾值來控制是否採納糾錯結果。

具體地,在語音機器人新車相關話術中,對於用戶回覆買車的文本,首先會提取出本句話所有識別出的車品牌,對錯誤的車品牌進行糾正,這裡車品牌糾錯設置的閾值比較大,儘可能使糾正後的車品牌正確,這樣才能基於正確的車品牌進行車系的糾錯。

車品牌糾錯後,再對所有的車系進行糾錯,本句話有車品牌的會基於這些車品牌下的車系進行糾錯,本句話沒有車品牌的會根據待糾錯詞的拼音去車系庫中找到帶有該拼音的相關車系,再進行糾錯。

以車系為例,圖中的車系映射表包括文字的車系映射表(h6-->哈弗H6)和拼音的車系映射表(ei,qi,liu-->哈弗H6),如果ASR後的車系文字是正確的,或車系拼音是正確的,可以直接通過車系映射表得到完整的車系名稱。

車系糾錯時,如果本句話有車品牌,則可以直接獲取該車品牌下的所有車系進行糾錯;如果本句話沒有車品牌,車系需要與車系庫中3000多的車系詞進行相似度比較,耗時較大,因此這裡建立車系的倒排索表,key是車系庫中每個字的拼音,value是包含這個拼音的所有車系詞,對某個詞糾錯時,去索引表中取每個拼音的所有相關車系詞進行比較。

槽位識別與糾錯在智能語音機器人中的實踐

由於車品牌/車系格式、表達較多樣,這裡還需要增加直接糾錯和正則糾錯。直接糾錯:包含總結出來的錯誤詞對兒、簡稱映射;例如,上海大眾-->上汽大眾,mg --> 名爵,魏派 --> wey,bmw --> 寶馬。

正則糾錯:包括總結出的部分錯誤模式以及一些特殊情況;比如車品牌是“進口寶馬”則糾正為“寶馬進口”,因為庫中的所有進口車品牌或車系都是末尾標註“進口”二字,這樣糾正後方便下一步的映射或相似度糾錯。

以下展示了語音機器人線上用戶回覆部分文本中的槽位糾錯情況。

槽位識別與糾錯在智能語音機器人中的實踐


在二手車回訪對話中,與糾錯前相比,糾錯後線上車品牌車系兩種槽位的準確率提升14.43%,召回率提升8.29%。


總結

本文重點介紹了槽位識別及槽位詞糾錯在智能語音機器人中的實踐,並詳細介紹了兩個模塊的實現過程和方法。目前槽位識別廣泛應用於語音機器人多輪語音交互流程中,槽位糾錯能在一定程度上克服由於通用ASR帶來語音識別錯誤, 後續我們將探索嘗試槽位識別與糾錯進行聯合訓練的來提升整體槽位識別準確率。


參考文獻:

[1] Li J , Sun A , Han J , et al. A Survey on Deep Learning for Named Entity Recognition[J]. IEEE Transactions on Knowledge and Data Engineering, 2020, PP(99):1-1.

[2] Ms. Maithilee L. Patawar,Mrs. M. A. Potey . “Approaches to named entity recognition: a survey”.

[3] Yu F , Koltun V . Multi-Scale Context Aggregation by Dilated Convolutions[J]. 2015.

[4] Huang, Z., W. Xu, and K. Yu. "Bidirectional lstm-crf models for sequence tagging. 2015." arXiv preprint arXiv:1508.01991 (2015).

[5] Onur K , Ozan A , Deniz Y . CharNER: Character-Level Named Entity Recognition[J]. 2016

[6] Lample G , Ballesteros M , Subramanian S , et al. Neural Architectures for Named Entity Recognition[J]. 2016.

作者簡介:

宋玉美:58同城AI Lab算法高級工程師,目前主要負責智能語音機器人、智能語音分析算法研發工作,2019年碩士畢業於大連理工大學。


部門簡介:

58同城TEG技術工程平臺群AI Lab,旨在推動AI技術在58同城的落地,打造AI中臺能力,以提高前臺業務人效和用戶體驗。AI Lab目前負責的產品包括:智能客服、語音機器人、智能寫稿、智能語音分析平臺、智能營銷系統、AI算法平臺、語音識別等,未來將持續加速創新,拓展AI應用。
部門詳細介紹可點擊:ailab.58.com



分享到:


相關文章: