馮 桫,劉井平,蔣海云,肖仰華
(復旦大學 計算機科學技術學院,上海 200433)
近年來,隨著自然語言處理需求的不斷增長,知識圖譜成為人們研究的焦點。目前,知識圖譜已經被廣泛地應用于各種智能化的推薦系統[1]、問答系統[2]以及語言生成[3]等諸多場景。為滿足這些應用的數據需求,研究人員構建出大規模的知識圖譜,如英文的DBpedia[4]、YAGO[5]以及中文的CN-DBpedia[6]等。在這些知識圖譜中,數據通常以<實體,屬性(關系),屬性值(尾實體)>的三元組形式進行組織,例如“特朗普的國籍是美國”這一條知識,就可以被表示為<特朗普,國籍,美國>。由于本文所敘述的方法對屬性值及尾實體的抽取均適用,后文將屬性和關系統一稱為屬性,將屬性值和尾實體統一稱為屬性值。
在構建知識圖譜的過程中,獲取圖譜中實體相關的各屬性的屬性值是非常重要的步驟。傳統的屬性值抽取方法主要分為基于模式的方法、基于分類器的方法和基于序列標注模型的方法。基于模式的方法通常被用于從高質量的半結構化文本(如百科頁面的信息表)中,利用句法模式[7]、語義模式[8]或正則表達式等人工或自動生成的模式直接進行抽取。由于這類半結構化文本的表達規律性強,通過基于模式的方法可以用較小代價得到大量高質量的三元組。此類方法已經被應用于大量的知識圖譜構建實踐中。基于分類器的方法首先需要利用命名實體識別(NER)工具,在文本中定位整個三元組的實體和屬性值。然后利用類似PCNN[9]及文獻[10]所述的分類器,結合實體和屬性值之間的上下文信息,分類得到三元組對應的屬性,從而實現抽取。基于序列標注模型的方法最初的序列標注模型常被應用于NER 等任務中[11]。隨著序列標注模型的發展,序列標注模型也開始被應用于抽取任務,例如,人們利用BiLSTM-CRF 神經網絡實現了已知屬性下的實體和屬性值抽取[12]。近年來,隨著注意力機制的不斷發展,人們也開始使用更強的序列標注模型,實現了具有較高準確率的屬性值抽取方法[13]。
隨著在真實場景下數據需求的不斷擴展,知識圖譜開始需要更多細節的知識,這使得從互聯網語料中抽取更多更稀有的屬性成為知識圖譜構建中的新問題。傳統的基于模式的方法由于互聯網語料的高噪音,導致人工構建模式的工作量大幅增加,自動構建模式準確率下降,難以召回足夠的高質量知識。而對于和訓練集有著較強相關性的分類方法和序列標注方法,目前仍然缺乏高質量的基于互聯網語料的訓練數據。并且由于模型本身的限制,它們難以抽取超出訓練集之外(缺乏訓練數據)的稀有屬性,使得其應用受到了限制。
考慮到傳統方法在新場景下所受到的限制,本文提出一種基于機器閱讀理解模型和眾包驗證的屬性值抽取方法。該方法的輸入為所需抽取的實體-屬性對,通過構造搜索關鍵字從互聯網中獲得上下文,并根據機器閱讀理解模型,以類似序列標注模型的形式標注出候選屬性值并得到置信度。在此基礎上,通過輕量化的眾包驗證方法,對模型得到的抽取結果進行驗證,并調整優化各候選結果置信度以得到最終的抽取結果。
實體屬性值抽取任務的輸入為所需抽取的實體-屬性對,輸出為抽取得到的屬性值。本文屬性值抽取方法總體框架如圖1 所示。

圖1 本文方法的總體框架Fig.1 Overall framework of the proposed method
本文方法主要步驟如下:
步驟1構造搜索關鍵字與獲取互聯網上下文。對于輸入的實體-屬性對,需要其相關上下文作為抽取時的知識來源。通過簡單的模板,“[實體]的[屬性]”可以構造出用于搜索引擎搜索的關鍵字,例如對于實體-屬性對<西虹市首富,上映時間>,可以構造出搜索關鍵字“西虹市首富的上映時間”。利用上面構造的關鍵字進行搜索,可以從搜索引擎的結果頁中抓取各條結果的摘要信息,由于這些摘要信息為基于實體-屬性對構造出的關鍵詞的相關內容,本文直接把搜索結果中的前k條作為獲取的互聯網上下文。
步驟2基于機器閱讀理解模型的候選屬性值抽取。機器閱讀理解模型以實體-屬性對和一條對應的上下文作為輸入,并輸出從該上下文中抽取出的候選屬性值及其置信度。
步驟3眾包驗證。得到候選屬性值及其置信度后,本文引入一種基于判斷題形式的眾包驗證任務。在人工標注中,僅需要根據提示對各侯選屬性值進行簡單判斷。通過人工判斷的結果對上面步驟得到的候選屬性值的置信度進行調整,最終選擇置信度最高的一條結果作為輸出。
為實現對候選屬性值的抽取,本文提出了針對屬性值抽取的機器閱讀理解模型,即MCKE(Machine reading Comprehension Knowledge Extraction)模型。該模型主要來自文獻[14-15]中的兩個基于注意力機制的機器閱讀理解模型,它們在機器閱讀理解任務上有著較高的準確率。針對屬性值抽取任務,MCKE 模型通過引入BERT 進行字級別的輸入表示學習,并在輸入表示的過程中進行了上下文表示的增強,從而提高其對屬性值抽取任務的適應性。MCKE 模型的整體架構如圖2 所示。

圖2 MCKE 模型的整體架構Fig.2 Overall framework of MCKE model
本文模型的輸入為上下文字符串C,以及用空格隔開的由實體和屬性拼接而成的字符串Q。模型的輸出為最終抽取結果的起始位置以及末尾位置的概率分布,分別為ps和pe。
本文模型主要包含輸入表示、表示變換、注意力層、輸出層等組成部分。
2.1.1 字符級別表示
不同于常用的Word2Vec[16]、GloVe[17]等詞嵌入方法,本文選擇使用Google 最新提出的BERT[18]語言模型來獲得模型輸入部分的向量表示。BERT 模型是一種Transformer[19]結構實現的語言模型,實現了對于各輸入字符上下文的編碼。不同于傳統詞嵌入方法中字符的表示與上下文無關,本文引入BERT可以使同一個字符輸入在上下文不同的情況下有著不同的向量表示,其包含了與字符同時輸入的上下文信息。
在MCKE 模型中使用了預訓練的BERT 模型來獲得輸入信息的向量表示,對于實體-屬性輸入和上下文輸入Q={q1,q2,…,qm}和C={c1,c2,…,cn},先在其首尾添加標識符[CLS]和[SEP],將其輸入BERT 模型中,得到輸入實體-屬性表示與上下文表示的U0={u1,u2,…,um}和H0={h1,h2,…,hn}。
2.1.2 增強表示
除字符級別的表示外,本文針對上下文輸入進行了表示的增強。通過計算額外信息向量,在表示中標注了和實體-屬性有關部分的信息,也間接補充了分詞的信息。在上下文輸入中引入實體-屬性輸入內容的位置信息,可有助于模型對句子結構信息的學習,增強其對稀有屬性的抽取效果,增強表示方法如下:
1)對輸入的上下文和實體-屬性進行分詞得到Cword={cw1,cw2,…}和Qword={qw1,qw2,…},其中,qwi和cwi為分詞結果得到的詞語。利用這部分信息,可以計算上下文中各詞的額外信息向量,其組成部分如式(1)所示:

2)每個信息向量包含兩個維度,其中,第一維表示該詞語是否被包含在實體-屬性輸入中,第二維表示該詞語中各字符被包含在實體-屬性輸入中的比率。計算得到各額外信息向量后,將其與H0中各對應的字符向量進行拼接,得到增強過的上下文表示,如式(2)所示:

基于本文提出的模型,在整個模型的輸入和輸出過程中需要對文本的表示進行變換,從而生成其后面步驟所需的表示。為此,本文引入了類似于文獻[14]所采用的編碼模塊,并通過這些編碼模塊實現表示的變換。
在一個編碼模塊中,對于一個輸入表示X,首先對該表示進行位置編碼。位置編碼是一種常用的用于在非循環神經網絡中保留輸入位置信息的方法。經過位置編碼后,得到新的表示。
在編碼模塊中,使用了3 種不同的編碼層對輸入表示進行變換,即卷積層、自注意力層和前饋層。
編碼模塊中的卷積層選用了Separable 卷積層[20],其相比普通的卷積層有著計算速度快、泛化能力強的優勢。在本文模型中,卷積核大小設為7,并通過padding 方法補全輸出至和輸入相同維度。
編碼模塊中的自注意力層使用了多頭注意力的方式來計算,從而增強自注意力層對于多關注點的信息,對于輸入X進行如下計算:

其中,O為本層輸出,和WO為可訓練的參數。本文模型自注意力層的頭數設為2。
編碼模塊中的前饋層計算方法如下:

為防止訓練過程中可能出現的梯度消失現象,在上述各層的使用中都加入了殘差機制。對于編碼模塊中各層,其輸出為:

其中,layernorm 為Layer Normalization[21]。
通過上述3 種層的結合,可以得到2 種不同的編碼模塊,在注意力層之前的編碼模塊,由4 個卷積層、1 個自注意力層和1 個前饋層組成。在注意力層之后的編碼模塊,由2 個卷積層、1 個自注意力層和1 個前饋層組成。
注意力層的輸入是前面步驟獲得的上下文表示和實體-屬性表示,經過編碼模塊之后得到的新表示結果和。在本文步驟中,主要利用注意力機制對上下文表示進行進一步的增強。
采用類似于文獻[15]的方法,本文模型需要首先通過式(8)中的線性變換,得到實體-屬性表示的相似性矩陣S。
其中,⊙為元素級別的乘法,Ws為可訓練的參數。利用相似性矩陣S,經過式(9)~式(12)中的變換,可以進一步計算上下文對實體-屬性對的注意力A,以及實體-屬性對與上下文的注意力B。

最終通過對上述注意力以及表示的組合,得到融合了實體-屬性信息的新上下文表示G,其中Gi=[hi,ai,hi⊙ai,hi⊙bi]。
經過注意力層得到的新的上下文表示G后,經過3 個額外的編碼模塊,可以分別得到用于計算輸出的3 個新的上下文表示:G0=Encoder(G),G1=Encoder(G0),G2=Encoder(G1)。
模型的輸出層通過對拼接之后的編碼進行一次非線性變化,可以得到抽取結果的起始位置和末尾位置在上下文輸入中位置的概率分布:

其中,W1與W2為可訓練的參數,[;]為向量拼接操作,ps為起始位置分布,pe為末尾位置分布。
本文模型的目標函數為:

基于模型輸出的起始位置分布ps以及末尾位置分布pe,通過最大化得到相應的起始和終止位置(start,end),就可以得到最終的抽取結果所在的坐標。該抽取結果的置信度為。
在經過模型抽取后可以發現,一些容易混淆的結果通常在置信度上相差不多。本文參照文獻[22]中的架構,引入一種高效率的判斷題式眾包驗證任務,對合理的抽取結果進行獎勵,對不合理的結果進行懲罰來進一步提高抽取的效果。
本文將眾包任務設定為判斷題,以提高眾包任務的時間效率。將抽取任務中的上下文、實體-關系對以及抽取的候選屬性值展示給眾包工人,由工人判斷這一候選屬性值是否合理。通過這樣的手段,降低了工人的準入門檻,提高了任務的完成效率。本文所設計的眾包任務的實際界面如圖3 所示。

圖3 眾包驗證的用戶界面Fig.3 User interface for crowdsourcing validation
在界面中,為方便定位,在上下文中對候選屬性值進行了加粗處理,方便在遇到困難情況時快速跳轉到下一條任務,提供不確定的選項。
通過對各結果進行眾包后,可以獲得對每條候選結果的包含正確、錯誤及不確定3 種選項的信任度投票情況。基于這些情況,對在眾包驗證中被選擇正確占比較高的候選結果的權重進行獎勵,對被選擇錯誤數量占比較高的結果的權重進行懲罰,并保持被選擇不確定的結果的權重。可以區分置信度相差不大的易混淆結果,并對模型抽取出的錯誤結果進行排除。參考文獻[23]中的基于正確、錯誤、不確定3 項標注的置信度計算方法,可利用式(16)計算得到調整系數γi:

最終以具有最高抽取分數的屬性值作為抽取結果輸出,其中分數大于閾值β的結果被作為有效抽取結果。
本文所采用的實驗數據分為2 個部分:1)抽樣數據,從CN-DBpedia 中抽樣得到的162 組實體-屬性對以及其對應的屬性值;2)新實體數據,采用人工標注得到的496 組實體-屬性對以及對應屬性值。為保證實驗數據的多樣性,在上面的實驗數據獲取過程中,選擇了分別來自于手機、電影、事件、游戲、顯卡等多種類別實體。
在實驗的過程中,上下文信息使用了在搜索引擎(百度)上的結果頁面,將召回的各條結果信息分條作為實體-屬性對的上下文。對于每組搜索關鍵字獲取的結果數量k設為10。
模型的訓練數據包括以下2 個部分:1)來自文獻[24]所提供的中文機器閱讀理解數據集;2)通過遠程監督方法從CN-DBpedia 和百度搜索引擎中得到的數據集。
4.2.1 實驗設置
為驗證本文所提出的候選屬性值抽取模塊(機器閱讀理解模型)的有效性,選擇了另外3 種模型作為基線。
1)序列標注模型OpenTag[13]
OpenTag 是最新的一種適用于開放域屬性值抽取的基于自注意力機制的序列標注模型,其在多個數據集上有著超過常用的BiLSTM 以及BiLSTMCRF 模型的效果。
2)機器閱讀理解模型QANET[14]
QANET 是由Google Brain 所提出的基于注意力機制的機器閱讀理解模型,它長期在機器閱讀理解的SQuAD 數據集的排行榜上位置靠前。
3)去除表示增強的MCKE?NA 模型
為驗證表示增強部分的效果,本文也引入了不包含表示增強部分,僅使用字符級表示作為輸入的MCKE 模型進行對比。
為評測模型本身的效果,在最終抽取結果的選定上,使用了一種簡單策略來計算最終的候選屬性值分數,類似于2.2 節所述,對有多個來源的候選屬性值,令其抽取分數為與之相同的所有候選屬性值的置信度之和。最后,選取分數最高的候選屬性值作為輸出,對于模型的輸出結果,其閾值設為β=0.1。
4.2.2 實驗結果與分析
表1 列出了各基線模型與本文MCKE 模型在兩組數據上通過執行上述簡單策略進行屬性值抽取的結果,并分別評測了抽取結果的準確率以及抽取結果PR 曲線(Precision-Recall 曲線)的曲線下面積(AUC)。

表1 屬性值抽取模型效果Table 1 Effect of attribute value extraction models
從表1 可以看出,本文的MCKE 模型在兩組數據中均在準確率和AUC 上超過了所選的對比基線。在實驗中發現,基于標注模型的OpenTag 方法的表現受限于訓練數據的結構,難以召回訓練數據中較為稀有的屬性所對應的屬性值,導致其召回率的下降。并且,由于OpenTag 僅返回標注結果,難以使用閾值對結果進行篩選,導致了其在準確率上表現偏低,對于QANET 和MCKE-NA 兩種機器閱讀理解模型,受限于它們本身對表示增強的缺乏,使得它們在稀有屬性中效果偏低,而MCKE-NA 由于缺乏詞級別的表示學習,導致其結果屬性值不完整的情況較多。
表2 列出了實驗中2 種機器閱讀理解模型得到的抽取結果。從表2 可以看出,對于顯卡相關的在知識庫中較為稀有的屬性,通過使用機器閱讀理解模型可以實現抽取,并且MCKE 模型的性能更強。同時,對于電影相關屬性,得益于MCKE 模型所采用的更優秀的輸入表示學習方法與表示增強方法,可以抽取出語義更加完整的屬性值結果。

表2 屬性值抽取模型結果實例Table 2 Result examples of attribute value extraction models
4.3.1 實驗設置
為驗證眾包驗證步驟的有效性,在本文實驗中,將每個通過MCKE 模型得到的候選屬性值及其相關上下文輸入到眾包驗證模塊,并邀請了5 位志愿者,每人隨機完成150 個眾包任務。對眾包結果進行統計后調整權重,得到最終的抽取結果。
4.3.2 眾包驗證分析結果
表3 列出了隨機進行750 個任務以及其中前200 個任務,在眾包驗證之后所實現的抽取效果。通過對總共750 個眾包任務的日志進行分析,發現本文眾包任務的平均響應時間為4.21 s。

表3 眾包驗證效果Table 3 Effect of crowdsourcing validation
實驗結果表明,在增加了眾包驗證的步驟后,在其他實驗設置相同的情況下,可以糾正MCKE 模型抽取結果中的錯誤,使得準確率大幅上升,并且可以發現,其中存在的一些由于模型缺乏訓練數據所導致的常識性錯誤結果以及其中出現了邊界錯誤的結果,可以被較快糾正,如表4 所示。

表4 眾包驗證結果實例Table 4 Result examples of crowdsourcing validation
另外,在進行分析的過程中發現,通過調整置信度閾值,本文方法在閾值β為0.4 的情況下抽取出屬性值的準確率為0.857。
本文針對日益增長的知識圖譜數據需求,提出一種基于機器閱讀理解以及眾包驗證的實體屬性值抽取方法。從互聯網獲取相關上下文,利用機器閱讀理解模型從相關上下文中獲取候選屬性值,通過眾包驗證從候選屬性值中找出最優的抽取結果。實驗結果表明,該框架能夠有效地從互聯網語料中抽取出實體屬性值,且提出的眾包任務能夠以較高的效率提升整體抽取效果。本文對于眾包結果的應用僅針對抽取模型的結果驗證,而從眾包結果中獲取的其他信息,也可成為模型增強訓練的重要反饋,對于該部分信息的應用將是下一步的研究重點。