黃東晉 梁景坤 李 娜 丁友東
(上海大學 上海電影學院,上海200072)
目前而言,移動互聯(lián)網(wǎng)已經(jīng)步入了高速發(fā)展的時期,隨之帶來的也是信息爆炸的時代。想要快速獲取有價值的信息對于搜索引擎而言是一項非常困難的任務。搜索引擎通常用于幫助人們快速獲取所需信息,但百度和谷歌等傳統(tǒng)搜索引擎僅根據(jù)用戶的問題返回相關文檔列表,搜索引擎無法準確定位用戶意圖并返回準確答案。為了解決搜索引擎引起的信息過載問題,智能問答系統(tǒng)也應運而生。智能問答系統(tǒng)目的是讓機器理解人類語言,并根據(jù)用戶意圖為人們提供所需的答案。
目前市面上有許多問答機器人,如微軟小冰、小愛同學、Siri等,但這些問答機器人大多偏向于開放域的知識庫,但是針對一些專業(yè)性較高的問題來說,并沒有一個較好的回答效果。而通過知識圖譜,對某一專業(yè)領域的知識進行結構化處理,便可以提高問答機器人的實用性。目前知識圖譜應用在電影領域還比較少,用戶想要查詢電影的劇情、人物等信息,還需要借助百度等搜索引擎,有時候不能快速、精準地為用戶解決問題。因此,本文面向動漫電影領域,結合動漫電影知識圖譜,提出了基于雙向長短期記憶模型和條件隨機場 (Bi-LSTM+CRF)的智能問答系統(tǒng),該系統(tǒng)可以精準定位用戶的查詢意圖,進而更好地為用戶提供動漫電影方面的知識問答。
檢索類問答系統(tǒng) (FAQ),基于知識圖譜問答系統(tǒng) (KGQA)是當前問答領域中的兩個研究熱點。
檢索類問答系統(tǒng):檢索類問答系統(tǒng)通常基于數(shù)據(jù)庫中的一對問題和答案,在語義上將用戶輸入的問題與數(shù)據(jù)庫問題進行匹配并返回最高分答案。因此檢索類的問答系統(tǒng)的效果主要取決于語義匹配。針對該問題,Huang等人針對語義匹配的問題提出了DSSM 的深度語義表示模型,與 TF-IDF、BM25等模型相比,效果提升明顯。但是,該檢索類問答系統(tǒng)依舊存在問題:首先,需要大量的問答對來構建數(shù)據(jù)庫,以確保用戶輸入的問題在數(shù)據(jù)庫中可以找到類似問題;其次,不能準確了解到用戶真實意圖,因而也不能精準返回用戶所需答案。從而問答對的質(zhì)量、數(shù)量以及檢索的方式限制了檢索型機器人的精度和廣泛使用。
基于知識圖譜問答系統(tǒng):2012年谷歌提出了知識圖譜,其主要目的是把搜索引擎的性能進一步優(yōu)化。自推出以來,問答研究的重點一直在問答系統(tǒng)的研究上。楊玉基等研究學者共同提出了用 “四步法”構建領域知識圖譜的方法:構建領域本體,語義標注,數(shù)據(jù)完成,信息提取,實現(xiàn)了用同時自動化方法和手動構建知識圖譜,兼顧效率和準確率;李飛等人提出利用神經(jīng)網(wǎng)絡的方法從文本中提取三元組 (實體,關系,實體),構建知識圖譜。Liang等人提出了一種用于更新實時知識地圖數(shù)據(jù)的框架,并且在預測哪些實體需要更新,以使得知識圖譜可以在實時更新方面具有更高的準確率。知識圖譜的不斷發(fā)展,提供了對問答系統(tǒng)的高質(zhì)量支持,智能問答系統(tǒng)在語義理解方面的表現(xiàn)得到了很大的提高。Hu等人提出了一種基于圖匹配的方法,用以處理語句模糊性和查詢標點的問題。為了將自然語言順利轉換為查詢圖,提出關系優(yōu)先以及點優(yōu)先的方法用來解決模糊問題,像短語鏈接問題、復合問題一樣都有很好的效果。Dubey等人提出了實體關系鏈接的結構,它解決了識別和鏈接實體和關系的問題,并將問題轉化為可以在知識圖譜中查閱的語言。李飛飛等人提出一種新的深度標注模型Open Tag,不依賴專有詞典,通過Bi-LSTM網(wǎng)絡自動提取句子中的實體。
基于動畫電影知識圖譜,問答系統(tǒng)將會預處理用戶輸入的問題,獲取實體和問題類別,并根據(jù)不同問題類別的查詢模板,將實體填充入查詢模型,然后解決知識圖譜中的問題,獲得用戶問題的答案。動漫電影問答系統(tǒng)分為三個模塊:知識圖譜構建模塊、問題預處理模塊和答案生成模塊。系統(tǒng)的整體架構如圖1。
圖1 基于Bi-LSTM 的智能問答系統(tǒng)流程圖
(1)知識圖譜構建模塊:首先在豆瓣網(wǎng)站上獲取到動畫電影數(shù)據(jù),對數(shù)據(jù)進行預處理操作,再根據(jù)一定的規(guī)則建立中心節(jié)點和節(jié)點之間的關系,并以<節(jié)點,關系,節(jié)點>三元組的格式將數(shù)據(jù)存入Neo4j圖數(shù)據(jù)庫中。
(2)問題預處理模塊:首先對用戶輸入的問題進行實體識別,提取出關鍵詞,得到動漫名、人名、電影類別等。之后訓練問題分類器,首先對問題的屬性進行定義,將用戶輸入的問題抽象成分類問題,利用設計的分類器模型進行排序,選擇概率最高的問題屬性。
(3)答案生成模塊:通過不同問題類別的Cypher查詢模板,在Neo4j圖數(shù)據(jù)庫中建立的知識圖譜進行查找,給出明確的答案。
通過采集網(wǎng)頁上動漫電影的相關數(shù)據(jù),并對數(shù)據(jù)進行結構化的處理,建立電影節(jié)點間的關系,從而構建起關于動漫電影方向的知識圖譜。通過該知識圖譜,我們可以全方位、多角度地了解動漫電影領域的信息,也使得人們搜索信息的過程更加迅速,更具智能。另一方面,知識圖譜的可擴展性好,可以通過提升數(shù)據(jù)量、節(jié)點關系等,來使得知識圖譜的功能更加全面,知識更加豐富。
2.2.1 數(shù)據(jù)的獲取
數(shù)據(jù)的來源主要是網(wǎng)絡爬蟲。
網(wǎng)絡爬蟲:為了獲得動漫電影的相關數(shù)據(jù),本文選擇了豆瓣的有關動漫電影的相關網(wǎng)頁,將所有網(wǎng)頁的url存儲在Redis數(shù)據(jù)庫,以便于之后做分布式爬蟲。之后爬取網(wǎng)頁中的數(shù)據(jù),為了構建動漫電影知識圖譜中的各類節(jié)點,在網(wǎng)頁中爬取 “片名”“導演” “編劇” “類型” “官方網(wǎng)站” “制片國家”“語言” “首播時間” “集數(shù)” “單片時長” “又名”“簡介”“圖片”“評論”“類似動漫”標簽內(nèi)的內(nèi)容,將爬取到的內(nèi)容進行整理,以Json文件的格式進行保存,數(shù)據(jù)格式為 {“鍵名”:“內(nèi)容”}。整個數(shù)據(jù)庫大約有9000條,基本滿足人們對動漫電影領域的需求。
2.2.2 知識圖譜的構建
2012年,Google公司提出了新的知識圖譜的概念。如果從該知識圖譜的本質(zhì)上分析,可以將其稱為 “語義網(wǎng)絡知識庫”。知識圖譜由實體和關系組成,“實體”用于表示圖表中的節(jié)點,圖表中的邊緣可以用 “關系”表示。實體是具有某些特征或屬性的獨立實體,例如電影名稱、人名、地名、類型等,并且關系是實體和實體之間的橋梁。例如,電影和導演之間的關系是 “作為導演”。實體和關系自身也可以附帶一些屬性,比如,電影名可以附帶的屬性有評分、圖片、每一集的時長等。
依據(jù)知識圖譜的特點,本文存儲數(shù)據(jù)選用的是Neo4j圖數(shù)據(jù)庫。作為非關系數(shù)據(jù)庫Neo4j圖數(shù)據(jù)庫,在非結構化數(shù)據(jù)處理中比其他關系數(shù)據(jù)庫更有優(yōu)勢。使用Neo4j圖數(shù)據(jù)庫將大大提高數(shù)據(jù)傳輸速度和工作效率。因為圖數(shù)據(jù)庫在數(shù)據(jù)處理方面的性能與數(shù)據(jù)量沒有直接關系,所以它總是以相同的速度遍歷節(jié)點和邊緣。
依據(jù)實際問題,本文構建了如圖2所示的動漫電影知識圖譜。我們將動漫名作為一個中心實體節(jié)點,在此節(jié)點中還定義了動漫的相關屬性,例如動漫簡介,語言、官方網(wǎng)站、評分、發(fā)行日期、所屬國家、單集時長、集數(shù)、相關圖片以及短評論,將導演、編劇、聲優(yōu)、動漫類型、類似動漫、動漫別名作為其他實體節(jié)點。由于實體與實體之間在一定條件下會產(chǎn)生關聯(lián),例如動漫名與導演之間的關系設定為 “is_directed”,動漫名和類別之間的關系設定為 “belong_to”。Neo4j圖形數(shù)據(jù)庫用于存儲動畫電影的實體、關系和屬性,以形成完整的知識圖譜系統(tǒng)。
圖2 動漫電影知識圖譜
2.3.1 命名實體識別
在知識圖譜的問答系統(tǒng)中實體識別是一項重要任務,任務主要是確定問題中的一些專有名稱或特征詞,例如人名、地名等,以方便之后在知識圖譜中查詢。與英語中的實體識別相比,中文實體識別更具挑戰(zhàn)性。首先,中文詞匯沒有明顯的劃分;第二,為了確定一個單詞是否是一個實體,有必要結合上下文語義;第三:實體可能有縮寫。目前,實體識別的方法是:基于自定義字典的方法,基于人工規(guī)則的方法和深度學習方法。前兩種方法沒有捕獲問題單詞之間的語義關系,并且需要花費大量的時間和人力來構建詞庫或規(guī)則,并且不容易擴展。因此,本文采用基于字的Bi-LSTM+CRF模型,并使用 “BMESO”結構來標注實體。Bi-LSTM 實際上學習了與學習方向相反的LSTM 層,并且可以更好地獲取單個漢字學習上下文信息。該層將最有可能被選擇為標簽輸出。CRF 層則是起到特征限定的作用, 因 為 在 LSTM 層 的 輸 出 標 簽 會 出 現(xiàn)“B-MOVIE―――B-MOVIE”的情況,而CRF 層可以排除這些情況。因此Bi-LSTM 和CRF 輸出的是最佳的序列標注的標簽。
圖3是實體標注的模型,實體識別模型主要包括以下幾部分:Word-Embedding層、Bi-LSTM 層以及CRF層。Word-Embedding層將句子中的每個單詞映射到單詞向量作為模型的輸入。Bi-LSTM 的輸出是每個單詞的每個標簽的標點符號。CRF 層根據(jù)某些標記規(guī)則在序列級別執(zhí)行序列標記。
圖3 Bi-LSTM 實體識別模型
2.3.2 意圖分析
針對用戶在動漫領域常問的問題,將問題抽象分為不同的類,例如評分的問題模板是 “nm 評分”。在不同的類中,將用戶的各種問法抽象表示,例如 “nm 這部動漫評分是多少”。通過手動構建這個分類數(shù)據(jù)集,將問題劃分為20類,每個類中約有10種不同的問法。
TF-IDF算法:詞頻―逆文本頻率縮寫為TFIDF,該算法的功能是提取文本特征并使其矢量化以表示文本中單詞或單詞的重要性。該算法分為兩部分,“TF”即詞頻的概念,“IDF”即 “逆文本頻率”。關鍵詞出現(xiàn)的頻率將用TF 表示,用公式表示:
某一文檔用j表示,X出現(xiàn)的次數(shù)用n表示,所有詞出現(xiàn)的總次數(shù)用∑n表示。
IDF表示關鍵詞在文檔中的重要地位,用公式表示:
其中N 是文檔的總數(shù)量,n是包含關鍵字X的文檔的數(shù)量,n+1是為了防止分母為0。
從而TF-IDF的公式表示:
樸素貝葉斯分類:問題類別集合為Y= {y,y,y,...,y},問題特征集合為 X= {x,x,x,...,x},貝葉斯公式 (4)如下:
樸素貝葉斯算法基于貝葉斯算法,只要特征彼此獨立即可。在本文中將數(shù)據(jù)集中的某一類問題的特征用一組關鍵詞來表示,這一組關鍵詞就可以定義為這一類問題的特征向量 X= {x,x,x,...,x}。對于用戶輸入的問句,要確定此問句的所屬分類,則要求其具有最大后驗概率P (y|X)的類。等式 (4)的分母可以被認為是常數(shù);因此,有一個樸素的貝葉斯公式 (5):
在問題預處理模塊2.3之后,系統(tǒng)可以通過基本確定問題中的實體和關系來找到給定分類中的問題。根據(jù)不同的分類,制定知識地圖查詢語言,并在搜索知識圖譜后,獲得用戶請求的答案。由于本文的知識圖譜是儲存在Neo4j圖數(shù)據(jù)中,所以該查詢語言是用Cypher編寫。根據(jù)問題分類,確定所需要的實體和客體,將其帶入查詢語句中的缺失部分,得到完整的Cypher語句,將問題中的已知成分帶入到查詢的模板之中,得到缺失部分的Cypher語句。
本文根據(jù)不同的問題類型制定了不同的Cypher查詢模板,以下列舉部分查詢模板:
查詢 “動漫評分”的模板,已知主體 “動漫名(Cartoon)”,得到自身的屬性 “評分”:
MATCH (m:Cartoon)WHEREm.name=′{cartoon _name}′
RETURNm.average
查詢 “動漫導演”的模板,已知主體 “動漫名(Cartoon)”,主體與客體的關系,即動漫與導演的關系:“被導演”,得到客體 “導演名 (Directer)”:
MATCH (m:Cartoon)― [r:is_directed]―> (n:Directe)
WHERE m.name=′{cartoon_name}′
RETURN n.name
根據(jù)問題的分類制定相對應的回答模板,本文制定了20類的回答模板,將從Neo4j圖數(shù)據(jù)庫中查詢到的答案匹配到對應的回答模板中,例如 “海賊王的評分是多少?”,系統(tǒng)通過問題預處理模塊將用戶所提的問句分類到 “nm 評分”,經(jīng)過問題生成模塊,在動漫知識圖譜內(nèi)查詢到答案 “9.5”,該分類的問題回答模板 “cartoon_name+動漫電影評分是+answer+分”,即 “海賊王動漫電影評分是9.5分”。如果產(chǎn)生的答案不是單一的,而是有多個答案組成,系統(tǒng)則會將所有的答案返回。例如 “海賊王屬于什么類型的電影?”,在知識圖譜中查詢到答案,將其隔開成 “喜劇、動作、動畫、奇幻、冒險”?;卮鹉0迨?“海賊王屬于喜劇、動作、動畫、奇幻、冒險”。
我們將本文提出的知識圖譜問答系統(tǒng)應用于虛擬智能客服。硬件環(huán)境為:Intel(R)Xeon (R)CPU E5-2620 v4@2.10Hz 2.10 GHz的處理器,64.0GB的內(nèi)存,NVIDIA TITAN Xp的顯卡。
本系統(tǒng)解決了專業(yè)領域內(nèi)的實體識別、用戶意圖識別等問題,實現(xiàn)了將中文問題轉化成Cypher查詢語言的過程,能夠實現(xiàn)絕大多數(shù)的動漫電影問題回答。該問答系統(tǒng)基于動漫電影知識圖譜,將用戶輸入的問題首先用Bi-LSTM 和CRF 模型進行實體標注,該模型的準確率可達95%以上。此外,用戶問題通過TF-IDF 算法和樸素貝葉斯分類器進行分類。在本文構建的數(shù)據(jù)集中,平均貝葉斯算法的準確率超過85%。最后,根據(jù)問題分類,選擇問題模型,根據(jù)問題的實體、對象和主客體關系替換問題模型中的替換項,得到問題的最終答案。與其他分類算法相比,本系統(tǒng)意圖分類中使用的樸素貝葉斯算法在本文構建的數(shù)據(jù)集中具有更高的準確性。隨機選擇10%的問題樣本作為測試集,在此測試集上的實驗結果如表1 所示,NB (樸素貝葉斯算法)的準確率最高,可達到91.6%;其次是SVM(支持向量機)準確率在79.7%;再次是KNN (K最近鄰算法),準確率在76.8%;最后是Decision tree(決策樹),準確率只有54.6%。根據(jù)以上結果顯示,我們可以得出,樸素貝葉斯算法在本文所構建的數(shù)據(jù)集的準確率最高。
表1 意圖分類的實驗結果
該系統(tǒng)的實驗結果如表2:
表2 實體識別、意圖分析實驗結果
海賊王的導演是誰?電影名實體:海賊王 導演 海賊王是由宇田鋼之助導演的。宇田鋼之助導演過的喜劇動漫有哪些?人名實體:宇田鋼之助類型實體:喜劇某導演導演過哪些喜劇動漫宇田鋼之助導演過喜劇的動漫有:海賊王。
本文將該系統(tǒng)應用于虛擬智能機器人。利用U-nity引擎創(chuàng)建虛擬機器人,將問答模塊植入機器人中,為了方便用戶體驗,還添加了語音交互功能。在這個應用里,用戶可以通過文字或語音的方式對機器人進行提問,而虛擬客服會通過語音的方式告訴用戶需要的答案。問答效果如圖4所示,文字方式:在文本框中輸入問題,點擊 “確認”按鈕進行查詢。語音方式:點擊語音按鈕 (“開始”鍵),用戶通過語音進行問題輸入。
圖4 虛擬智能機器人
本文提出了一種基于Bi-LSTM 和CRF 的命名實體識別方法和基于樸素貝葉斯的圖分類方法,該方法在智能問答系統(tǒng)中得到了應用。系統(tǒng)功能的實現(xiàn)主要基于動畫電影的知識圖譜。Bi-LSTM 和CRF解決了專業(yè)領域語料庫中相關實體的識別問題,不需要專有詞典,大大減輕了人工標注的工作量。樸素貝葉斯分類可以準確捕捉用戶的問題意圖并確定問題模型。通過構建和擴展知識圖譜,問答區(qū)域也可以相應地擴展。下一步是改進問題預處理模塊。首先,提高問題中的實體和知識地圖中的實體的鏈接準確性。其次,通過深度學習方法捕獲用戶意圖,減少手動定義意圖的麻煩。