文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190566
中文引用格式: 代文韜,林詩璐,朱小燕,等. 基于知識圖譜的保險領域對話系統構建[J].電子技術應用,2019,45(9):18-21,27.
英文引用格式: Dai Wentao,Lin Shilu,Zhu Xiaoyan,et al. A knowledge-based dialogue system for insurance domain[J]. Application of Electronic Technique,2019,45(9):18-21,27.
0 引言
人工智能是當前世界科技發展的潮流。問答系統和對話系統是人工智能系統中既古老而又年輕的話題。隨著互聯網服務對象的規模日益擴大,為了提高效率,降低人力成本,很多特定領域的服務都開始引入自動問答系統。保險行業由于其業務量大、業務范圍廣、業務面對的對象多等特點,非常需要對話系統的建設。
圖1中描述了特定領域對話系統的一般結構,自然語言理解模塊對用戶的問題進行語義分析,產生語義結構,再通過對話管理和答案生成模塊得到答案。對于特定領域的對話系統,知識圖譜的地位非常重要。沒有知識,就不能理解用戶輸入的上下文,也就不能進行對話。在結合知識的基礎上,對自然語言進行分析,識別出用戶的意圖,通過對話管理,生成多輪的對話。
雖然隨大數據和人工智能的發展出現了很多通用的知識圖譜,例如Google的Knowledge Graph[1]就已經有了30億條數據,但是如此龐大的圖譜不足以支撐垂直領域所需要更細致的專業知識,對于保險領域來說也是如此。保險行業由于知識的復雜性、動態性和保密性,缺乏真實可用的知識圖譜和與之相對應的語法分析與對話管理。
1 知識圖譜構建和維護
對于領域的對話系統,知識圖譜是非常重要的。當需要在一個新的領域構建一個對話系統時,首先必須做的就是構建出可以反映領域知識的知識圖譜,然后在知識圖譜的基礎上,才可以真正地理解用戶的意圖,從而實現有上下文交互的對話流程。
1.1 知識圖譜的表示
通常來說,知識圖譜是基于語義網對概念、關系的抽象描述,描述專業領域知識和各類資源及資源之間的關系,可以幫助人類和計算機更好地協同工作[2]。本文使用RDF和RDFS作為知識圖譜的描述語言[3]。
資源描述框架(RDF)是用來表示萬維網上各類資源和信息的一種語言,用三元組(Triple)的方式描述對象和對象之間的關系,通??梢孕问交癁?Subject,Predict,Object),簡稱為SPO。
RDF Schema(RDFS)是對RDF的一種擴展。RDF通過類、屬性和值來描述資源,在此之外,RDF還需要一種定義應用程序專業的類和屬性的方法。應用程序專用的類和屬性必須使用對RDF的擴展來定義。RDF Schema就是這樣一種擴展,專門用來定義知識圖譜的結構框架Schema。
1.2 知識圖譜構建的一般方法
知識圖譜的構建包括了本體的構建與知識實例的填充。常用知識圖譜構建方法有企業建模法(Tove)、骨架法(Skeletal Methodology)、Methontology法、循環獲取法、七步法等[4-5]。根據特定領域具體情況,本文借鑒了七步法構建知識圖譜。7個步驟如圖2所示,分別為:
(1)確定知識圖譜的專業領域和范疇。明確構建的語義本體所覆蓋的專業領域、構建目的、作用、維護和應用對象(這些元素與領域本體的建立有著很大的關系,所以在開發語義本體前就必須確定)。
(2)考慮復用現有語義本體的可能性。
(3)列出語義本體中的重要術語。著手建立自己的本體前,先根據專業知識重要術語列出一個術語表。
(4)定義類(Class)和類的等級體系(Hierarchy)。建立一個類等級體系一般來說有3種方法:一是自頂向下法,從領域中最大的通用概念開始,而后將這些概念細化;二是自底向上法,由等級體系樹中底層葉子類的定義開始,然后將這些葉子類合并為更為概括的較大概念(即向上回溯);三是綜合法,綜合以上兩種方法,首先定義直接大量顯而易見的概念,然后再對它們進行進一步的歸納和細化。
(5)定義類的屬性。一旦定義好了類,就要開始描繪概念間的內在結構,即類的屬性。任意一個類的所有下位類都會繼承其上位類(父類)的屬性。為了方便操作,屬性的定義多是基于之前列出的術語清單。
(6)定義屬性的限制。屬性限制有許多不同的類型,如描述賦值類型(value type)、允許的賦值(allowed value)以及賦值的基數(cardinality)。除了上述幾種限制外,還有值域(range)和定義域(domain)的定義。
(7)創建實例。在類和屬性的結構確定后,根據實際情況和知識,建立實例。
1.3 保險領域知識圖譜
保險領域包括了產品、個險、核保和養老社區等子領域。通過4步法,本文構建了如表1所示的知識圖譜。
以保險產品為例,按照圖3的方式定義了保險的層次類別。
一個具體的保險產品就是一個保險產品類的實例,同時具有多個屬性。很多時候,實體和屬性的關系往往比較復雜,這也需要在知識圖譜里面加以體現。
最簡單的情況就是“實體-屬性-值”,例如:(XX保險定義<def>)。除此之外,還存在以下幾種復雜的情況,如圖4所示。
(1)實體-屬性-屬性
例如:對于問句“我投保你們這個產品A的時候,定價是怎么定出來的?”,表示了如下的實體屬性關系:“產品A-投保-定價方式-值”。在這種情況下需要引入一個空白節點(Blank Node),產品A是實體,投保是對象屬性(OP),定價方式是數據屬性(DP)。
(2)實體-屬性-屬性-約束條件-值
例如:對于問句“我是個青少年,投保你們這個產品A的時候,定價是怎么定出來的?”,表示了如下的實體屬性關系:“產品A-投保-定價方式-青少年-值”。即產品A是實體,投保是OP,條件屬性(UC)為年齡階段,條件是青少年,定價方式是DP。
(3)實體+實體-屬性
例如:對于問句“產品A訂單的查看方式是什么?”,表示了如下的實體屬性關系:實體1是產品A,實體2是訂單,查看方式是DP。
2 語義分析
語義分析是對話系統的核心,它負責分析輸入的自然語言中關鍵的要素和整體的意圖,對整個問答系統的處理能力起著至關重要的作用。
基于語義模板的語義分析模型是比較成熟的語義分析方法。由于在特定領域,用戶所用的語言和所涉及的語言變化相對較少,使用語義模板可以基本覆蓋實際的需要,具有簡單易行、準確性高、實用性強的特點。
因此本文采用了改進的基于語義模板的語義分析模型。一方面把領域無關的語義知識和領域相關的語義知識分開,另一方面利用多層次模板生成的方法,保證模板的準確度與靈活度。模板既人工可控,可以較為精確地處理每一類問題,又可以充分體現人類智慧在人工智能中起到的指導意義。語義分析的基本流程如圖5所示。
圖5表示了語義分析的整個流程:自然語言通過預處理,得到分詞后的字符串流,包括了各種命名實體的識別、特殊符號的識別等。字符串流和模板庫中的模板進行匹配,得到相應的對話意圖。同時輸入的字符串通過信息檢索的方法,對語料中存在答案的QA對進行搜索,通過相似度比對找到最相似的答案。后處理模塊決定采用模板還是QA對的結果,將結果輸出到對話管理。
語義模板規則是通過模板的形式把用戶的意圖映射到知識圖譜上面,例如:
句子:如何購買XX人壽險
模板R:(如何|怎么)(購買|買){{保險產品:e}}→(e,p=“購買方式”,?)
從工程上來說,類似R這種類正則表達式的方式,用戶維護起來比較困難,很難考慮周全。本文把用戶維護模板與系統模板分開,通過多級語言知識擴展,生成系統模板。
模板生成模塊遞歸調用同義規則資源,將可維護的模板自動生成為機器使用的模板。所謂的同義規則,主要由3種規則構成:
(1)停用詞規則:在句子中可以被省略的詞,并不會影響句子的實質語義表達。通常這些詞為副詞、助詞等。
(2)同義詞規則:在任何上下文中都可以相互替換而保持同義的詞匯。例如:母親和媽媽。這部分資源,可以在已有語言學資源的基礎上(例如:同義詞詞林),經過人工編輯審核得到。
(3)同義轉換規則:只在特定上下文中是同義的,通常有較大的結構性的變化。這部分資源可以一方面通過人工編輯補充,也可以在較大規模的標注數據上歸納得到。
如上的規則在很多情況下是領域無關的,維護好同義規則資源,對于領域遷移有很大的益處。
例如:
用戶可維護模板:如何購買{{保險產品:e}}
同義詞規則1:如何→如何|怎樣
同義詞規則2:購買→購買|買
統一轉換規則1:如何購買{{NP}}→購買{{NP}}的方式
可以生成如下的機器使用規則:
R1:(如何|怎樣)(購買|買){{保險產品:e}}
R2:(購買|買){{保險產品:e}}的方式
這樣就實現了用戶可維護性與機器匹配便利性的統一。
3 對話管理
對話管理模塊的作用是處理對話的上下文信息,進行相應的邏輯運算并返回回答結果的表達式。特別對于保險領域來說,用戶的主要目的不是閑聊,而是要獲取相應信息,對話的進程有一定的限定性和指向性。對話管理模塊主要包含了對話管理模型與自然語言生成兩部分內容。
在經過語義分析和意圖分析后,輸入的自然語言已經被轉化為一個較為明確的邏輯表達式。對話模型旨在建立一個完整的對話流程控制和對話邏輯處理的體系,以完成對話系統的對話功能。結合特定領域的特點,本文采用了基于有限狀態自動機的對話模型[6-7],同時結合了填表的方法來構建對話管理模塊,如圖6所示。
在當前保險領域,自動機的狀態由{實體,意圖,條件,上下文}四元組決定。狀態之間轉移而發生的對話動作(DA)主要有寒暄、反問、推薦、查詢。自動機的設計遵循如下的規則,在當前狀態下:
(1)如果意圖是寒暄,就回答寒暄;
(2)如果可以在知識圖譜中得到結果,就返回查詢結果;
(3)如果在知識圖譜中沒有找到結果,返回推薦;
(4)如果在知識圖譜中找到多個結果,按照條件或者意圖反問澄清,并根據回答更新上下文。
考慮到保險知識圖譜的復雜性,自動機在自動生成的基礎上,針對知識圖譜的特殊結構做了特別的處理。
例如:保險的投保年齡分別涉及投保人和被保險人的年齡,而年齡又有上限和下限的具體限制,如圖7所示。在查詢投保年齡時,系統檢查上下文中是否包含了“對象”信息,以及所問的具體屬性是否明確。如當用戶詢問“X保險最小幾歲能買”時,系統反問“您想問的是X保險哪個對象的投保年齡下限:投保人、被保險人”,此時如果用戶補充“被保險人”,系統便能回答“X保險被保險人的投保年齡下限為0歲”。
每輪對話都會產生DA,DA由邏輯表達式通過可編輯的模板生成自然語言回答。答案生成模板是開放用戶維護的。如果通過答案表達式索引到了多個模板,則從這些模板中隨機進行選擇,答案的形式可以變得更加豐富,也使得系統與人交互更為友好和智能。答案生成的數據資源和自動機邏輯是完全分離的,這使得系統能夠快速有效地進行遷移。
4 系統實現
本文在保險領域構建了實用的對話系統。為搭建系統,在9 000條用戶真實QA數據上進行了實體和意圖的標注,構建了約800個語義模板。在40 000條用戶真實測試集合上取得了93%正確率的效果,系統在實際的運行中,不滿意占比小于10%,效果良好。
圖8為系統真實的問答記錄。
5 結論
本文從特定領域的特點出發,介紹了特定領域對話系統的構建方法??偟膩碚f特定領域的對話系統是以知識圖譜為靈魂,語義解析和對話管理為核心的對話系統,強調實用性,時效性,可移植性。在具有較高冷啟動性能的基礎上,通過從易到難,從簡單到復雜,從數據到知識,再從知識到數據的過程,逐步提高系統的表現。
未來的系統還主要需要在如下幾個方面加強:
(1)從較大規模無結構數據中提取知識的有效性,利用半監督學習和增強學習的方法,盡量減少人工干預;
(2)更有效率和操作性的知識圖譜構建方法論;
(3)適用于特定領域的語法分析器,在滿足數據量的基礎上,結合知識圖譜的向量化,通 過深度學習,得到更好的語言模型;
(4)更好地利用數據評價知識,并對知識進行加權,甚至引入部分常識性表示;
(5)更好地利用知識評價數據,減少標注數據的偏置,通過主動交互的方法,更有效地加快系統收斂的速度。
參考文獻
[1] EHRLINGER L,WOB W.Towards a definition of knowledge graphs[C].SEMANTICS,2016.
[2] 李潔,丁穎.語義網、語義網格和語義網絡[J].計算機與現代化,2005,7(4):38-41.
[3] MANOLA F,MILLER E.RDF primer recommendation[EB/OL].(2004-02-10)[2019-05-14].http://www.w3.org/TR/rdf-primer.
[4] 韓韌,黃永忠,劉振林,等.OWL本體構建方法的研究[J].計算機工程學報,2008,29(6):93-101.
[5] 王梅.OWL領域本體構建方法研究[J].圖書情報工作,2006,50(12):30-35.
[6] 黃民烈,朱小燕.對話管理中基于槽特征有限狀態自動機的方法研究[J].計算機學報,2004,27(8):1092-1101.
[7] LIU Y,HAO Y,ZHU X,et al.A question answering system built on domain knowledge base[C].Web-age Information Management,2015:111-122.
作者信息:
代文韜1,林詩璐2,朱小燕1,黃民烈1
(1.清華大學 計算機科學與技術系,北京100084;2.華北電力大學 控制與計算機工程學院,北京102206)