百分點(diǎn)科技認(rèn)知智能實(shí)驗(yàn)室:CCKS知識圖譜問答大賽的季軍實(shí)現(xiàn)方案

  編者按:2021年全國知識圖譜與計算語義大會(China Conference on Knowledge Graph and Semantic Computing 2021)共設(shè)立五個評測主題,十四個評測任務(wù)。百分點(diǎn)認(rèn)知實(shí)驗(yàn)室參加了該評測任務(wù)中的“生活服務(wù)領(lǐng)域知識圖譜問答”比賽,經(jīng)過長達(dá)3個多月的激烈角逐,百分點(diǎn)認(rèn)知智能實(shí)驗(yàn)室在比賽數(shù)據(jù)集上得分0.7852,位列B榜第三名,獲得該大賽的季軍。本文主要介紹實(shí)驗(yàn)室在本次比賽和知識圖譜問答業(yè)務(wù)實(shí)踐中使用的技術(shù)方案。

  一、背景介紹

  知識圖譜的早期理念源于萬維網(wǎng)之父Tim Berners-Lee關(guān)于語義網(wǎng)(The SemanticWeb)的設(shè)想,旨在采用圖結(jié)構(gòu)(Graph Structure)來建模和記錄世界萬物之間的關(guān)聯(lián)關(guān)系和知識,以便有效實(shí)現(xiàn)更加精準(zhǔn)的對象級搜索。知識圖譜的相關(guān)技術(shù)已經(jīng)在搜索引擎、智能問答、語言理解、推薦計算、大數(shù)據(jù)決策分析等眾多領(lǐng)域得到廣泛的實(shí)際應(yīng)用。

  隨著自然語言處理、深度學(xué)習(xí)、圖數(shù)據(jù)處理等眾多領(lǐng)域的飛速發(fā)展,知識圖譜在自動化知識獲取、知識表示學(xué)習(xí)與推理、大規(guī)模圖挖掘與分析等領(lǐng)域又取得了很多新進(jìn)展。知識圖譜已經(jīng)成為實(shí)現(xiàn)認(rèn)知層面的人工智能不可或缺的重要技術(shù)之一。

  知識圖譜是較為典型的交叉領(lǐng)域,涉及知識工程、自然語言處理、機(jī)器學(xué)習(xí)、圖數(shù)據(jù)庫等多個領(lǐng)域。而知識圖譜的構(gòu)建及應(yīng)用涉及更多細(xì)分領(lǐng)域的一系列關(guān)鍵技術(shù),包括:知識建模、關(guān)系抽取、圖存儲、自動推理、圖譜表示學(xué)習(xí)、語義搜索、智能問答、圖計算分析等。做好知識圖譜需要系統(tǒng)掌握和應(yīng)用這些分屬多個領(lǐng)域的技術(shù)。

  近年來,基于自然語言的問答系統(tǒng)逐漸成為人工智能及其相關(guān)產(chǎn)業(yè)的重點(diǎn)關(guān)注領(lǐng)域,成為人機(jī)交互的新趨勢。相比于傳統(tǒng)的搜索引擎獲取知識的方式,智能問答系統(tǒng)基于自然語言交互的方式更符合人的習(xí)慣。

  隨著人工智能的進(jìn)一步發(fā)展,知識圖譜在深度知識抽取、表示學(xué)習(xí)與機(jī)器推理、基于知識的可解釋性人工智能、圖譜挖掘與圖神經(jīng)網(wǎng)絡(luò)等領(lǐng)域取得了一系列新的進(jìn)展。這些進(jìn)展讓知識圖譜的問答系統(tǒng)需要面對的兩個問題(問題的理解和問題到知識圖譜的語義關(guān)聯(lián))得到了較好的解決,使得知識圖譜智能問答工程應(yīng)用成為現(xiàn)實(shí)。百分點(diǎn)認(rèn)知智能實(shí)驗(yàn)室在多個行業(yè)積累了豐富的基于知識圖譜問答的技術(shù)實(shí)踐經(jīng)驗(yàn)。

  二、賽題任務(wù)

  1. 任務(wù)描述

  本任務(wù)屬于中文知識圖譜自然語言問答任務(wù),簡稱CKBQA (Chinese Knowledge Base Question Answering)。即輸入一句中文問題,問答系統(tǒng)從給定知識庫中選擇若干實(shí)體或?qū)傩灾底鳛樵搯栴}的答案。

  今年在OpenKG基礎(chǔ)上引入生活服務(wù)領(lǐng)域知識庫及問答數(shù)據(jù)。其中包括旅游、酒店、美食等多種領(lǐng)域的數(shù)據(jù),同開放領(lǐng)域知識庫PKUBASE一起作為問答任務(wù)的依據(jù)。

  2. 數(shù)據(jù)格式

  數(shù)據(jù)集以自然語言問句和對應(yīng)的SPARQL查詢語句標(biāo)記組成。

  SPARQL [1] (SPARQL Protocol and RDF Query Language),是為RDF開發(fā)的一種查詢語言和數(shù)據(jù)獲取協(xié)議。其語法由三元組組成,其中?x所在where語句中的位置表示需要查詢的是哪一個要素。

  比賽數(shù)據(jù)示例:

  問題:莫妮卡·貝魯奇的代表作?

  Sparql:select?x where { <莫妮卡·貝魯奇> <代表作品> ?x. }

  答案:<西西里的美麗傳說>

  3. 問題格式

  傳統(tǒng)的問題知識圖譜查詢問題類型,根據(jù)實(shí)體數(shù)量不同主要分為單實(shí)體查詢、雙實(shí)體查詢、三實(shí)體查詢,又根據(jù)查詢方式不同分為一跳查詢,跳查詢、關(guān)系查詢,如圖1所示。

圖1. 傳統(tǒng)問題類型

  今年在問題設(shè)置上引入了一些特殊問題類型,主要是添加了filter、order等函數(shù)和http://www.w3.org/2001/XMLSchema#float等RDF標(biāo)準(zhǔn)類型后綴的美團(tuán)生活服務(wù)類問題,如圖2所示。

圖2. 特殊類型問題

  三、技術(shù)方案

  1. 方案概述

  百分點(diǎn)科技提出了一種結(jié)合語義解析和信息檢索的方法,該方法應(yīng)用語義解析處理具有固定句型或“Filter”等函數(shù)的問題,并應(yīng)用信息檢索處理具有不同句式的問題。技術(shù)方案總結(jié)如圖3所示。在信息檢索模塊中,Pipeline由四個子模塊組成,即指稱識別、實(shí)體鏈接、路徑生成和路徑排序。在語義解析模塊中,百分點(diǎn)科技采用了SPARQL模板匹配和SPARQL生成兩種方法實(shí)現(xiàn)。最后,通過同樣的方式選擇答案,將語義解析模塊和信息檢索模塊集成在一起。

圖3. 技術(shù)方案總結(jié)

  該方案的優(yōu)勢在于能夠處理復(fù)雜函數(shù)結(jié)構(gòu)的問題,例如:

  問題:我們現(xiàn)在在北京的首都賓館,行走3公里的能到達(dá)的景點(diǎn)都有哪些?

  Sparql:select ?x where { <首都賓館(原首都大酒店)> <附近> ?cvt. ?cvt <實(shí)體名稱> ?x. ?cvt <距離值> ?d. ?x <類型><景點(diǎn)>. filter(?d<=3) }

  2. 方案介紹

圖4. 流程實(shí)現(xiàn)和模型原理圖

  技術(shù)方案框架如圖4所示,各個模塊與各個子模塊執(zhí)行流程與功能介紹如下。

  信息檢索(Information Retrieval):借助問題傳遞的信息,直接從KG中檢索出可能的答案,并排序答案。

  指稱識別:識別問題中提及的圖譜實(shí)體節(jié)點(diǎn)的文本片段;

  實(shí)體鏈接:根據(jù)指稱和問題檢索出圖譜中與其對應(yīng)的實(shí)體,作為話題實(shí)體;

  路徑生成:從識別到的話題實(shí)體出發(fā),遍歷生成從話題實(shí)體到答案實(shí)體的候選路徑;

  路徑排序:對候選路徑進(jìn)行排序,篩選出最能回答問題的正確路徑。

  語義解析(Semantic Parsing):將問題解析成可執(zhí)行的Sparql查詢語句,執(zhí)行語句獲取答案。分為兩種方法,一種是Sparql模板匹配,一種是Sparql生成,兩種方法相互獨(dú)立。

  (1)SPARQL模板匹配:將問題與訓(xùn)練集中最相似的SPARQL模板進(jìn)行匹配。

  (2)SPARQL生成:利用預(yù)訓(xùn)練語言模型Unilm生成新的SPARQL。

  query2Sparql:根據(jù)query語義解析成Sparql語句;

  Sparql候選路徑生成:基于Sparql語句中的實(shí)體,去知識圖譜中匹配與Sparql相關(guān)的候選路徑;

  路徑排序:對候選路徑進(jìn)行排序,篩選出最能回答問題的正確路徑。

  結(jié)果合并:根據(jù)不同模型輸出結(jié)果的排序分?jǐn)?shù)對輸出進(jìn)行過濾,獲取最終結(jié)果。

  3. 指稱識別

  指稱識別的目標(biāo)是識別問題中提到的知識庫實(shí)體的文本片段。為了提高召回率,百分點(diǎn)科技實(shí)現(xiàn)了四種提及識別方法。

  (1)序列標(biāo)注:如圖5所示,將識別作為序列標(biāo)記任務(wù)建模,并基于Roberta+CRF訓(xùn)練K-Fold交叉驗(yàn)證的序列標(biāo)記模型。

圖5. 序列標(biāo)注模型架構(gòu)

  (2)匹配-判別式:候選實(shí)體指稱數(shù)目較多,因此通過一個指稱判別模型進(jìn)行過濾。在候選指稱的開始和結(jié)束位置加入“&”號作為實(shí)體位置標(biāo)志位,然后用BERT模型做文本分類判斷當(dāng)前的實(shí)體指稱是否正確。

  基于規(guī)則的識別:使用正則表達(dá)式來匹配特殊的實(shí)體和屬性值,如日期、連續(xù)英語和引號中的文本片段等。

  基于字典的識別:通過最長匹配算法與實(shí)體提及詞典識別問題中的提及。

  模糊匹配:建立一個實(shí)體提及次數(shù)的倒排索引,然后將問題作為查詢詞,回憶出匹配度最高的前10個提及次數(shù)。以序列標(biāo)注的輸出為主要結(jié)果,輔以其他方式的結(jié)果。

  4. 實(shí)體鏈接

  當(dāng)前任務(wù)是基于上一步獲得的候選實(shí)體指稱,找到其對應(yīng)的KG中真實(shí)存在的實(shí)體,也稱為話題實(shí)體。分為以下步驟:

  (1)獲取候選實(shí)體:使用上一步獲取到的實(shí)體提及在別名字典與實(shí)體集合中進(jìn)行模糊匹配,獲取排名top10的候選實(shí)體。

  (2)獲取鄰居節(jié)點(diǎn)信息:從候選實(shí)體出發(fā)(作為頭實(shí)體或尾實(shí)體),獲取候選實(shí)體的所有一階路徑。

  (3)按照PageRank分?jǐn)?shù)過濾鄰居節(jié)點(diǎn):獲取候選實(shí)體鄰居節(jié)點(diǎn)的PageRank分?jǐn)?shù),保留前10分?jǐn)?shù)的鄰居節(jié)點(diǎn)。

  PageRank假設(shè):

  數(shù)量假設(shè):一個實(shí)體節(jié)點(diǎn)的入度(被鏈接數(shù))越大,實(shí)體重要性越高。

  重要性假設(shè):一個實(shí)體節(jié)點(diǎn)的入度的來源(哪些實(shí)體在鏈接它)重要性越高,實(shí)體重要性越高。

  (4)融合鄰居節(jié)點(diǎn)信息的BERT語義匹配度計算:利用鄰居節(jié)點(diǎn)和問題信息,通過BERT進(jìn)行語義匹配度計算,過濾候選實(shí)體,得到話題實(shí)體。

  候選實(shí)體篩選模型輸入數(shù)據(jù)格式:[CLS]問題[SEP]提及&候選實(shí)體[SEP]鄰居節(jié)點(diǎn)關(guān)系[SEP]

  計算方式:取[CLS]張量做二分類(0,1分類),保留其分?jǐn)?shù)排名top10 的實(shí)體。

  5. 路徑生成

  在實(shí)體鏈接步驟中獲取到了問題中的話題實(shí)體,路徑生成是從話題實(shí)體出發(fā),遍歷KG,生成所有可能的答案路徑,在過程中對路徑進(jìn)行剪枝。

  (1)路徑召回:路徑召回策略分為單實(shí)體和多實(shí)體兩種情況。其中,多實(shí)體優(yōu)先,即如果多實(shí)體間存在路徑,則不進(jìn)行單實(shí)體召回。

  單實(shí)體:

  (1) 作為頭實(shí)體的一度路徑 <實(shí)體><關(guān)系>;

  (2) 作為尾實(shí)體的一度路徑<關(guān)系><實(shí)體>;

  (3) 對 (1) 擴(kuò)展至二度出路徑 <實(shí)體><關(guān)系1><關(guān)系2>;

  (4) 對 (1) 擴(kuò)展至二度入路徑 <實(shí)體><關(guān)系1><關(guān)系2>;

  (5) 對 (2) 擴(kuò)展至二度出路徑<關(guān)系1><實(shí)體><關(guān)系2>;

  (6) 對 (2) 擴(kuò)展至二度入路徑<關(guān)系1><實(shí)體><關(guān)系2>。

  多實(shí)體(以雙實(shí)體為例):

  (1) 一度路徑 <實(shí)體1><關(guān)系1><實(shí)體2><關(guān)系2>;

  (2) 一度路徑<關(guān)系1><實(shí)體1><關(guān)系2><實(shí)體2>;

  (3) 一度路徑<關(guān)系1><實(shí)體1><實(shí)體2><關(guān)系2>;

  (4) 一度路徑 <實(shí)體1><關(guān)系1><關(guān)系2><實(shí)體2>;

  (5) 對 (1)(同2、3、4) 擴(kuò)展至二度出路徑 <實(shí)體><關(guān)系1><實(shí)體2><關(guān)系2><關(guān)系3>;

  (6) 對 (1)(同2、3、4) 擴(kuò)展至二度入路徑 <實(shí)體><關(guān)系1><實(shí)體2><關(guān)系2><關(guān)系3>;

  (7) 實(shí)體間的關(guān)系<實(shí)體1><實(shí)體2>。

  (2)剪枝:為避免候選答案數(shù)目爆炸,我們根據(jù)以下策略進(jìn)行剪枝。

  (1) 刪除一跳路徑中答案實(shí)體是話題實(shí)體的路徑,避免將話題實(shí)體本身作為答案;

  (2) 如果二跳節(jié)點(diǎn)超過10000個,則不進(jìn)行二跳;

  (3) 刪掉二跳路徑中答案實(shí)體是話題實(shí)體的路徑,避免將話題實(shí)體本身作為答案;

  (4) 當(dāng)二跳路徑(出或入)數(shù)超過100條但小于500時,刪掉二跳路徑(出或入)中的關(guān)系與問句沒有任何字符上的交集的候選答案路徑;

  (5) 當(dāng)二跳路徑(出或入)數(shù)超過500時,過濾掉所有二跳路徑。

  6. 路徑排序

  路徑排序分為粗排和精排兩個步驟。

  粗排:根據(jù)問題query和候選路徑path的特征,對候選路徑進(jìn)行粗排,采用LightGBM機(jī)器學(xué)習(xí)模型,保留最多20條路徑,選取的模型特征如圖6所示。

圖6. LightGBM模型特征

  精排:采用預(yù)訓(xùn)練語言模型計算query和path的語義匹配度,選擇得分最高的答案路徑作為答案,如圖7所示。

圖7. 語義相似度計算模型

  7. SPARQL模板匹配

  當(dāng)前任務(wù)是根據(jù)訓(xùn)練集的數(shù)據(jù)獲取“問題——Sparql”的問答模板,然后通過匹配問題模板的方式獲取Sparql模板,并將實(shí)體關(guān)系填入Sparql模板,得到完整的Sparql。

  (1)問句Sparql對模板生成:利用訓(xùn)練集的sparksql,摳出實(shí)體形成槽位,生成模板。

  (2)問句抽象:將問句query轉(zhuǎn)化為抽象的query模板,以方便下一步的query匹配和Sparql模板槽位填充。具體地,利用分詞工具將詞性為LOC,ORG,nz,m,PER,n的詞摳出,并替換成相對的詞性。

  (3)問句模板相似度計算:相似度計算方法“格式塔模式匹配”,保留相似度分?jǐn)?shù)最大的抽象query模板,取其對應(yīng)的抽象Sparql模板。

  (4)填補(bǔ)Sparql 模板槽位:將query中的實(shí)體關(guān)系和抽象Sparql模板中的槽位一一對應(yīng),將對應(yīng)的實(shí)體關(guān)系填入到Sparql模板中,得到完整的Sparql。

  8. SPARQL生成

  采用預(yù)訓(xùn)練語言模型Unilm(Uni?ed Language Model)的seq2seq架構(gòu)生成Sparql。類似于翻譯任務(wù),輸入問題,輸出Sparql,Unilm模型結(jié)構(gòu)如圖8所示。

圖8. query2sparql模型

  輸入query:運(yùn)動員李娜的丈夫的主要獎項(xiàng)有哪些?

  輸出Sparql:select ?Z where{?X <中文名> “李娜”. ?X <類型><運(yùn)動員>. ?X <丈夫> ?Y.?Y <主要獎項(xiàng)> ?Z.}

  由于Unilm模型直接生成的Sparql可能與KG中存在的實(shí)體關(guān)系有差異,如上例中的“李娜”的“丈夫”是用“配偶”存儲的,故不能直接查詢得到答案,還需對實(shí)體關(guān)系做進(jìn)一步的修補(bǔ),使修補(bǔ)后的Sparql的實(shí)體和關(guān)系是真實(shí)存在于KG中的。有以下4種修補(bǔ)策略:

  (1)原實(shí)體不存在時,先修實(shí)體后修關(guān)系。具體地,采用實(shí)體鏈接中的獲取候選實(shí)體方法得到新實(shí)體,然后把原關(guān)系替換成新實(shí)體的一階關(guān)系。

  (2)原關(guān)系不存在時,先修關(guān)系再修實(shí)體。具體地,采用原關(guān)系在Elasticsearch中關(guān)系字典的模糊匹配或者原關(guān)系的同義詞關(guān)系(需在kg的關(guān)系字典中),然后把原實(shí)體替換成新關(guān)系的一階實(shí)體。

  (3)不管原實(shí)體關(guān)系是否存在,修實(shí)體+修關(guān)系。

  (4)對實(shí)體使用Sparql的regex語法(不需要完全正確的實(shí)體名稱)。例如:select ?x where { ?x <主要成就> ?y. filterregex(?y, '雜交水稻之父'). }

  由于修補(bǔ)后一個問題會有多個候選Sparql路徑,因此也需對其進(jìn)行排序,篩選出最能回答問題的正確Sparql,方法同信息檢索中路徑排序中的BERT精排。

  9. 結(jié)果合并

  在信息檢索和語義解析兩大類方法中,最終都是使用的同一模型計算與問題的相似度,因此可以將兩類方法的結(jié)果放在一起比較,取分?jǐn)?shù)最高的結(jié)果作為最終答案。

  四、評測效果

  本方案在2021 CCKS知識圖譜問答大賽的數(shù)據(jù)集上進(jìn)行了評測,數(shù)據(jù)方面,相較往年在OpenKG基礎(chǔ)上引入生活服務(wù)領(lǐng)域知識庫及問答數(shù)據(jù),其中包括旅游、酒店、美食等多種領(lǐng)域的數(shù)據(jù),同開放領(lǐng)域知識庫PKUBASE一起作為問答任務(wù)的依據(jù)。特別是生活服務(wù)領(lǐng)域的數(shù)據(jù)集,涉及過濾、分類等功能。訓(xùn)練集有6525個帶標(biāo)簽sparql和答案的問題,開發(fā)集有2100個問題,測試集有1191個問題。給定的知識圖包含6600萬個三元組和超過2000萬個實(shí)體。

  百分點(diǎn)科技使用ElasticSearch構(gòu)建一個反向索引,整個知識圖譜存儲在Nebula圖形數(shù)據(jù)庫中,BERT模型統(tǒng)一使用RoBERTa-wwm-ext-large。

  本任務(wù)的評價指標(biāo)包括宏觀準(zhǔn)確率(Macro Precision),宏觀召回率(Macro Recall),Averaged F1值。

  本方案最終的實(shí)驗(yàn)效果指標(biāo)如下:

  識別效果:Averaged F1=0. 7852

  總結(jié)

  在應(yīng)用有效性方面,通過2021年全國知識圖譜與計算語義大會知識圖譜問答任務(wù),百分點(diǎn)科技設(shè)計的方案在公開數(shù)據(jù)集上性能表現(xiàn)優(yōu)秀,具有很好的應(yīng)用效果,且后續(xù)可繼續(xù)對路徑排序算法進(jìn)行優(yōu)化,使其能夠更準(zhǔn)確地選擇正確的答案。

  在價值潛力方面,該方案擴(kuò)展性強(qiáng),且適合各種不同業(yè)務(wù)場景的問答需求,表現(xiàn)出良好的可擴(kuò)展性,適合工程應(yīng)用。

  百分點(diǎn)認(rèn)知智能實(shí)驗(yàn)室已經(jīng)將該方案部署到了眾多不同業(yè)務(wù)的知識圖譜系統(tǒng)中,將知識圖譜與預(yù)訓(xùn)練模型融合,通過邏輯推理進(jìn)行復(fù)雜問題查詢,讓問答查詢更智能。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )