涂新輝,張紅春,周琨峰,何婷婷
(1. 華中師范大學(xué) 計算機(jī)科學(xué)系, 湖北 武漢 430079;2. 國家語言資源監(jiān)測與研究中心 網(wǎng)絡(luò)媒體語言分中心, 湖北 武漢 430079)
隨著互聯(lián)網(wǎng)的快速普及以及廉價大容量存儲設(shè)備的不斷出現(xiàn),人類社會已經(jīng)產(chǎn)生了海量的數(shù)字化信息。這些數(shù)量驚人的數(shù)字化信息可謂是人類知識的一個重要的寶庫。如何從海量的語言材料中自動地獲取語義知識,以及如何有效地利用這些語義知識來提高計算機(jī)的自然語言理解水平,已成為一個重要的研究課題。
維基百科作為一個以開放和用戶協(xié)作編輯為特點的Web 2.0知識系統(tǒng),具有知識面覆蓋度廣,結(jié)構(gòu)化程度高,信息更新速度快等優(yōu)點。維基百科中蘊(yùn)涵有豐富的語義知識,是目前眾多學(xué)者進(jìn)行語義知識獲取研究所青睞的語言資源。近幾年來,國外的許多學(xué)者專家以英文維基百科作為語料庫、語義知識庫,從不同的角度抽取語義知識進(jìn)行研究,取得了很多突破性的成果。Struble 和 Ponzetto最先利用維基百科進(jìn)行了語義相關(guān)度的研究[1]。他們把在WordNet知識庫上效果比較好的一些經(jīng)典算法移植到維基百科的分類圖中,并使用三個測試數(shù)據(jù)集M&C、R&G和WS-353分別做了實驗。結(jié)果表明,在大數(shù)據(jù)集上,維基百科的計算結(jié)果要遠(yuǎn)好于WordNet。Zesch 等人利用德語版的維基百科和GermaNet進(jìn)行了類似的實驗研究,得出了一致的結(jié)果[3]。Gabrilovich 和 Markovitch提出了顯示語義分析算法 (Explicit Semantic Analysis),簡稱ESA[4]。他們的主要思想是采取一種基于質(zhì)心的策略,把文本的語義隱射到一個由維基百科概念所形成的帶有權(quán)重的高維空間向量中,再利用簡單的向量乘法計算兩者之間的語義相關(guān)度。Milne則只分析使用了文檔中出現(xiàn)的內(nèi)鏈接,他認(rèn)為鏈接中蘊(yùn)含了更豐富的語義信息[5]。
目前,在國內(nèi),基于中文維基百科的研究還缺少開源的工具和很方便計算的數(shù)據(jù)。在詞語間語義相關(guān)度計算方面,李赟博士提出的綜合多條關(guān)聯(lián)路徑的算法[6],綜合考慮了分類圖和文檔圖中兩節(jié)點間路徑的條數(shù)、每條路徑的長度、圖中節(jié)點間的不同關(guān)聯(lián)程度等多個特征。
本文首先從中文維基百科官方所提供的原始數(shù)據(jù)文件中抽取和整理了維基百科鏈接、類別和錨文本等多種類型的結(jié)構(gòu)化信息;然后,對維基百科的信息建立了類結(jié)構(gòu)模型,并提供了一套開放的應(yīng)用程序接口,方便了用戶對維基百科中信息的獲取和使用;在此基礎(chǔ)上,利用包括鏈接和鏈接類別等特征進(jìn)行詞語語義相關(guān)度的計算的方法進(jìn)行了對比實驗。
在維基百科中,信息是按照一套預(yù)先定義的結(jié)構(gòu)來組織和創(chuàng)建的。主要的結(jié)構(gòu)元素包括:主題頁面、重定向頁面、消歧頁面、類別等。
主題頁面: 主題頁面是維基百科中最重要的元素。每一個主題頁面都代表一個單獨(dú)的概念,其標(biāo)題是一個嚴(yán)格定義、具有格式統(tǒng)一的詞語或詞組。在維基百科中的標(biāo)題是其唯一的標(biāo)示符,歧義頁面通常使用附加的信息加以區(qū)分。例如,“蘋果”這個標(biāo)題代表一種常見的水果這個概念的頁面,而“蘋果 (電影)”這個標(biāo)題則是一個電影頁面的標(biāo)題。頁面中通常使用不同語種的自然語言來描述這個概念的相關(guān)信息。頁面中的信息都是和這個概念密切相關(guān)的,可以被看作為這個概念的語義上下文。
重定向頁面: 在自然語言中,存在很多同義現(xiàn)象,即多個詞語表達(dá)相同的概念。在維基百科中,如果多個概念是等同的,那么這些概念中除了一個概念的頁面中包含概念的描述以外,其他的概念使用重定向的鏈接映射到這個頁面中。這種包含重定向鏈接的頁面被稱為重定向頁面,這種方式避免了概念的重復(fù)定義,同義的概念被組織一個共同的信息頁面,在一定程度上也簡化了信息的維護(hù)。這種重定向頁面的機(jī)制還被用于處理大寫方式、拼寫變體、縮寫以及專業(yè)術(shù)語等問題。例如,在中文維基百科中,有一個頁面為“電子計算機(jī)”,指向它的重定向頁面包括:“電腦”,“計算機(jī)”。
消歧頁面: 和同義現(xiàn)象相反,自然語義中還普遍存在歧義的現(xiàn)象,即一個詞語可以表達(dá)多個不同的概念。在維基百科中,消歧頁面就是專門處理歧義現(xiàn)象的一種機(jī)制。例如,在“蘋果 (消歧義)”這個消歧頁面中,存在多個不同鏈接到以下多個概念的頁面:“蘋果“,“蘋果公司”,“蘋果 (電影)”等。
類別: 類別是維基百科中對概念頁面信息進(jìn)行組織的一種有效的手段。通常,每一個主題頁面至少歸屬于一個類別。例如,“電子計算機(jī)”這個主題頁面歸屬于“計算機(jī)”等多個類別。類別本身不是專題頁面,它們的存在只是為了便于組織和管理頁面。類別的目標(biāo)是建立信息的層次關(guān)系,實際上維基百科的類別并不是嚴(yán)格的樹型結(jié)構(gòu),而是一種接近圖形的復(fù)雜結(jié)構(gòu)。
內(nèi)鏈接:在主題頁面的正文中,通常存在一些到其他的主題頁面的鏈接,這些鏈接以及鏈接中包含的錨文本信息都是獲取維基百科主題間語義信息的重要資源。
維基百科中的鏈接和類別等結(jié)構(gòu)信息中蘊(yùn)含了豐富的維基百科概念間的語義關(guān)系的信息。但是,維基百科的官方僅提供一些基本數(shù)據(jù)文件,很多有用的包括鏈接和類別在內(nèi)的結(jié)構(gòu)化信息并不能直接地獲取和利用。
本文從中文維基百科官方網(wǎng)站下載了2010年08月29日的數(shù)據(jù)文件,并針對維基百科頁面中的正文、鏈接以及鏈接中包含的錨文本信息進(jìn)行了抽取和整理。其中,對頁面中正文內(nèi)容的處理主要包括中文繁體轉(zhuǎn)簡體、文本中噪音的過濾(例如,模板、表格、外鏈接等)、文本的索引等幾個方面。對鏈接的處理則包括對維基百科類別頁面中鏈接的處理和對主題頁面中鏈接處理兩個方面,前者主要為了構(gòu)建維基百科類別圖型結(jié)構(gòu)信息、計算類別在圖型結(jié)構(gòu)中的深度以及提取主題頁面與類別的從屬關(guān)系;后者主要是統(tǒng)計主題頁面間鏈接、重定向鏈接和消歧義鏈接。最后,結(jié)合主題頁面中文本內(nèi)容和鏈接信息,對鏈接中的錨文本的使用情況進(jìn)行了統(tǒng)計。在實現(xiàn)的過程中,本文把抽取的結(jié)構(gòu)化數(shù)據(jù)都按表存儲在數(shù)據(jù)庫中,并對各個重要字段建立了索引。經(jīng)過一系列的處理之后,本文得到了七張數(shù)據(jù)表,包含了對中文維基百科中錨文本、內(nèi)鏈接和分類的統(tǒng)計情況。
為了讓用戶能夠方便地獲取和使用這些結(jié)構(gòu)化的信息和數(shù)據(jù),我們建立了基于Java的應(yīng)用程序接口,如圖1所示。在本文中構(gòu)建的維基百科結(jié)構(gòu)化信息系統(tǒng)中,從整體上對維基百科的信息建立了類結(jié)構(gòu)模型,其中主要的Java類有:維基百科頁面基類,主題頁面類,類別頁面類,消歧義頁面類,重定向頁面類,錨文本類和維基百科類。表1中列出了類及其對應(yīng)實體的相關(guān)信息。每一個類中都實現(xiàn)了獲取其相應(yīng)的數(shù)據(jù)信息的方法,例如,對應(yīng)維基百科頁面基類,本文實現(xiàn)了獲取正文標(biāo)題和內(nèi)容信息的接口;對于主題頁面類,本文實現(xiàn)了獲取其入鏈接、出鏈接、所屬類別的接口;對于維基百科類別頁面類,實現(xiàn)了獲取其子類、父類、所有屬于該類別的主題頁面的接口;對于重定向頁面類,實現(xiàn)了獲取其重定向的目的頁面等信息的接口;對于消歧義頁面類,實現(xiàn)了獲取其正文中所列舉出的所有主題頁面等信息的接口;對于錨文本類,實現(xiàn)了獲取該錨文本所鏈接到的所有的不同主題頁面等信息的接口。用戶可以通過這些定義的類和成員方法定義的接口就可以獲取和使用這些結(jié)構(gòu)化的信息。并且,在處理數(shù)據(jù)的過程中,我們還實現(xiàn)了一系列程序接口和方法,包括文字的繁簡體轉(zhuǎn)換接口、文本處理及數(shù)據(jù)庫訪問接口、文本信息過濾接口、語義相關(guān)度計算接口等。
圖1 中文維基百科系統(tǒng)類結(jié)構(gòu)
表1 中文維基百科系統(tǒng)中類的統(tǒng)計信息
本文中計算詞語語義相關(guān)度的方法分為兩個步驟:(1)分別把詞語wA和wB映射到維基百科主題頁面PA和PB; (2)計算維基百科主題PA和PB的語義相關(guān)度值SIM(PA, PB),這個值即可作為wA和wB的語義相關(guān)度。
在英文維基百科中,主題頁面中包含了豐富的內(nèi)鏈接,這些鏈接通常指向和當(dāng)前主題頁面相關(guān)的其他維基百科主題。David Milne提出了一種利用兩個主題頁面的入鏈接特征來計算這兩個維基百科主題的語義相關(guān)度的方法。這種方法的基本思想為:如果有很多主題頁面中都同時存在鏈接指向主題頁面PA和PB,則PA和PB兩個維基百科主題的相關(guān)度將會較高。這種方法在英文維基百科上取得了不錯的效果。然而,中文維基百科在規(guī)模上遠(yuǎn)遠(yuǎn)不如英文維基百科,主題頁面之間的鏈接也比較少,存在一定的稀疏性。因此,在中文維基百科上僅利用鏈接可能難以充分地評估主題的相關(guān)度。
主題頁面所屬的類別信息也是相關(guān)度的一種重要的暗示,相對于鏈接的稀疏性,類別信息更加集中地體現(xiàn)了維基百科主題頁面之間的語義關(guān)聯(lián)信息。針對中文維基百科,本文提出了一種利用主題頁面中鏈接所對應(yīng)的主題頁面的類別特征來計算主題相關(guān)度的方法,并對包括入鏈接、出鏈接、入鏈接和出鏈接所對應(yīng)的主題頁面類別的四個方面的特征進(jìn)行了對比實驗分析。本文中計算方法的主要步驟如下:
設(shè)有兩個維基百科主題頁面Pa和Pb,鏈接到Pa和Pb的不同主題頁面所構(gòu)成的向量分別為Va_in和Vb_in。計算這兩個向量的余弦值即可得到Pa和Pb的相關(guān)度。在構(gòu)建向量的過程中,每個鏈接的權(quán)重通過以下的方法計算:
(1)
對于維基百科主題頁面Pa和Pb,它們的所有入連接所對應(yīng)的主題頁面集合為{Pi|i=1…n},則入鏈接構(gòu)成的向量如下:
(2)
(3)
構(gòu)建了基于入鏈接的向量后,可以通過計算這兩個向量的余弦值得到兩個主題的相關(guān)度?;诔鲦溄拥挠嬎惴椒ê腿脒B接方法是類似的,在利用鏈接的主題頁面的的類別進(jìn)行計算時,我們把鏈接的向量轉(zhuǎn)換為類別的向量,具體的方法如下:
對于維基百科主題頁面Pa和Pb,它們的所有入連接所對應(yīng)的主題頁面集合為{Pi|i=1…n},這些鏈接所從屬的類別集合為{Cj|j=1…m},則對于主題頁面Pa和類別Cj,權(quán)重為:
(4)
這里的w(Pi→Pa)為主題頁面Pm到Pa的鏈接m→a的權(quán)重,當(dāng)專題頁面Pi屬入類別cj時,b(Pi,Cj)為1,否則為0。
可以構(gòu)建主題頁面Pa和Pb所對應(yīng)入連接的類別的向量如下:
(5)
(6)
構(gòu)建了基于入鏈接類別信息的向量后,可以通過計算這兩個向量的余弦值得到兩個維基百科主題的相關(guān)度?;诔鲦溄宇悇e的計算方法和入連接類別方法是類似的。
在自然語言中普遍存在一詞多義的現(xiàn)象。在計算兩個詞語間相關(guān)度時,首先需要把這兩個詞語分別映射到的兩個維基百科主題,否則無法進(jìn)行計算。在計算兩個詞語的相關(guān)度時,如果其中某個詞語為歧義詞可以對應(yīng)到多個不同的維基百科主題時,通過各種兩個主題對的相關(guān)度以及主題的常用度信息,可以獲取可能性最大的維基百科主題。歧義詞語到維基百科主題的映射過程也包含兩個步驟:(1)找出詞語所對應(yīng)的維基百科主題; (2)從所有的主題中找到可能性最大的主題。
在獲取詞語所對應(yīng)的所有主題信息時可以使用消歧義頁面。消歧義頁面是一個詞語對應(yīng)多個維基百科主題的列表頁面,列出了詞語對應(yīng)的各個維基百科主題,在不考慮條目標(biāo)題補(bǔ)充說明的前提下,每個維基百科主題都有相同標(biāo)題。查找一個詞語的在維基百科中的所有主題,最簡單的方法,就是利用圖1中的消歧義類接口,判斷該詞語與哪些義項標(biāo)題相等,把所有符合條件的條目作為該詞語的主題集合。然而中文維基百科為多義詞提供的消歧義頁面數(shù)目又非常少,許多詞語都沒有與之對應(yīng)的消歧義頁面,利用消歧義頁面也只能完成少部分的工作。
經(jīng)分析發(fā)現(xiàn),維基百科條目之間含有大量的鏈接,而這些鏈接中的錨文本有一些是所指向主題頁面的標(biāo)題,要么是所指向維基百科主題的別名。因此,通過收集鏈接的錨文本構(gòu)建的圖1中的錨文本類接口,可以被利用來獲取詞語對應(yīng)的維基百科主題。例如,利用消歧義信息,可以找到詞語“蘋果”對應(yīng)的維基百科主題 “蘋果(水果)”、“蘋果(電影)”、“蘋果(韓國電影)”這幾個維基百科主題。而利用Anchor表中的信息還可以找到蘋果對應(yīng)的“蘋果公司”、“蘋果日報”等維基百科主題。
從所有的維基百科主題中確定詞語在當(dāng)前的相關(guān)度計算過程中應(yīng)該選取的主題的時,本文考慮了兩個方面的因素:(1)維基百科主題的普遍性; (2)和另外一個詞語對應(yīng)主題的相關(guān)性。普遍性是指一個詞語對應(yīng)的某個維基百科主題被人們所熟知的程度,這個值可以通過錨文本的使用情況來近似獲得,例如,利用詞語A作為錨文本,指向的維基百科主題條目有(c1, c2, …, cn),每種鏈接在整個維基百科中出現(xiàn)的次數(shù)分別為(k1, k2, …, kn),則詞語A映射到維基百科主題ci的概率為:
(7)
相關(guān)性是指所有的詞語A所對應(yīng)的維基百科主題與詞語B的所對應(yīng)的維基百科主題,兩兩配對計算相關(guān)度,哪一對主題的得分越高,則認(rèn)為這對主題更可能是詞語A和詞語B的當(dāng)前含義。最后,通過普遍性和相關(guān)性值的線性加權(quán),選取總得分最高的那個義項對的相關(guān)性值作為詞語A和詞語B的相關(guān)度。例如,蘋果有蘋果(公司)和蘋果(水果)兩個義項,那么蘋果和喬布斯的相關(guān)度最終就應(yīng)該是蘋果(公司)義項和喬布斯之間的相關(guān)度,如圖2所示;蘋果和梨子的相關(guān)度對應(yīng)的就應(yīng)該是蘋果(水果)義項和梨子之間的相關(guān)度,以達(dá)到消歧義的目的。
圖2 詞語到維基百科主題的映射
為了討論與本文提出的相關(guān)度計算的各種特征的作用,本文隨機(jī)選取了多個領(lǐng)域的30對詞語組成了測試數(shù)據(jù)集。在具體的評測過程中,分別利用四種特征進(jìn)行了對比實驗:(1)基于入鏈接的相關(guān)度,簡稱為RIN; (2)基于出鏈接的相關(guān)度,簡稱為ROUT;(3)基于入鏈接主題所屬類別的相關(guān)度,簡稱為RIN_CAT; (3)基于出鏈接主題所屬類別的相關(guān)度,簡稱為ROUT_CAT。
為了評價各種方法的效果,同時,讓10位測試人員各自獨(dú)立對每對詞語進(jìn)行相關(guān)度打分,分值在0~10直接,0表示完全不相關(guān),10表示等價。然后,對每對詞語的10個打分計算平均值,來得到數(shù)據(jù)集中每對詞語的人工相關(guān)度值。
再分別計算了每種方法得到的相關(guān)度與人工相關(guān)度的相關(guān)系數(shù),具體實驗結(jié)果見表2。所有的計算結(jié)果都是四舍五入后,保留了4位小數(shù)。
表2 語義相關(guān)度計算結(jié)果
續(xù)表
分析實驗結(jié)果可以得出以下結(jié)論:1)基于入鏈接或出鏈接的方法在中文維基百科上效果較差,反映了中文維基百科數(shù)據(jù)稀疏性問題對相關(guān)度計算的負(fù)面影響; 2)本文提出的利用鏈接主題所屬類別的方法得到的相關(guān)度更接近人工的相關(guān)度值,其中基于出鏈接主題所屬類別的相關(guān)度的方法效果最好。
本文首先抽取整理了中文維基百科結(jié)構(gòu)化信息;對維基百科的知識結(jié)構(gòu)建立了類模型,并實現(xiàn)了一套開放的應(yīng)用程序接口;在此基礎(chǔ)上,進(jìn)行了詞語語義相關(guān)度計算的實驗,討論了利用中文維基百科頁面的鏈接信息進(jìn)行語義相關(guān)度計算的效果。 然而,從表2可以看出,不論是維基百科的詞條數(shù)目,還是其中的鏈接、分類信息,規(guī)模都不是很大,依然存在數(shù)據(jù)稀疏性的問題;因此,在后續(xù)的工作中,可以結(jié)合維基百科中的文本內(nèi)容提供更好的詞語語義相關(guān)度計算模型。
[1] Michael Strube, Simon Paolo Ponzetto. WikiRelate! Computing semantic relatedness using Wikipedia[C]// Proceedings of the 21rd national conference on Artificial intelligence, 2006: 1419-1424.
[2] Simone Paolo Ponzetto, Michael Strube. Knowledge Derived From Wikipedia For Computing Semantic Relatedness[J]. Journal of Artificial Intelligence Research, 2007, 30: 181-212.
[3] Torsten Zesch, Christof Muller, Iryna Gurevych. Using Wiktionary for Computing Semantic Relatedness[C]//Proceedings of the 23rd national conference on Artificial intelligence, 2008: 861-867.
[4] Evgeniy Gabrilovich, Shaul Markovitch. Computing Semantic Relatedness using Wikipedia-based Explicit Semantic Analysis[C]//Proceedings of the 20th International Joint Conference on Artificial Intelligence, 2006: 1606-1611.
[5] David Milne. Computing Semantic Relatedness using Wikipedia Link Structure[C]//Proceedings of the New Zealand Computer Science Research Student conference, 2008.
[6] 李赟. 基于中文維基百科的語義知識挖掘相關(guān)研究[D]. 北京郵電大學(xué)博士學(xué)位論文, 2009.
[7] http://zh.wikipedia.org/[DB/OL].
[8] 劉群, 李素建. 基于《知網(wǎng)》的詞匯語義相似度計算[C]// 第三屆漢語詞匯語義學(xué)研討會, 2002.
[9] Pu Wang, Carlotta Domenicon. Building Semantic Kernels for Text Classification using Wikipedia[C]// Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining, 2008.