李文浩,劉文長(zhǎng),孫茂松,5,矣曉沅
(1. 清華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,北京 100084;2. 清華大學(xué) 人工智能研究院,北京 100084;3. 北京信息科學(xué)與技術(shù)國(guó)家研究中心,北京 100084;4. 加州大學(xué)戴維斯分校 計(jì)算機(jī)科學(xué)系,加利福尼亞州 95616;5. 江蘇高校語(yǔ)言能力協(xié)同創(chuàng)新中心,江蘇 徐州 221009;6. 微軟亞洲研究院,北京 100080)
維基百科、百度百科等成系統(tǒng)的知識(shí)庫(kù),蘊(yùn)含著群體智能所整理的豐富的信息,廣大學(xué)界學(xué)者也對(duì)其進(jìn)行了挖掘。近年來(lái)學(xué)界整理的中文知識(shí)圖譜,如zhishi.me[1],XLORE[2]與CN-DBPedia[3]等,均是以維基百科、百度百科、互動(dòng)百科等為知識(shí)源進(jìn)行整理的。這些知識(shí)圖譜均是根據(jù)維基百科的實(shí)體名片(Infobox)信息和分類體系(Category)信息整理得到。因?yàn)檫@兩部分信息具有定義明確的關(guān)系名稱和術(shù)語(yǔ)體系,更便于抽取結(jié)構(gòu)化的三元組。
但維基百科中同樣具有數(shù)量龐大的內(nèi)部鏈接(以下簡(jiǎn)稱“鏈接”)信息,如圖1中,關(guān)羽就與劉備、曹操等相關(guān)人物,《三國(guó)演義》等作品,以及“五虎上將”等稱號(hào)相鏈接,但這些都是關(guān)羽的Infobox中不具有的和關(guān)羽相關(guān)的重要關(guān)聯(lián)性信息。并且,我們進(jìn)一步發(fā)現(xiàn),在關(guān)羽詞條的定義文本中,該鏈接實(shí)體出現(xiàn)的頻度也可以作為此鏈接重要程度的合理度量。舉例來(lái)說(shuō),關(guān)羽詞條文本中出現(xiàn)“劉備”的次數(shù),比出現(xiàn)“禿發(fā)傉檀”(十六國(guó)一君主,曾對(duì)關(guān)羽做出評(píng)價(jià),故有鏈接)的頻度更多,而其與劉備的關(guān)系也與禿發(fā)傉檀更強(qiáng)。故而,我們利用這一基本思想,利用文本處理中常見(jiàn)的TF-IDF指標(biāo)對(duì)這種邊權(quán)強(qiáng)弱進(jìn)行了度量,并將邊權(quán)歸一化得到了轉(zhuǎn)移概率,構(gòu)造了概率關(guān)聯(lián)式知識(shí)圖譜。
但這種鏈接亦存在一個(gè)問(wèn)題,即其中可能有偶發(fā)提及,如關(guān)羽詞條中提及了優(yōu)酷、朱子語(yǔ)類等,但關(guān)羽與其的關(guān)聯(lián)明顯較弱。為了解決此問(wèn)題,我們?cè)O(shè)計(jì)了一個(gè)基于圖表示學(xué)習(xí)等特征的可信鏈接篩選機(jī)制,對(duì)此類鏈接進(jìn)行了去除。最終構(gòu)造出了一個(gè)概率式關(guān)聯(lián)可信中文知識(shí)圖譜,我們將其命名為“文脈”。
故而,本文的貢獻(xiàn)點(diǎn)如下:
(1) 利用維基百科的內(nèi)部鏈接構(gòu)造邊,并統(tǒng)計(jì)目標(biāo)實(shí)體在源實(shí)體定義文本中出現(xiàn)的頻度,利用其對(duì)應(yīng)的TF-IDF值作為邊權(quán),構(gòu)造了一個(gè)概率式中文知識(shí)圖譜。這種概率式中文知識(shí)圖譜的構(gòu)建方法當(dāng)屬首例;
(2) 提出了一種基于圖表示學(xué)習(xí)等特征的可信鏈接篩選機(jī)制,對(duì)偶發(fā)鏈接進(jìn)行了去除,使知識(shí)圖譜更加可信;
(3) 將得到的知識(shí)圖譜“文脈”在GitHub上進(jìn)行了開(kāi)源,并制作了展示界面。
本文的第1節(jié)介紹中文知識(shí)圖譜資源的相關(guān)工作。第2節(jié)介紹如何預(yù)處理維基百科的數(shù)據(jù)及如何從中構(gòu)建邊和得到邊的權(quán)值,包括實(shí)體整理、頻度計(jì)算與邊權(quán)指標(biāo)選取。第3節(jié)介紹可信鏈接篩選的相關(guān)方法。第4節(jié)介紹數(shù)據(jù)統(tǒng)計(jì)信息與開(kāi)源地址。第5節(jié)為總結(jié)。
圖1 維基百科的詞條頁(yè)面示例正文中深色的為鏈接信息,頁(yè)面右方為實(shí)體名片信息
現(xiàn)有的有論文支撐的中文通用知識(shí)圖譜開(kāi)放資源,大多數(shù)都是以維基百科、互動(dòng)百科和百度百科作為知識(shí)來(lái)源,尤其將其中的Infobox信息和Category信息作為信息提取的來(lái)源,而特殊地,zhishi.me[1]還運(yùn)用了外部鏈接等信息。CASIA[4]利用了其他的非結(jié)構(gòu)化文本信息,即利用新浪微博和搜狗新聞的文本信息,利用模板的方式抽取出一些特定關(guān)系的三元組。 XLORE[2]和 XLORE 2[5]進(jìn)行了跨語(yǔ)言的實(shí)體對(duì)齊,并利用英文維基百科中的信息對(duì)中文百科進(jìn)行了補(bǔ)充。而CN-DBPedia[3]和CN-DBPedia 2[6]則是利用了神經(jīng)網(wǎng)絡(luò)對(duì)實(shí)體的屬性和類別進(jìn)行了補(bǔ)全,并利用神經(jīng)網(wǎng)絡(luò)和人工標(biāo)注的方式進(jìn)行了錯(cuò)誤修正。
但是,正如引言所述,其所有知識(shí)圖譜都以三元組的形式出現(xiàn),其邊均無(wú)邊權(quán)或概率轉(zhuǎn)移的信息,這正是本文工作的創(chuàng)新點(diǎn)所在。
因?yàn)楸疚闹饕M(jìn)行中文知識(shí)圖譜的構(gòu)建,故而我們只希望保留中文實(shí)體有關(guān)信息,因此,我們對(duì)維基百科原有的條目通過(guò)以下幾個(gè)步驟進(jìn)行了整理:
(1)繁簡(jiǎn)轉(zhuǎn)換: 將繁體的條目與描述文本均轉(zhuǎn)換為簡(jiǎn)體。
(2)非中文條目去除: 對(duì)于條目名稱中完全不含中文字符的條目進(jìn)行去除。
(3)消歧義條目去除: 對(duì)于維基百科的消歧義條目(即帶有“(消歧義)”后綴的條目,為維基百科中的一種特殊的功能性條目,不指向?qū)嶋H實(shí)體)去除。
(4)功能性條目去除: 按照維基百科官方所給信息,對(duì)功能性條目(即起到構(gòu)建維基百科體系功能而非描述現(xiàn)實(shí)實(shí)體的條目,例如類別(Category)條目,討論(Talk)條目,用戶(User)條目等)進(jìn)行去除。
(5)重定向合并: 我們對(duì)維基百科中帶有重定向關(guān)系的條目(重定向指維基百科會(huì)自動(dòng)將對(duì)某個(gè)條目的查詢發(fā)送到另一個(gè)條目,如“關(guān)圣帝君”“關(guān)云長(zhǎng)”“漢壽亭侯”等均會(huì)重定向到“關(guān)羽”)進(jìn)行了合并。
由此,我們得到了所構(gòu)建的知識(shí)圖譜中的實(shí)體列表,用于下一步的抽取。
在得到實(shí)體列表后,我們利用維基百科條目文章中對(duì)其他條目的內(nèi)部鏈接構(gòu)造有向邊,得到鏈接圖。根據(jù)此鏈接圖統(tǒng)計(jì)每條內(nèi)部鏈接所對(duì)應(yīng)的邊中,尾實(shí)體(該邊的終點(diǎn))在頭實(shí)體(該邊的起點(diǎn))所對(duì)應(yīng)條目文章中提及次數(shù),以進(jìn)一步得到該邊的邊權(quán)。在這一步統(tǒng)計(jì)中,我們做了如下詳細(xì)考量:
(1) 對(duì)于有多個(gè)重定向名的實(shí)體,分開(kāi)統(tǒng)計(jì)其每個(gè)重定向名的出現(xiàn)頻度并將這些頻度之和作為該實(shí)體在此條目文章中出現(xiàn)的總頻度。
(2) 對(duì)于實(shí)體名中帶有說(shuō)明的實(shí)體[如“建安(東漢)”],利用其去掉說(shuō)明的部分(此例中“建安”),進(jìn)行統(tǒng)計(jì)。因?yàn)樵谡闹?,此?shí)體往往以去掉說(shuō)明的形式(此例中“建安”)而非帶說(shuō)明的形式(此例中“建安(東漢)”)進(jìn)行提及,故而我們以前者作為匹配的依據(jù)。
(3) 對(duì)于任一維基百科條目文章,只統(tǒng)計(jì)正文,而不統(tǒng)計(jì)參考資料、外部鏈接、擴(kuò)展閱讀、注釋等信息。
(4) 因?yàn)榫S基百科條目文章在前文提到一實(shí)體,對(duì)其加上內(nèi)部鏈接之后,往往在下文再次提及時(shí)不加內(nèi)部鏈接,故而我們統(tǒng)計(jì)時(shí)對(duì)所有加內(nèi)部鏈接和不加內(nèi)部鏈接的提及,都計(jì)入統(tǒng)計(jì)。但特殊地,對(duì)于單字實(shí)體,這種方法可能會(huì)造成較多錯(cuò)誤統(tǒng)計(jì),故對(duì)于單字實(shí)體只統(tǒng)計(jì)其加內(nèi)部鏈接的部分。同時(shí),若一源實(shí)體鏈接了多個(gè)去掉說(shuō)明后重名的實(shí)體(例如“劉備”存在鏈接到“三國(guó)志”“三國(guó)志(動(dòng)畫(huà)電影)”與“三國(guó)志(漫畫(huà))”),則不加鏈接的提及,只計(jì)入不帶說(shuō)明的實(shí)體(此例中“三國(guó)志”)的統(tǒng)計(jì)。若不存在不帶說(shuō)明的實(shí)體,則不加鏈接的提及不計(jì)入任何實(shí)體的統(tǒng)計(jì)。
(5) 若一實(shí)體名為另一實(shí)體名的子串,則在父串出現(xiàn)處,子串出現(xiàn)不計(jì)入統(tǒng)計(jì)。
通過(guò)以上統(tǒng)計(jì)方式,我們得到了鏈接圖中每條邊所對(duì)應(yīng)的出現(xiàn)頻度,即尾實(shí)體在頭實(shí)體條目文章中對(duì)應(yīng)的詞頻(Term Frequency,TF)。我們同時(shí)還可以得到每一實(shí)體在多少條目文章中出現(xiàn)過(guò),作為其文檔頻率(Document Frequency,DF),我們利用這兩個(gè)指標(biāo),計(jì)算出TF-IDF(Term Frequency-Inverse Document Frequency)作為邊權(quán),再對(duì)每個(gè)實(shí)體圖譜中對(duì)應(yīng)的出邊進(jìn)行歸一化,得到每條邊的轉(zhuǎn)移概率。而我們選擇TF-IDF而非簡(jiǎn)單的詞頻作為邊權(quán)的衡量指標(biāo)的原因,是因?yàn)槠淠芨玫刈R(shí)別出鏈接的獨(dú)特性,使得到的邊權(quán)值及排名與客觀事實(shí)更加接近。
例如,表1為實(shí)體“琵琶”所鏈接實(shí)體中邊權(quán)值排名最高的六個(gè)實(shí)體及其邊權(quán)。可以看出,如果單純對(duì)TF進(jìn)行排名,“唐朝”“中國(guó)”等實(shí)體都是高于“撥弦樂(lè)器”的。但是“撥弦樂(lè)器”與“琵琶”的關(guān)系顯然更具有獨(dú)特性,關(guān)系更強(qiáng)。而利用TF-IDF進(jìn)行排名就能更好地捕捉到這種獨(dú)特性。
表1 邊權(quán)指標(biāo)對(duì)比
正如引言中所述,維基百科的有些鏈接為不可信偶發(fā)提及,故而我們需要將其從知識(shí)圖譜中去除。故而我們利用一些指標(biāo)對(duì)鏈接是否可信進(jìn)行了衡量:
詞頻指標(biāo)經(jīng)過(guò)對(duì)大量例子的觀察我們發(fā)現(xiàn),上文提到的弱鏈接,往往是詞條只在文章中偶爾提到一次或兩次。如果在某一詞條維基百科正文文本中該詞條被提到三次或以上,則證明這一種提及并非偶然提及,而是暗示了這兩個(gè)詞條之間的較強(qiáng)關(guān)系。故而,我們所取的第一個(gè)指標(biāo),就是對(duì)所帶詞頻屬性大于或等于3的鏈接全部進(jìn)行保留。
雙向指標(biāo)我們還對(duì)兩個(gè)實(shí)體鏈接的雙向性進(jìn)行了觀察。在我們的觀察中發(fā)現(xiàn),如果兩個(gè)實(shí)體互相有連接,即有雙向連接而非單向連接,說(shuō)明兩個(gè)實(shí)體的連接也是穩(wěn)定的,這也與我們的直覺(jué)符合。
TF-IDF增加比例指標(biāo)對(duì)某些對(duì)應(yīng)文章較短的實(shí)體,因?yàn)槠淇傮w鏈接較少,故而其詞頻較低的鏈接很多也是強(qiáng)相關(guān)的,對(duì)這些鏈接我們也應(yīng)該予以保留。經(jīng)過(guò)對(duì)多個(gè)指標(biāo)的觀察,我們確定了TF-IDF增加比例這個(gè)指標(biāo),并也將其作為保留的依據(jù)之一。其計(jì)算方式為,先把一個(gè)實(shí)體鏈接指向的實(shí)體按照第2節(jié)所計(jì)算出的TF-IDF值進(jìn)行排序,然后按照式(1)計(jì)算出每個(gè)鏈接所對(duì)應(yīng)的增加比例。之所以選取這個(gè)指標(biāo)而沒(méi)有簡(jiǎn)單地保留定量的實(shí)體,是因?yàn)檫@個(gè)指標(biāo)能更好地在關(guān)聯(lián)鏈接數(shù)目不同的實(shí)體之間動(dòng)態(tài)保留不同數(shù)目的鏈接。經(jīng)過(guò)對(duì)大量例子的觀察,我們對(duì)增加比例在0.005以上的實(shí)體進(jìn)行了保留,如式(1)所示。
(1)
鏈接圖表示指標(biāo)以上指標(biāo)主要是利用每條邊本身的信息對(duì)是否保留進(jìn)行判斷。除此之外,我們還想利用鏈接圖的整體特征,即利用每條邊鄰域的拓?fù)涮卣?,?duì)這條邊的強(qiáng)弱進(jìn)行判別。這就需要用到圖表示學(xué)習(xí)的方法,對(duì)每個(gè)節(jié)點(diǎn)到每條邊的特征進(jìn)行建模。在這里,我們主要使用了兩種圖表示學(xué)習(xí)方法,TransR[7]與PTransE[8],前者將不同關(guān)系建模為不同空間,加強(qiáng)了模型針對(duì)不同關(guān)系的特異性;后者對(duì)關(guān)系的多跳路徑進(jìn)行建模,考慮了關(guān)系的復(fù)合。但要訓(xùn)練這兩個(gè)模型,則必須有每條邊上的關(guān)系,因?yàn)門(mén)F-IDF過(guò)于連續(xù),不好進(jìn)行劃分,故而我們利用每條邊對(duì)應(yīng)的TF值對(duì)關(guān)系作了劃分,也是基于上文所提到的“詞頻大于或等于3基本都不是偶然提及”這一思想,具體算法如下所示。
表2 兩種知識(shí)表示學(xué)習(xí)方法“關(guān)羽”詞條結(jié)果比較
續(xù)表
(1) 若TF=1,將關(guān)系標(biāo)注為“存疑(Q)”。
(2) 若TF=2,將關(guān)系標(biāo)注為“弱(W)”。
(3) 將每個(gè)實(shí)體的每條出邊按照TF從大到小排序,若其20%分位數(shù)對(duì)應(yīng)邊的TF大于或等于3,則將前20%的鏈接關(guān)系全部標(biāo)注為“極強(qiáng)(VS)”。
(4) 將其余的關(guān)系標(biāo)注為“強(qiáng)(S)”。
下一步,我們即利用這些劃分好關(guān)系的三元組訓(xùn)練得到了TransR 和 PTransE兩個(gè)圖表征模型。在推斷時(shí),我們對(duì)每條邊枚舉四種關(guān)系并將關(guān)系三元組輸入模型中,得到模型的損失函數(shù)值作為每條邊的強(qiáng)度分?jǐn)?shù)。對(duì)詞頻為1的鏈接,我們選取了極強(qiáng)關(guān)系或強(qiáng)關(guān)系損失函數(shù)排名在所有相連實(shí)體的25%以內(nèi)的邊予以保留;對(duì)詞頻為2的鏈接,選取了極強(qiáng)關(guān)系或強(qiáng)關(guān)系損失函數(shù)排名在所有相連實(shí)體的30%以內(nèi)的邊予以保留。在指標(biāo)選取時(shí),我們對(duì)TransR和PTransE兩種方法得到的結(jié)果進(jìn)行了對(duì)比,“關(guān)羽”詞條的部分結(jié)果比較如表2所示。其中,劉表為關(guān)羽一時(shí)之主,龐統(tǒng)為其同殿之臣,均與其高度相關(guān),兩種表示學(xué)習(xí)方法也一致同意將其保留。而“東京夢(mèng)華錄”“晉出帝”“李德?!迸c其不太相關(guān),兩種表示學(xué)習(xí)方法也一致同意將其刪去。在有分歧的幾個(gè)詞條中,關(guān)羽為章回小說(shuō)《三國(guó)演義》中主要人物,其正史《三國(guó)志》注為裴松之作,而章武為劉備之年號(hào),此關(guān)彝為關(guān)羽之孫,劉封為劉備之繼子,兩種方法的保留都有一定的合理性。故而,我們選擇將兩種方法均作為其為我們此處知識(shí)表示學(xué)習(xí)的方法,即對(duì)兩種方法保留的實(shí)體取并集,作為這一部分最終保留的實(shí)體。
若以上四條指標(biāo)滿足一條,則將此條鏈接保留,如果均不滿足,則去除。經(jīng)過(guò)這一方法的篩選,我們就得到了的最終結(jié)果——概率式關(guān)聯(lián)可信中文知識(shí)圖譜“文脈”。這種篩選方式針對(duì)“關(guān)羽”詞條的部分篩選結(jié)果如表3所示。從結(jié)果可以看到,基于這四個(gè)指標(biāo)的可信鏈接篩選機(jī)制,可以較好地保留可信鏈接并刪除不可信鏈接。在本例中,“朱子語(yǔ)類”“南齊書(shū)”“優(yōu)酷”等實(shí)體,確實(shí)比起“青龍偃月刀”“廖化”“東漢末年”“五虎將”“黃中軍”等實(shí)體與關(guān)羽的相關(guān)度更低。這證明了我們提出的要信鏈接篩選機(jī)制與人類直觀較為符合。
表3 針對(duì)“關(guān)羽”詞條的可信鏈接篩選結(jié)果展示
我們從原中文維基百科的5 441 558個(gè)條目中篩選合并出了979 951個(gè)實(shí)體,作為我們知識(shí)圖譜中的節(jié)點(diǎn)。初步的維基百科鏈接圖譜在這些節(jié)點(diǎn)上通過(guò)內(nèi)部鏈接構(gòu)造了16 719 189條有向邊。在此基礎(chǔ)上,通過(guò)可信鏈接篩選得到的“文脈”則保留了其中的15 277 295條邊,去除率為8.62%。故而,我們最后得到的“文脈”有979 951個(gè)實(shí)體節(jié)點(diǎn)和15 277 295條鏈接邊。
我們還將所挖掘的概率式中文知識(shí)圖譜“文脈”在GitHub上進(jìn)行了開(kāi)源(1)https://github.com/THUNLP-AIPoet/ParCKG,同時(shí),我們也編寫(xiě)了展示界面(2)https://williamlwclwc.github.io/KG-Demo/,用戶可以自由地增加、刪除節(jié)點(diǎn),并查看每個(gè)頂點(diǎn)對(duì)應(yīng)的實(shí)體鏈接狀況,展示頁(yè)面如圖2所示。
圖2 展示頁(yè)面示例 在知識(shí)圖譜“文脈”中和中心節(jié)點(diǎn)對(duì)應(yīng)實(shí)體(上圖中的“劉備”)連接邊權(quán)度越大的實(shí)體,在左圖離中心點(diǎn)距離越近,右圖詞云字體越大。
本文通過(guò)對(duì)維基百科內(nèi)部鏈接信息的抽取及定義文本中的詞頻統(tǒng)計(jì),得到了維基百科實(shí)體之間的帶權(quán)有向鏈接,并提出了一種可信鏈接篩選算法,對(duì)其中的偶發(fā)鏈接進(jìn)行了去除,最終得到了概率式關(guān)聯(lián)可信中文知識(shí)圖譜“文脈”,并在GitHub上進(jìn)行了開(kāi)源,并構(gòu)造了展示頁(yè)面進(jìn)行展示。下一步我們還會(huì)將維基百科的類別體系加到我們的圖譜里,進(jìn)一步添加圖譜的豐富性。還擬基于此圖譜,進(jìn)行知識(shí)指導(dǎo)的自然語(yǔ)言處理和生成相關(guān)研究。