知识图谱数据构建的“硬骨头”,阿里工程师如何拿下?
阿里妹導(dǎo)讀:搜索“西紅柿”,你不但能知道它的營養(yǎng)功效、熱量,還能順帶學(xué)會煲個牛腩、炒個雞蛋!搜索引擎何時變成“暖男”了?原來背后有“知識圖譜”這個強(qiáng)大的秘密武器。
作為近年來搜索領(lǐng)域和自然語言處理領(lǐng)域的熱點(diǎn),知識圖譜正引領(lǐng)著搜索引擎向知識引擎的轉(zhuǎn)變。在阿里的“神馬搜索”中,知識圖譜及其相關(guān)技術(shù)的廣泛應(yīng)用不僅能幫助用戶找到最想要的信息,更能讓用戶有意想不到的知識收獲。
背景簡介
為了不斷提升搜索體驗(yàn),神馬搜索的知識圖譜與應(yīng)用團(tuán)隊(duì),一直在不斷探索和完善圖譜的構(gòu)建技術(shù)。其中,開放信息抽取(Open Information Extraction),或稱通用信息抽取,旨在從大規(guī)模無結(jié)構(gòu)的自然語言文本中抽取結(jié)構(gòu)化信息。它是知識圖譜數(shù)據(jù)構(gòu)建的核心技術(shù)之一,決定了知識圖譜可持續(xù)擴(kuò)增的能力。
“神馬搜索”界面
本文聚焦于開放信息抽取中的重要子任務(wù)——關(guān)系抽取,首先對關(guān)系抽取的各種主流技術(shù)進(jìn)行概述,而后結(jié)合業(yè)務(wù)中的選擇與應(yīng)用,重點(diǎn)介紹了基于DeepDive的方法,并詳述它在神馬知識圖譜數(shù)據(jù)構(gòu)建工作中的應(yīng)用進(jìn)展。
關(guān)系抽取概述
關(guān)系抽取技術(shù)分類
現(xiàn)有的關(guān)系抽取技術(shù)主要可分為三種 :
有監(jiān)督的學(xué)習(xí)方法 :該方法將關(guān)系抽取任務(wù)當(dāng)做分類問題,根據(jù)訓(xùn)練數(shù)據(jù)設(shè)計(jì)有效的特征,從而學(xué)習(xí)各種分類模型,然后使用訓(xùn)練好的分類器預(yù)測關(guān)系。該方法的問題在于需要大量的人工標(biāo)注訓(xùn)練語料,而語料標(biāo)注工作通常非常耗時耗力。
半監(jiān)督的學(xué)習(xí)方法 :該方法主要采用Bootstrapping進(jìn)行關(guān)系抽取。對于要抽取的關(guān)系,該方法首先手工設(shè)定若干種子實(shí)例,然后迭代地從數(shù)據(jù)從抽取關(guān)系對應(yīng)的關(guān)系模板和更多的實(shí)例。
無監(jiān)督的學(xué)習(xí)方法 :該方法假設(shè)擁有相同語義關(guān)系的實(shí)體對擁有相似的上下文信息。因此可以利用每個實(shí)體對對應(yīng)上下文信息來代表該實(shí)體對的語義關(guān)系,并對所有實(shí)體對的語義關(guān)系進(jìn)行聚類。
這三種方法中,有監(jiān)督學(xué)習(xí)法因?yàn)槟軌虺槿〔⒂行Ю锰卣?#xff0c;在獲得高準(zhǔn)確率和高召回率方面更有優(yōu)勢,是目前業(yè)界應(yīng)用最廣泛的一類方法。
遠(yuǎn)程監(jiān)督算法
為了打破有監(jiān)督學(xué)習(xí)中人工數(shù)據(jù)標(biāo)注的局限性,Mintz等人提出了遠(yuǎn)程監(jiān)督(Distant Supervision)算法,該算法的核心思想是將文本與大規(guī)模知識圖譜進(jìn)行實(shí)體對齊,利用知識圖譜已有的實(shí)體間關(guān)系對文本進(jìn)行標(biāo)注。遠(yuǎn)程監(jiān)督基于的基本假設(shè)是:如果從知識圖譜中可獲取三元組R(E1,E2)(注:R代表關(guān)系,E1、E2代表兩個實(shí)體),且E1和E2共現(xiàn)與句子S中,則S表達(dá)了E1和E2間的關(guān)系R,標(biāo)注為訓(xùn)練正例。
遠(yuǎn)程監(jiān)督算法是目前主流的關(guān)系抽取系統(tǒng)廣泛采用的方法,也是該領(lǐng)域的研究熱點(diǎn)之一。該算法很好地解決了數(shù)據(jù)標(biāo)注的規(guī)模問題,但它基于的基本假設(shè)過強(qiáng),會引入大量噪音數(shù)據(jù)。例如,從知識圖譜獲取三元組:創(chuàng)始人(喬布斯,蘋果公司),下表句1和句2正確表達(dá)了該關(guān)系,但句3和句4并沒有表達(dá)這樣的關(guān)系,因此對句3和句4應(yīng)用基本假設(shè)時會得到錯誤的標(biāo)注信息。這個問題通常稱為 the wrong label problem。
出現(xiàn) the wrong label problem 的根本原因,是遠(yuǎn)程監(jiān)督假設(shè)一個實(shí)體對只對應(yīng)一種關(guān)系,但實(shí)際上實(shí)體對間可以同時具有多種關(guān)系,如上例中還存在CEO(喬布斯,蘋果公司)的關(guān)系,實(shí)體對間也可能不存在通常定義的某種關(guān)系,而僅因?yàn)楣餐婕傲四硞€話題才在句中共現(xiàn)。
為了減小 the wrong label problem 的影響,學(xué)術(shù)界陸續(xù)提出了多種改進(jìn)算法,主要包括:
基于規(guī)則的方法:通過對wrong label cases的統(tǒng)計(jì)分析,添加規(guī)則,將原本獲得正例標(biāo)注的wrong label cases直接標(biāo)為負(fù)例,或通過分值控制,抵消原有的正標(biāo)注。
基于圖模型的方法:構(gòu)建因子圖(factor graph)等能表征變量間關(guān)聯(lián)的圖模型,通過對特征的學(xué)習(xí)和對特征權(quán)重的推算減小wrong label cases對全局的影響。
基于多示例學(xué)習(xí)(multi-instance learning)的方法:將所有包含(E1,E2)的句子組成一個bag,從每個bag對句子進(jìn)行篩選來生成訓(xùn)練樣本。此類方法最早提出時假設(shè)如果知識圖譜中存在R(E1,E2),則語料中含(E1,E2)的所有instance中至少有一個表達(dá)了關(guān)系R。一般與無向圖模型結(jié)合,計(jì)算出每個包中置信度最高的樣例,標(biāo)為正向訓(xùn)練示例。該假設(shè)比遠(yuǎn)程監(jiān)督的假設(shè)合理,但可能損失很多訓(xùn)練樣本,造成有用信息的丟失和訓(xùn)練的不充分。為了能得到更豐富的訓(xùn)練樣本,又提出了multi-instance multi-labels的方法。該方法的假設(shè)是,同一個包中,一個sentence只能表示(E1,E2)的一種關(guān)系,也就是只能給出一個label,但是不同的sentence可以表征(E1,E2)的不同關(guān)系,從而得到不同的label。多l(xiāng)abel標(biāo)注的label值不是正或負(fù),而是某一種關(guān)系。它為同時挖掘一個實(shí)體對的多種關(guān)系提供了可能的實(shí)現(xiàn)途徑。另一種改進(jìn)的方法是從一個包中選取多個valid sentences作為訓(xùn)練集,一般與深度學(xué)習(xí)方法相結(jié)合,這種方法更詳細(xì)的講解和實(shí)現(xiàn)會安排在后續(xù)介紹深度學(xué)習(xí)模型的章節(jié)中。
神馬知識圖譜構(gòu)建中的關(guān)系抽取方法選擇
知識圖譜的數(shù)據(jù)構(gòu)建,就數(shù)據(jù)源而言,分為結(jié)構(gòu)化數(shù)據(jù),半結(jié)構(gòu)化數(shù)據(jù)和無結(jié)構(gòu)數(shù)據(jù)三類。其中,無結(jié)構(gòu)數(shù)據(jù)是最龐大、最易獲取的資源,同時也是在處理和利用方面難度最大的資源。神馬知識圖譜構(gòu)建至今,已經(jīng)發(fā)展為一個擁有近5000萬實(shí)體,近30億關(guān)系的大規(guī)模知識圖譜。在經(jīng)歷了前期以結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)為主的領(lǐng)域圖譜構(gòu)建階段,神馬知識圖譜的數(shù)據(jù)構(gòu)建重點(diǎn)已經(jīng)逐漸轉(zhuǎn)移為如何準(zhǔn)確高效地利用無結(jié)構(gòu)數(shù)據(jù)進(jìn)行實(shí)體與關(guān)系的自動識別與抽取。這一構(gòu)建策略使得神馬知識圖譜在通用領(lǐng)域的建設(shè)和可持續(xù)擴(kuò)增方面有很強(qiáng)的競爭力。
遠(yuǎn)程監(jiān)督算法利用知識圖譜的已有信息,使得有監(jiān)督學(xué)習(xí)中所需的大規(guī)模文本標(biāo)注成為可能。一方面,遠(yuǎn)程監(jiān)督在很大程度上提升了有監(jiān)督學(xué)習(xí)關(guān)系抽取的規(guī)模和準(zhǔn)確率,為大規(guī)模的知識圖譜數(shù)據(jù)構(gòu)建和補(bǔ)充提供了可能;另一方面,遠(yuǎn)程監(jiān)督對現(xiàn)有知識圖譜的數(shù)據(jù)和規(guī)模有較強(qiáng)的依賴,豐富的標(biāo)注數(shù)據(jù)對機(jī)器學(xué)習(xí)能力的提升有很大幫助。為了充分利用知識圖譜規(guī)模和遠(yuǎn)程監(jiān)督學(xué)習(xí)這種相輔相成的特性,在神馬知識圖譜的現(xiàn)階段數(shù)據(jù)構(gòu)建業(yè)務(wù)中,我們采用了以圖譜現(xiàn)有的大規(guī)模實(shí)體與關(guān)系數(shù)據(jù)為依托,以遠(yuǎn)程監(jiān)督算法為工具的關(guān)系抽取技術(shù)。
在上一章的綜述中,我們介紹過多種基于遠(yuǎn)程監(jiān)督思想的改進(jìn)方法。在具體的業(yè)務(wù)實(shí)現(xiàn)中,我們選取了領(lǐng)域內(nèi)與業(yè)務(wù)需求最為契合的兩種代表性方法:基于DeepDive的抽取系統(tǒng)和基于深度學(xué)習(xí)抽取算法。兩種方法相輔相成,各有優(yōu)勢:DeepDive系統(tǒng)較多依賴于自然語言處理工具和基于上下文的特征進(jìn)行抽取,在語料規(guī)模的選擇上更為靈活,能進(jìn)行有針對性的關(guān)系抽取,且能方便地在抽取過程中進(jìn)行人工檢驗(yàn)和干預(yù);而深度學(xué)習(xí)的方法主要應(yīng)用了詞向量和卷積神經(jīng)網(wǎng)絡(luò),在大規(guī)模語料處理和多關(guān)系抽取的人物中有明顯的優(yōu)勢。在下面的章節(jié)中,我們來更詳細(xì)地了解這兩種方法的實(shí)現(xiàn)與應(yīng)用。
DeepDive系統(tǒng)介紹
DeepDive概述
DeepDive (http://deepdive.stanford.edu/) 是斯坦福大學(xué)開發(fā)的信息抽取系統(tǒng),能處理文本、表格、圖表、圖片等多種格式的無結(jié)構(gòu)數(shù)據(jù),從中抽取結(jié)構(gòu)化的信息。系統(tǒng)集成了文件分析、信息提取、信息整合、概率預(yù)測等功能。Deepdive的主要應(yīng)用是特定領(lǐng)域的信息抽取,系統(tǒng)構(gòu)建至今,已在交通、考古、地理、醫(yī)療等多個領(lǐng)域的項(xiàng)目實(shí)踐中取得了良好的效果;在開放領(lǐng)域的應(yīng)用,如TAC-KBP競賽、維基百科的infobox信息自動增補(bǔ)等項(xiàng)目中也有不錯的表現(xiàn)。
DeepDive系統(tǒng)的基本輸入包括:
無結(jié)構(gòu)數(shù)據(jù),如自然語言文本
現(xiàn)有知識庫或知識圖譜中的相關(guān)知識
若干啟發(fā)式規(guī)則
DeepDive系統(tǒng)的基本輸出包括:
規(guī)定形式的結(jié)構(gòu)化知識,可以為關(guān)系(實(shí)體1,實(shí)體2)或者屬性(實(shí)體,屬性值)等形式
對每一條提取信息的概率預(yù)測
DeepDive系統(tǒng)運(yùn)行過程中還包括一個重要的迭代環(huán)節(jié),即每輪輸出生成后,用戶需要對運(yùn)行結(jié)果進(jìn)行錯誤分析,通過特征調(diào)整、更新知識庫信息、修改規(guī)則等手段干預(yù)系統(tǒng)的學(xué)習(xí),這樣的交互與迭代計(jì)算能使得系統(tǒng)的輸出不斷得到改進(jìn)。
DeepDive系統(tǒng)架構(gòu)和工作流程
DeepDive的系統(tǒng)架構(gòu)如下圖所示,大致分為數(shù)據(jù)處理、數(shù)據(jù)標(biāo)注、學(xué)習(xí)推理和交互迭代四個流程:
數(shù)據(jù)處理
1、 輸入與切分
在數(shù)據(jù)處理流程中,DeepDive首先接收用戶的輸入數(shù)據(jù),通常是自然語言文本,以句子為單位進(jìn)行切分。同時自動生成文本id和每個句子在文本中的index。doc_id + sentence_index 構(gòu)成了每個句子的全局唯一標(biāo)識。
2、 NLP標(biāo)注
對于每個切分好的句子,DeepDive會使用內(nèi)嵌的Stanford CoreNLP工具進(jìn)行自然語言處理和標(biāo)注,包括token切分,詞根還原、POS標(biāo)注、NER標(biāo)注、token在文本中的起始位置標(biāo)注、依存文法分析等。
3、 候選實(shí)體對提取
根據(jù)需要抽取的實(shí)體類型和NER結(jié)果,首先對實(shí)體mentions進(jìn)行定位和提取,而后根據(jù)一定的配對規(guī)則生成候選實(shí)體對。需要特別注意,在DeepDive中,每一個實(shí)體mention的標(biāo)定都是全局唯一的,由doc_id、sentence_index以及該mention在句子中的起始和結(jié)束位置共同標(biāo)識。因此,不同位置出現(xiàn)的同名的實(shí)體對(E1,E2)將擁有不同的(E1_id,E2_id),最終的預(yù)測結(jié)果也將不同。
4、 特征提取
該步驟的目的是將每一個候選實(shí)體對用一組特征表示出來,以便后續(xù)的機(jī)器學(xué)習(xí)模塊能夠?qū)W習(xí)到每個特征與所要預(yù)測關(guān)系的相關(guān)性。Deepdive內(nèi)含自動特征生成模塊DDlib,主要提取基于上下文的語義特征,例如兩個實(shí)體mention間的token sequence、NER tag sequence、實(shí)體前后的n-gram等。Deepdive也支持用戶自定義的特征提取算法。
數(shù)據(jù)標(biāo)注
在數(shù)據(jù)標(biāo)注階段,我們得到了候選實(shí)體對以及它們對應(yīng)的特征集合。在數(shù)據(jù)標(biāo)注階段,我們將運(yùn)用遠(yuǎn)程監(jiān)督算法和啟發(fā)式規(guī)則,對每個候選實(shí)體對進(jìn)行l(wèi)abel標(biāo)注,得到機(jī)器學(xué)習(xí)所需的正例和負(fù)例樣本。
1、 遠(yuǎn)程監(jiān)督
實(shí)現(xiàn)遠(yuǎn)程監(jiān)督標(biāo)注,首先需要從已知的知識庫或知識圖譜中獲取相關(guān)的三元組。以婚姻關(guān)系為例,DeepDive從DBpedia中獲取已有的夫妻實(shí)體對。若候選實(shí)體對能在已知的夫妻實(shí)體對中找到匹配映射時,該候選對標(biāo)記為正例。負(fù)例的標(biāo)注針對需要抽取的不同關(guān)系有不同的可選方法。例如可以將沒有在知識庫中出現(xiàn)的實(shí)體對標(biāo)注為負(fù)例,但在知識庫收入不完整的情況下該方法會引入噪音負(fù)例;也可以用知識庫中互斥關(guān)系下的實(shí)例來做負(fù)例標(biāo)注,例如父母-子女關(guān)系,兄弟姐妹關(guān)系,都與婚姻關(guān)系互斥,用于標(biāo)注負(fù)例基本不會引入噪音。
2、 啟發(fā)式規(guī)則
正負(fù)樣本的標(biāo)注還可以通過用戶編寫啟發(fā)式規(guī)則來實(shí)現(xiàn)。以抽取婚姻關(guān)系為例,可以定義如下規(guī)則:
Candidates with person mentions that are too far apart in the sentence are marked as false.
Candidates with person mentions that have another person in between are marked as false.
Candidates with person mentions that have words like “wife” or “husband” in between are marked as true.
用戶可以通過預(yù)留的user defined function接口,對啟發(fā)式規(guī)則進(jìn)行編寫和修改。
3、 Label沖突的解決
當(dāng)遠(yuǎn)程監(jiān)督生成和啟發(fā)式規(guī)則生成的label沖突,或不同規(guī)則生成的label產(chǎn)生沖突時,DeepDive采用majority vote算法進(jìn)行解決。例如,一個候選對在DBpedia中找到了映射,label為1,同時又滿足2中第2條規(guī)則,得到label 為-1,majority vote對所有l(wèi)abel求和:sum = 1 - 1 = 0,最終得到的label為doubt。
學(xué)習(xí)與推理
通過數(shù)據(jù)標(biāo)注得到訓(xùn)練集后,在學(xué)習(xí)與推理階段,Deepdive主要通過基于因子圖模型的推理,學(xué)習(xí)特征的權(quán)重,并最終得到對候選三元組為真的概率預(yù)測值。
因子圖是一種概率圖模型,用于表征變量和變量間的函數(shù)關(guān)系,借助因子圖可以進(jìn)行權(quán)重的學(xué)習(xí)和邊緣概率的推算。DeepDive系統(tǒng)中,因子圖的頂點(diǎn)有兩種,一種是隨機(jī)變量,即提取的候選實(shí)體對,另一種是隨機(jī)變量的函數(shù),即所有的特征和根據(jù)規(guī)則得到的函數(shù),比方兩個實(shí)體間的距離是否大于一定閾值等。因子圖的邊表示了實(shí)體對和特征及規(guī)則的關(guān)聯(lián)關(guān)系。
當(dāng)訓(xùn)練文本的規(guī)模很大,涉及的實(shí)體眾多時,生成的因子圖可能非常復(fù)雜龐大,DeepDive采用吉布斯采樣(Gibbs sampling)進(jìn)行來簡化基于圖的概率推算。在特征權(quán)重的學(xué)習(xí)中,采用標(biāo)準(zhǔn)的SGD過程,并根據(jù)吉布斯采樣的結(jié)果預(yù)測梯度值。為了使特征權(quán)重的獲得更靈活合理,除了系統(tǒng)默認(rèn)的推理過程,用戶還可以通過直接賦值來調(diào)整某個特征的權(quán)重。篇幅關(guān)系,更詳細(xì)的學(xué)習(xí)與推理過程本文不做展開介紹,更多的信息可參考DeepDive的官網(wǎng)。
交互迭代
迭代階段保證通過一定的人工干預(yù)對系統(tǒng)的錯誤進(jìn)行糾正,從而使得系統(tǒng)的準(zhǔn)召率不斷提升。交互迭代一般包括以下幾個步驟:
1、 準(zhǔn)召率的快速估算
準(zhǔn)確率:在P集中隨機(jī)挑選100個,看為TP的比例。
召回率:在輸入集中隨機(jī)挑選100個positive case,看有多少個落在計(jì)算出的P集中。
2、 錯誤分類與歸納
將得到的每個extraction failure(包括FP和FN)按錯誤原因進(jìn)行分類和歸納,并按錯誤發(fā)生的頻率進(jìn)行排序,一般而言,最主要錯誤原因包括:
在候選集生成階段沒有捕獲應(yīng)捕獲的實(shí)體,一般是token切分、token拼接或NER問題
特征獲取問題,沒能獲取到區(qū)分度高的特征
特征計(jì)算問題,區(qū)分度高的特征在訓(xùn)練中沒有獲得相應(yīng)的高分(包括正負(fù)高分)
3、 錯誤修正
根據(jù)錯誤原因,通過添加或修改規(guī)則、對特征進(jìn)行添加或刪除、對特征的權(quán)重進(jìn)行調(diào)整等行為,調(diào)整系統(tǒng),重新運(yùn)行修改后的相應(yīng)流程,得到新的計(jì)算結(jié)果。
神馬知識圖譜構(gòu)建中的DeepDive應(yīng)用與改進(jìn)
在了解了DeepDive的工作流程之后,本章將介紹我們?nèi)绾卧谏耨R知識圖譜的數(shù)據(jù)構(gòu)建業(yè)務(wù)中使用DeepDive。為了充分利用語料信息、提高系統(tǒng)運(yùn)行效率,我們在語料處理和標(biāo)注、輸入規(guī)模的控制、輸入質(zhì)量的提升等環(huán)節(jié),對DeepDive做了一些改進(jìn),并將這些改進(jìn)成功運(yùn)用到業(yè)務(wù)落地的過程中。
中文NLP標(biāo)注
NLP標(biāo)注是數(shù)據(jù)處理的一個重要環(huán)節(jié)。DeepDive自帶的Stanford CoreNLP工具主要是針對英文的處理,而在知識圖譜的應(yīng)用中,主要的處理需求是針對中文的。因此,我們開發(fā)了中文NLP標(biāo)注的外部流程來取代CoreNLP,主要變動如下:
使用Ali分詞代替CoreNLP的token切分,刪除詞根還原、POS標(biāo)注和依存文法分析,保留NER標(biāo)注和token在文本中的起始位置標(biāo)注。
token切分由以詞為單位,改為以實(shí)體為單位。在NER環(huán)節(jié),將Ali分詞切碎的token以實(shí)體為粒度重新組合。例如分詞結(jié)果“華盛頓”、“州立”、“大學(xué)”將被組合為“華盛頓州立大學(xué)”,并作為一個完整的實(shí)體獲得“University”的NER標(biāo)簽。
長句的切分:文本中的某些段落可能因?yàn)槿鄙僬_的標(biāo)點(diǎn)或包含眾多并列項(xiàng)等原因,出現(xiàn)切分后的句子長度超過一定閾值(如200個中文字符)的情況,使NER步驟耗時過長。這種情況將按預(yù)定義的一系列規(guī)則進(jìn)行重新切分。
主語自動增補(bǔ)
數(shù)據(jù)處理環(huán)節(jié)的另一個改進(jìn)是添加了主語自動補(bǔ)充的流程。以中文百科文本為例,統(tǒng)計(jì)發(fā)現(xiàn),有將近40%的句子缺少主語。如下圖劉德華的百科介紹,第二段中所有句子均缺少主語。
主語的缺失很多時候直接意味著候選實(shí)體對中其中一個實(shí)體的缺失,這將導(dǎo)致系統(tǒng)對大量含有有用信息的句子無法進(jìn)行學(xué)習(xí),嚴(yán)重影響系統(tǒng)的準(zhǔn)確率和召回率。主語的自動補(bǔ)充涉及兩方面的判斷:
主語缺失的判斷
缺失主語的添加
由于目前業(yè)務(wù)應(yīng)用中涉及的絕大多數(shù)是百科文本,缺失主語的添加采用了比較簡單的策略,即從當(dāng)前句的上一句提取主語,如果上一句也缺失主語,則將百科標(biāo)題的NER結(jié)果作為要添加的主語。主語缺失的判斷相對復(fù)雜,目前主要采用基于規(guī)則的方法。假設(shè)需要提取的候選對(E1, E2)對應(yīng)的實(shí)體類型為(T1, T2),則判定流程如下圖所示:
具體的主語補(bǔ)充實(shí)例和處理過程舉例如下:
以百科文本為例,經(jīng)實(shí)驗(yàn)統(tǒng)計(jì),上述主語自動補(bǔ)充算法的準(zhǔn)確率大約在92%。從關(guān)系抽取的結(jié)果來看,在所有的錯誤抽取case中,由主語增補(bǔ)導(dǎo)致的錯誤比例不超過2%。
基于關(guān)系相關(guān)關(guān)鍵詞的輸入過濾
DeepDive是一個機(jī)器學(xué)習(xí)系統(tǒng),輸入集的大小直接影響系統(tǒng)的運(yùn)行時間,尤其在耗時較長的特征計(jì)算和學(xué)習(xí)推理步驟。在保證系統(tǒng)召回率的前提下,合理減小輸入集規(guī)模能有效提升系統(tǒng)的運(yùn)行效率。
假設(shè)需要提取的三元組為R(E1, E2)且(E1, E2)對應(yīng)的實(shí)體類型為(T1, T2)。DeepDive的默認(rèn)運(yùn)行機(jī)制是:在數(shù)據(jù)處理階段,提取所有滿足類型為(T1,T2)的實(shí)體對作為候選,不考慮上下文是否有表達(dá)關(guān)系R的可能性。例如,抽取婚姻關(guān)系時,只要一個句子中出現(xiàn)大于等于兩個的人物實(shí)體,該句子就會作為輸入?yún)⑴c系統(tǒng)整個數(shù)據(jù)處理、標(biāo)注和學(xué)習(xí)的過程。以下五個例句中,除了句1,其它4句完全不涉及婚姻關(guān)系:
尤其當(dāng)句中的兩個人物實(shí)體無法通過遠(yuǎn)程監(jiān)督獲取正例或負(fù)例標(biāo)簽時,此類輸入無法在學(xué)習(xí)環(huán)節(jié)為系統(tǒng)的準(zhǔn)確率帶來增益。為減小此類輸入帶來的系統(tǒng)運(yùn)行時間損耗,我們提出了以下改進(jìn)算法:
實(shí)驗(yàn)證明,利用改進(jìn)算法得到的輸入集規(guī)模有顯著的減小,以百科文本的抽取為例,婚姻關(guān)系的輸入集可縮小至原輸入集的13%,人物和畢業(yè)院校關(guān)系的輸入集可縮小至原輸入集的36%。輸入集的縮小能顯著減少系統(tǒng)運(yùn)行時間,且實(shí)驗(yàn)證明,排除了大量doubt標(biāo)注實(shí)體候選對的干擾,系統(tǒng)的準(zhǔn)確率也有較大幅度的提升。
需要指出的是,雖然在輸入環(huán)節(jié)通過關(guān)系相關(guān)關(guān)鍵詞進(jìn)行過濾減小輸入規(guī)模,能最有效地提高系統(tǒng)運(yùn)行效率(因?yàn)樘^了包含特征提取在內(nèi)的所有后續(xù)計(jì)算步驟),但該環(huán)節(jié)的過濾是以句子為單位,而非作用于抽取的候選實(shí)體對。來看一個婚姻關(guān)系提取的多人物示例:
除了孫楠、那英等表演嘉賓盛裝出席外,擔(dān)任本場音樂會監(jiān)制的華誼兄弟總裁王中磊先生、馮小剛導(dǎo)演和夫人徐帆,以及葛優(yōu)、宋丹丹、李冰冰等演藝明星也一一現(xiàn)身紅毯,到場支持此次音樂會。
因?yàn)楹谢橐鲫P(guān)系相關(guān)的關(guān)鍵詞“夫人”,該句子將被保留為系統(tǒng)輸入。從該句提取的多個人物候選實(shí)體對需要依靠更完善的啟發(fā)式規(guī)則來完成進(jìn)一步的標(biāo)注和過濾。
實(shí)體對到多實(shí)體的擴(kuò)展
關(guān)系抽取的絕大部分任務(wù)僅涉及三元組的抽取。三元組一般有兩種形式,一種是兩個實(shí)體具有某種關(guān)系,形如R(E1, E2),例如:婚姻關(guān)系(劉德華,朱麗倩);另一種是實(shí)體的屬性值,形如P(E,V),例如:身高(劉德華,1.74米)。DeepDive默認(rèn)的關(guān)系抽取模式都是基于三元組的。但在實(shí)際應(yīng)用中,有很多復(fù)雜的關(guān)系用三元組難以完整表達(dá),例如,人物的教育經(jīng)歷,包括人物、人物的畢業(yè)院校、所學(xué)專業(yè)、取得學(xué)位、畢業(yè)時間等。這些復(fù)雜的多實(shí)體關(guān)系在神馬知識圖譜中用復(fù)合類型來表示。因此,為使抽取任務(wù)能兼容復(fù)合類型的構(gòu)建時,我們對DeepDive的代碼做了一些修改,將候選實(shí)體對的提取,擴(kuò)展為候選實(shí)體組的提取。代碼修改涉及主抽取模塊中的app.ddlog、底層用于特征自動生成的DDlib和udf中的map_entity_mention.py、extract_relation_features.py等文件。下圖展示了一個擴(kuò)展后的實(shí)體組抽取實(shí)例,抽取關(guān)系為(人物、所在機(jī)構(gòu)、職位):
應(yīng)用DeepDive的數(shù)據(jù)構(gòu)建工作
本節(jié)首先給出一個輸入示例以及該示例在DeepDive運(yùn)行過程中每一步的輸出結(jié)果,如下圖所示。通過這個示例,我們可以對DeepDive各模塊的功能和輸出有更直觀的認(rèn)識。
為了更詳細(xì)地了解DeepDive的應(yīng)用和改進(jìn)算法的效果,以下我們給出一個具體的婚姻關(guān)系抽取任務(wù)的相關(guān)運(yùn)行數(shù)據(jù)。
下表顯示了該抽取任務(wù)在數(shù)據(jù)處理階段各步驟的的耗時和產(chǎn)出數(shù)量:
在數(shù)據(jù)標(biāo)注的遠(yuǎn)程監(jiān)督階段,我們除了使用知識圖譜中已有的夫妻關(guān)系做正例標(biāo)注,還使用了已有的父母-子女關(guān)系和兄弟姐妹關(guān)系做負(fù)例標(biāo)注,得到正例數(shù)千個,正負(fù)標(biāo)注候選實(shí)體的比例約為1:2。
在DeepDive系統(tǒng)中,遠(yuǎn)程監(jiān)督的wrong label problem可以依靠合理編寫的啟發(fā)式規(guī)則得到一定程度的糾正。觀察婚姻關(guān)系的wrong label樣例,我們發(fā)現(xiàn)較大比例的wrong label是夫妻實(shí)體以某種合作形式(如合作演出、合作演唱、合作著書等)共現(xiàn)在一個句子中,夫妻實(shí)體有一個出現(xiàn)在書名號中時,也容易發(fā)生誤判。例如:
類似的觀察和總結(jié)可以編寫成啟發(fā)式規(guī)則,依靠從規(guī)則得到的負(fù)標(biāo)注抵償遠(yuǎn)程監(jiān)督得到的正標(biāo)注,減小系統(tǒng)在學(xué)習(xí)和推理時的偏差。
雖然啟發(fā)式規(guī)則的編寫大多依靠專家知識或人工經(jīng)驗(yàn)完成,但規(guī)則的完善和擴(kuò)充可以依靠某些自動機(jī)制來輔助實(shí)現(xiàn)。例如,規(guī)則定義:句中出現(xiàn)“P_1和P_2結(jié)婚”,則(P_1,P_2)得到正標(biāo)注。根據(jù)對“和”和“結(jié)婚”等token的擴(kuò)展,我們可以得到“P_1與P_2結(jié)婚”、“P_1和P2婚后”、“P_1和P_2的婚禮”等類似應(yīng)該標(biāo)注為正的語境。這里,token的擴(kuò)展可以通過word2vec算法加人工過濾實(shí)現(xiàn)。下表給出了該抽取任務(wù)中用到的規(guī)則和相應(yīng)的統(tǒng)計(jì)數(shù)據(jù)。整個數(shù)據(jù)標(biāo)注過程耗為14m21s。
學(xué)習(xí)與推理過程耗時約38m50s。我們隨機(jī)截取了部分知識圖譜未收錄的預(yù)測實(shí)體對的輸出結(jié)果展示如下:
對于系統(tǒng)的準(zhǔn)確率,我們?nèi)xpectation為 [0.95,1][0.95,1] 區(qū)間內(nèi)的輸出結(jié)果進(jìn)行分段統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果如下列圖表所示:
對系統(tǒng)預(yù)測的錯誤樣例進(jìn)行分析,我們總結(jié)了幾種錯誤類型,下表按照出現(xiàn)頻率從高到低,給出了錯誤描述和錯誤示例:
系統(tǒng)召回率的計(jì)算相比準(zhǔn)確率的計(jì)算更為復(fù)雜,在語料規(guī)模較大的情況下,準(zhǔn)確估算召回率將耗費(fèi)大量的人力。我們采用了抽樣檢測的方式來估算召回率,具體實(shí)踐了以下三種方法(統(tǒng)計(jì)中expectation均取>=0.95):
抽樣含有某個指定實(shí)體的所有sentences,計(jì)算召回:含實(shí)體 “楊冪” 的sentences共78例,含 (楊冪, 劉愷威)實(shí)體對的sentences共13例,人工判斷其中9例描述了該實(shí)體對的婚姻關(guān)系,其中5例被召回,召回率為0.556。
用于遠(yuǎn)程監(jiān)督正例標(biāo)注的知識圖譜實(shí)體對超過4000對,統(tǒng)計(jì)表明,其中42.7%的實(shí)體對出現(xiàn)在了語料中,26.5%的實(shí)體對被召回,召回率為0.621。
輸入集隨機(jī)挑選100例positive cases,其中49例的expectation值>=0.95, 召回率為0.49。
基于DeepDive的關(guān)系抽取研究目前已較為完整,并已經(jīng)在神馬知識圖譜的構(gòu)建業(yè)務(wù)中落地。目前在數(shù)據(jù)構(gòu)建中的應(yīng)用涉及人物、歷史、組織機(jī)構(gòu)、圖書、影視等多個核心領(lǐng)域,已抽取關(guān)系包括人物的父母、子女、兄弟姐妹、婚姻、歷史事件及人物的合稱、圖書的作者、影視作品的導(dǎo)演和演員、人物的畢業(yè)院校和就業(yè)單位等。以百科全量語料為例,每個關(guān)系抽取任務(wù)候選sentence集合的規(guī)模在80w至1000w,經(jīng)改進(jìn)算法過濾,輸入規(guī)模在15w至200w之間,生成的候選實(shí)體對規(guī)模在30w至500w之間。系統(tǒng)每輪迭代運(yùn)行的時間在1小時至8小時之間,約經(jīng)過3-4輪迭代可產(chǎn)出準(zhǔn)確率和召回率都較高的數(shù)據(jù)給運(yùn)營審核環(huán)節(jié)。系統(tǒng)運(yùn)行至今,已累計(jì)產(chǎn)出候選三元組近3千萬。
除此之外,基于深度學(xué)習(xí)模型的關(guān)系抽取技術(shù)及其在神馬知識圖譜數(shù)據(jù)構(gòu)建中的應(yīng)用,我們也在不斷探索和實(shí)踐。明天,阿里妹將繼續(xù)為大家介紹相關(guān)的技術(shù)進(jìn)展和業(yè)務(wù)落地過程中遇到的一些挑戰(zhàn),敬請關(guān)注哦。
參考文獻(xiàn)
[1]. 林衍凱、劉知遠(yuǎn),基于深度學(xué)習(xí)的關(guān)系抽取
[2]. Daojian Zeng, Kang Liu, Yubo Chen, and Jun Zhao. 2015. Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks. In EMNLP. 1753–1762.
[3]. Guoliang Ji, Kang Liu, Shizhu He, Jun Zhao. 2017. Distant Supervision for Relation Extraction with Sentence-Level Attention and Entity Descriptions. Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence
[4]. Siliang Tang, Jinjian Zhang, Ning Zhang, Fei Wu, Jun Xiao, Yueting Zhuang. 2017. ENCORE: External Neural Constraints Regularized Distant Supervision for Relation Extraction. SIGIR’17
[5]. Zeng, D.; Liu, K.; Chen, Y.; and Zhao, J. 2015. Distant supervision for relation extraction via piecewise convolutional neural networks. EMNLP.
[6]. Riedel, S.; Yao, L.; and McCallum, A. 2010. Modeling relations and their mentions without labeled text. In Machine Learning and Knowledge Discovery in Databases. Springer. 148–163.
[7]. Ce Zhang. 2015. DeepDive: A Data Management System for Automatic Knowledge Base Construction. PhD thesis.
[8]. Hoffmann, R.; Zhang, C.; Ling, X.; Zettlemoyer, L.; and Weld, D. S. 2011. Knowledge-based weak supervision for information extraction of overlapping relations. In Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies-Volume 1, 541–550. Association for Computational Linguistics.
[9]. Surdeanu, M.; Tibshirani, J.; Nallapati, R.; and Manning, C. D. 2012. Multi-instance multi-label learning for relation extraction. In Proceedings of the 2012 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning, 455–465. Association for Computational Linguistics.
[10]. Shingo Takamatsu, Issei Sato and Hiroshi Nakagawa. 2012. Reducing Wrong Labels in Distant Supervision for Relation Extraction. Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics, pages 721–729
[11]. Zeng, D.; Liu, K.; Lai, S.; Zhou, G.; Zhao, J.; et al. 2014. Relation classification via convolutional deep neural network. In COLING, 2335–2344.
[12]. Ce zhang, Cheistopher Re; et al. 2017. Communications of the ACM CACM Homepage archive
Volume 60 Issue 5, Pages 93-102
[13]. Mintz, M.; Bills, S.; Snow, R.; and Jurafsky, D. 2009. Distant supervision for relation extraction without labeled data. In Proceedings of the Joint Conference of the 47th Annual Meeting of the ACL and the 4th International Joint Conference on Natural Language Processing of the AFNLP: Volume 2, 1003–1011. Association for Computational Linguistics.
[14]. http://deepdive.stanford.edu/
總結(jié)
以上是生活随笔為你收集整理的知识图谱数据构建的“硬骨头”,阿里工程师如何拿下?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十年前,他如何自学技术进阿里?
- 下一篇: AI时代的神马搜索!神马智能对话技术深度