王超 蔡潤波
摘 要:在互聯(lián)網(wǎng)信息爆炸的時代,百科成為了互聯(lián)網(wǎng)用戶獲取可信結構化信息的首選途徑,然而,現(xiàn)有的百科文檔的不規(guī)范、概念體系的不健全,造成了相當一大部分百科文檔沒能歸入現(xiàn)有概念體系,影響了知識體系的構造和再生。文章以百度百科作為研究對象,采用基于信息框屬性的分類算法,以及基于相關實體的分類算法對百度百科中的未分類文檔進行分類,實驗表明,兩種算法都具有較高的分類準確率,結合兩種算法能覆蓋除部分只有標題信息的絕大部分未分類文檔,因此,能對百科實例的分類問題給出較好的解答。
關鍵詞:百科;分類;信息框;相關實體
引言
自互聯(lián)網(wǎng)誕生以來,人類所面臨的信息就呈現(xiàn)著爆炸式的增長。然而,面對著浩如煙海的海量信息,人類反而顯得不知所從。搜索引擎出現(xiàn)了,搜索引擎通過關鍵詞提取及信息檢索技術,幫助互聯(lián)網(wǎng)用戶迅速地找到信息。然而,這并不能完全滿足互聯(lián)網(wǎng)用戶的需求,因為互聯(lián)網(wǎng)信息常常是非結構化的——用戶想獲取的信息常常以不同的方式散落在互聯(lián)網(wǎng)的各個角落——而為了獲取這些完整的信息,用戶不得不翻閱很多網(wǎng)頁,花費大量的時間和精力從這些信息中提取出有用的知識。如何有效、規(guī)范地定義并描述互聯(lián)網(wǎng)的實體,以結構化的方式組織互聯(lián)網(wǎng)上的知識,使得互聯(lián)網(wǎng)上的知識能夠有效地融合,就顯得尤為迫切而重要。
百科作為互聯(lián)網(wǎng)知識的經(jīng)典表現(xiàn)形式,借助其開放性,互聯(lián)網(wǎng)的百科文檔成為了眾多互聯(lián)網(wǎng)用戶獲取知識的首選路徑。然而,正是由于其開放性,互聯(lián)網(wǎng)百科文檔呈現(xiàn)出了諸多不規(guī)范性:如概念體系的不完整,分類體系的不健全,實際上,目前互聯(lián)網(wǎng)百科文檔中有相當一大部分并沒有得到合適的分類,而這造成的結果是,一方面,對實例本身的描述不全面,另一方面,形成知識的孤島,無法將實例文檔融入現(xiàn)有的知識體系,也難以基于該實例文檔推導出新的知識。因此,如何在現(xiàn)有百科的開放體系下,解決百科文檔概念體系不完整的問題,進而構造富有活力的知識生態(tài),就顯得尤為重要。
因此,文章將以國內最大的中文知識庫——百度百科為例,探究如何為未恰當標注類別的百科文檔添加類別標簽,以健全現(xiàn)有百科文檔的知識體系。
1 問題定義
百科文檔通常呈現(xiàn)半結構化的形式,百科文檔通常由若干個相對規(guī)范的部分組成,即標題、類別、信息框、摘要、相關實體、正文等。因此可以用如下的六元組來表征百科文檔。
d={title,catogories,infobox,abstract,link,essay}
受實驗數(shù)據(jù)限制,在本實驗中,正文項缺失,因此,文章所探討的百科文檔可以僅表示為如下的五元組。
d={title,catogories,infobox,abstract,link}
其中,信息框通常為一系列“鍵-值”對所構成,即信息框可以表示為<鍵,值>對的集合:
Infobox={(key1,value1),(key2,value2),…(keyn,valuen)}
不妨將其中的鍵所構成的集合稱為keysetd。
此外,由于百科分類體系的不規(guī)范,同一個百科文檔通常會被歸為多個不同的類別,因此,類別字段通常也是一個組合,即由若干類標簽構成的組合。
catogories={c1,c2,…,cn}
同樣,同一個百科文檔通常會與多個實體相關聯(lián),因此,相關實體字段也可以表示為一個集合,其中的每一個元素為一個百科文檔中的實體,即:
link={ent1,ent2,...,entn};
文章將探討如何將百度百科中未分類的實例歸到12個根類別中,即藝術、技術、文化、生活、地理、社會、人物、經(jīng)濟、科學、歷史、自然、體育。因此,將百科的文檔的根類別定義為label,其取值在上述的十二個根類別當中。標注的百科文檔為“文檔-標簽”對,即:
ld={d,label};
因此,可以將文章研究的百科文檔分類問題定義為,尋找函數(shù)映射關系f,使得給定一個已標注的百科文檔集合LdSet以及另一未標注的百科文檔d,輸出文檔的類別屬性l;
f:
也可以將該分類過程形式化為兩個階段:第一階段,給定一個已標注的百科文檔集合,訓練出一個模型;第二階段,給定一個未分類的百科文檔,基于訓練出來的模型即輸入文檔,輸出該文檔的類別屬性,即:
f1:LdSet→Model
f2:
下面,我們將對本章形式化的問題進行求解,并對求解的方法進行評測。
2 方法描述
實際上,在本實驗中,初始的數(shù)據(jù)并不是在上一章中所描述的標注文檔集以及未標注文檔,而是一個混合的文檔集合--即該文檔包含有類別屬性的文檔和沒有類別屬性的文檔。其中,有類別屬性的文檔通常其類別集合不包含根類別,而這些文檔中有一部分包含根分類的子孫類別屬性,因此,基于百科的概念體系可以掛靠到根類別下,另外一部分文檔則沒有類別屬性,或者是其類別屬性不在現(xiàn)有的百科的概念體系中,因此無法掛靠到根類別下,而這正是文章需要分類的目標文檔。因此,下面將首先介紹數(shù)據(jù)的預處理過程,即將輸入文檔轉化為已標注的文檔集及未標注的文檔集,然后介紹基于該數(shù)據(jù)集定義的兩個分類算法——基于信息框屬性的分類算法,以及基于相關實體的分類算法。
2.1 數(shù)據(jù)的預處理
本實驗的數(shù)據(jù)輸入為一個混合的百科文檔集,包括標注(但標注不規(guī)范)的百科文檔和未標注的百科文檔,并將文檔規(guī)范化為<標題、類別、信息框、摘要、相關實體>五元組。
為了獲取文檔的根類屬性首先必須構建百科文檔的概念知識體系,百科的類別關系樹,輸入<父類,子類集合>構建一棵分類樹,分類樹中的每一條邊表征一個類別的直接父子關系。
輸入如下所示:
“Root藝術;技術;文化;生活;地理;社會;人物;經(jīng)濟;科學;歷史;自然;體育
體育 體操Mid;棋牌運動;田徑運動;體育周邊;...”
輸出為如圖1所示的分類樹。
圖1
其中中心節(jié)點即概念體系的Root節(jié)點。
構建了如上的概念樹之后,輸入一個百科文檔及其類別屬性集Catogories,我們就可以通過如下的方式獲取其根屬性。
GetRoot(catogories)
foreach type in catogories
root<-GetRootInTree(type)
if root not null then
return root
return null;
end
GetRootInTree(Node)
if node not in Tree
return null;
while parent(node)!=“Root”
node=parent(node);
return node;
end
基于上述的方法,我們可以獲取一個輸入文檔的根類別屬性(或者找不到根類別屬性),若能為輸入的文檔找到根類別屬性,則將其加入<文檔,標簽>集,若無法找到對應的根類別屬性,則將其加入未分類的文檔集,作為分類的目標對象。
2.2 基于信息框的分類算法
不同類別的百科文檔通常具有不同的屬性:如人物通常有“職業(yè)”,“畢業(yè)院系”等屬性;生活相關的通常有“主要食材”,“功效”等屬性等等。因此,一個文檔所具有的信息框屬性通常能夠標識這個文檔所屬的類別。此外,相比文檔的摘要、正文,信息框屬性的維度更低、噪聲也更小,因此,比文檔的摘要和正文通常更具備有標識意義,也能夠獲得更高的分類準確度。因此,下面將基于文檔的信息框屬性給出百科文檔的一個分類算法。
基于信息框屬性的分類算法的基本流程如下:
(1)初始化信息框屬性集合KeySet=?覫
(2)對輸入的100萬個百科文檔(本實驗僅研究實驗數(shù)據(jù)中的前100個百科文檔),提取其信息框屬性(即鍵),若該屬性不在集合KeySet中,則將其加入到KeySet中,并置其詞頻為1,否則,將相應鍵的詞頻加1。
(3)按照詞頻從高到低,選取前2000個信息框屬性作為特征(第2000個信息框屬性的出現(xiàn)次數(shù)已經(jīng)不足100次)。
(4)初始化12個類別的特征向量Vec1=(0,0,...,0),...,Vec12=(0,0,...,0),其中每一個維度對應(3)中選取的一個信息框屬性。
(5)對于已標注文檔集合中的每個文檔,若其信息框屬性在(3)中選取的2000個屬性中,則將其對應類別的特征的相應維度加1。
執(zhí)行完上面五個步驟之后,我們可以得到12個類別的特征向量,特征向量的每一個維度對應一個信息框屬性,特征向量表征該類別通常與那些信息框屬性相關聯(lián)。
有了12個類別的特征向量之后,就可以基于這12個特征向量對這未分類的文檔進行分類了,其方法是:
(1)對于輸入的文檔,若其沒有信息框屬性,則直接返回,因為基于此方法無法給出分類。
(2)提取輸入文檔的信息框屬性,并將其轉換為特征向量,每一維度對應上面選取的一個信息框屬性(共2000個)。
(3)計算輸入的文檔的特征向量與12個類別的特征向量之間的夾角的余弦,并以此表征輸入文檔與各類別之間的相關性:
Similarity=■
(4)將輸入文檔歸入與之相似性最大的類別中,返回類別標簽。
2.3 基于相關實體的分類算法
盡管基于信息框屬性的分類算法已經(jīng)能夠獲取不錯的分類準確度,由于未分類文檔中仍有相當大部分的比例沒有信息框屬性(100萬文檔約有30萬文檔沒有信息框屬性),上面的基于信息框屬性的分類算法無法對這類文檔進行分類,因此,需要提出新的分類算法,對沒有信息框屬性的文檔進行分類。
對30萬沒有信息框屬性的文檔統(tǒng)計發(fā)現(xiàn),其中約有13萬實例只有標題,沒有其他信息,由于這類文檔的信息量太少,分類對于沒有常識的計算機而言難度太大,在本實驗中不予考慮;有約16萬文檔有相關實體屬性,有約5萬實例有摘要屬性,考慮到摘要屬性的詞頻信息更稀疏,噪聲更大,而相關實體屬性基本上能覆蓋除了13萬只有標題的文檔外的絕大部分文檔,噪聲也更小,因此,本實驗選取相關實體屬性對剩下的實例進行分類。
為了基于相關實體進行分類,首先我們必須獲取<實體,根類別>庫,即2.1中得到的標注文檔集合,僅取其標題(實體名)和根類別標簽構成<實體、根類別>庫。
對于輸入的每一個文檔,若其包含相關實體屬性,對其中的每一個實體,若其屬于根類別Ci,認為該實例通過相關實體和根類別之間有一條邊。最后,將文檔實例歸入與其連邊最多的根類別。即認為,該文檔與哪一個類別中的最多實例相關聯(lián),則該文檔屬于該類別——基于同一個類別內的實體之間的關聯(lián)大于類別間的實體的關聯(lián)的假設。
3 方法評測
在上文中,我們給出了基于信息框屬性以及基于相關實體的兩個分類算法。下面,將對這兩個算法進行評測。
表1為經(jīng)過2.1數(shù)據(jù)預處理后(即根據(jù)實例的類別信息標注其根類別)后,各個類別的實例數(shù):
表1
從表1中可以看出,在現(xiàn)有的百科概念體系下,有約31.5%的實例無法掛靠到任意一個根類別下。因此,給出一個百科實例的分類算法是必要而且重要的。
因此,文章提出了基于信息框屬性和基于相關實體的分類算法。
表2為運行文章提出的基于信息框屬性的分類算法之后,各個類別中的實例個數(shù)(僅針對在步驟1中無法區(qū)分根類別的314527個實體)。
表2
表2可以看出,由于未分類文檔中大部分文檔沒有類別屬性,因此,大部分未分類實體無法在這一步中給出根類別屬性。
那基于信息框屬性的分類算法的準確率如何呢?
表3是基于信息框屬性的分類算法得到的文化實例的前10個實例:
表3
可以看出前十個實例都是屬于文化類的,其中除了“民間敘述詩”之外,其他都是書籍或者書籍相關的簡介。
表4是基于信息框屬性的分類算法給出的人物實例的前10個實例:
表4
從表4可以看出,算法給出的10個實例都是屬于人物類別的。由此可以,基于信息框的屬性雖然召回率較低(受多數(shù)百科文檔沒有信息框屬性限制),但是其準確率還是很高的。
針對基于信息框屬性的分類算法無法完成分類的299940個文檔,我們使用了基于關聯(lián)實體的分類算法進行分類,在2.2中已經(jīng)提到,針對約30萬未分類的文檔,除去約13萬僅有標題的文檔之后,其余有16萬文檔包含相關實體屬性,因此基于相關屬性的分類算法基本上能覆蓋計算機所能分類的實體的大部分,由此,可以彌補基于信息框屬性的分類方法召回率較低的劣勢。
表5是基于相關實體的分類算法給出的經(jīng)濟類的前10個實例:
表5
可以看出,給出的十個實例中,有兩個分錯的實例,即“王鐸(北京大學教授)”以及“沙鷗(鳥類)”,其中王鐸(北京大學教授)是一位在北大教金融的老師,所以也是在經(jīng)濟圈的人物,所以從廣義上講,盡管將該實例分為人物更恰當,但將其歸為經(jīng)濟類的一個實例也未嘗不可。因此,整體上來說,基于相關實體的分類算法的準確度還是比較高的。
綜上可知,基于信息框屬性的分類算法具有較高的精確度,但受限于大部分未分類的百科文檔沒有信息框屬性,召回率較低,而基于相關實體的分類算法能覆蓋絕大部分計算機“能分”(除去13萬只有標題的實例),其精確度雖然比基于信息框屬性的方法略低一點,但是還是維持在比較高的水平,結合兩者的優(yōu)點,基本上能夠對百科文檔中的未分類實例進行較為準確的分類。
4 結束語
文章以百度百科作為研究對象,力圖給出一個分類算法,能對百科中未分類的文檔進行合理的歸類,以此完善現(xiàn)有的知識體系。基于信息框屬性具有較強的標識意義,噪聲較小,實驗表明,該方法具有較高的分類準確率,但首先于大部分文檔沒有信息框屬性,無法解決所有文檔的分類問題。因此,文章提出了基于相關實體的分類算法,該算法能覆蓋除只有標題的文檔外的絕大部分未分類文檔,并具有較高的分類準確率,結合這兩個方法,基本能解決百科文檔的分類問題。當然,我們也意識到在分類結果中,仍然存在少數(shù)分錯的實例,因此,算法仍然存在提升的空間,一方面,我們可以充分利用除了信息框屬性和相關實體屬性外的其他屬性(如標題屬性)。此外,我們也可以進一步改進我們的算法以獲得更高的準確率及召回率。
文章通過對國內最大的中文知識庫——百度百科的內容進行分析和改進讓我們初步體會到了人可閱讀的知識與對機器可閱讀的知識之間的鴻溝。隨著信息爆炸的時代來臨,知識越來越需要能被機器理解,相信知識工程將會有更多的工具和更好的方法出現(xiàn)。