一種從維基百科半結構化數據自動構建分類樹的方法【專利摘要】本發(fā)明公開了一種從維基百科半結構化數據自動構建分類樹的方法,包括(1)半結構化數據的抽取,通過分析獲取到頁面的HTML,識別出含有半結構化數據的頁面。(2)半結構化數據中上下位關系的抽取,依據維基目錄頁面的布局特點,獲取其中包含的上下位關系;解析HTML元素,依據導航表的結構,獲取表格中包含的上下位關系。(3)源于不同半結構化數據的上下位關系融合,依據抽取到的上下位關系集構建向無權簡單圖,然后基于圖的深度優(yōu)先遍歷算法生成分類樹。本發(fā)明能夠自動抽取維基頁面中的上下位關系,并構建分類樹,減少領域專家構建的成本,充分重用了志愿者手工構建的上下位關系?!緦@f明】一種從維基百科半結構化數據自動構建分類樹的方法【
技術領域:
】[0001]本發(fā)明涉及知識獲取【
技術領域:
】,特別涉及一種利用維基百科半結構化數據自動構建分類樹的方法?!?br>背景技術:
】[0002]互聯(lián)網促使信息數字化的進程加速,其上信息以指數增長。目前數字信息已呈現數量龐大、類型繁多、更新迅速等發(fā)展趨勢。著名的Web搜索引擎Google索引的網頁數量目前已經達到500億。信息時代帶來了海量的數字化文本,日益積累的數據使得信息的獲取越來越困難。[0003]在數量巨大的頁面中含有人工編輯的半結構化數據,這些數據散落在不同的頁面中,造成人們無法從大量頁面中迅速而準確地找到這些有用的半結構化信息。[0004]維基百科(www.wikipedia.0rg)是目前訪問量最大的十個網站之一,維基百科頁面由志愿者共同編輯,含有大量高質量的半結構化數據,這些半結構化數據中蘊藏著大量的上下位關系,因而需要自動化的抽取方法從這些半結構化數據中獲取上下位關系,并進行融合最終形成分類樹。[0005]現有技術中尚未找到有關從維基百科半結構化數據中抽取上下位關系抽取及構建分類樹的專利或者文獻;只檢索到了一篇與本專利相關的已授權專利:一種基于Web數值表格抽取的數據挖掘方法[專利號:ZL200910084507.9];該專利的發(fā)明人基于領域知識庫,提出一種從Web數值表格抽取數值知識元庫的方法。該專利所述方法依賴領域知識庫,且只能處理數值表格,無法識別表格中字符串表示的實體及實體間的關系?!?br/>發(fā)明內容】[0006]本發(fā)明的目的是提供一種從維基百科半結構化數據自動構建分類樹的方法,通過分析半結構化數據中的模式和實體,自動抽取出半結構化數據中的實體及它們間的上下位關系,從而可以大大減少計算量,降低計算復雜度。所述實體是指維基百科頁面的標題及結構化數據中的最小處理單元。所述實體間的上下位關系是指實體間內在的分類關系。[0007]為達到以上目的,本發(fā)明是采取如下技術方案予以實現的:[0008]一種從維基百科半結構化數據自動構建分類樹的方法,包括以下步驟:[0009]第I步、半結構化數據的抽取:通過分析獲取到頁面的HTML,識別出含有半結構化數據的頁面,所述半結構化數據指維基百科目錄頁面及維基百科條目頁面中的導航表格;[0010]第2步、半結構化數據中上下位關系的抽取:抽取維基百科目錄頁面中上下位關系和導航表格中上下位關系;[0011]第3步、源于不同半結構化數據的上下位關系融合:依據抽取到的上下位關系集構建向有向無權簡單圖,然后基于圖的深度優(yōu)先遍歷算法生成分類樹。[0012]本發(fā)明進一步的改進在于:第I步具體包括以下步驟:[0013]第1.1步:從維基百科網站首頁www.wikipedia.0rg開始,通過解析頁面的超鏈接逐層爬取所有頁面,依據頁面URL前綴“http://en.wikipedia.0rg/wiki/”獲取條目頁面,依據URL前綴“http://en.wikipedia.0rg/wiki/Category:”獲取目錄頁面,每個頁面對應一個實體,頁面標題為該實體的名字;[0014]第1.2步:根據條目頁面是否含有HTML標簽〈tableclass="navbox">,篩選出含有導航表格的條目頁面。[0015]本發(fā)明進一步的改進在于:第I步具體包括以下步驟:[0016]I):通過Web頁面爬取工具爬取維基百科首頁http://www.wikipedia.0rg/并進行解析,然后依據HTML標簽<a>和</a>找出該頁面中的所有匹配模式http\:VV[a_z]+\.wikipedia\.0rgV的超鏈接,記為{head_linkjn,其中η表示所有不同語言的維基子網站數目;每個這樣的超鏈接heaad_linnkj^應一種語言的維基百科子網站,并且是該子網站的首頁,枚舉每個維基子網站首頁的超鏈接head_linki;[0017]2):構建空的哈希表Sef=0,該哈希表用來記錄某個頁面是否已經被爬取過,使用頁面的URL地址來標識不同的頁面;[0018]3):設置當前爬取頁面地址為當前維基子網站首頁,current_link=IieadJinki;[0019]4):在HashSet查詢current_link,如果命中,表明頁面已經被爬取過,貝U不再爬取跳轉到第8步;如果該頁面沒有爬取過,則通過Web頁面爬取工具爬取該頁面,并將該鏈接加入到HashSet中,即執(zhí)行HashSet.add(current_link);[0020]5):如果該頁面URL前綴是“http://en.wikipedia.0rg/wiki/Category:”,則保存該頁面到ArticleSet,并跳轉到第7)步;[0021]6):如果該頁面URL前綴是“http://en.wikipedia.0rg/wiki/”,進一步判斷該條目頁面是否含有HTML標簽〈tableclass="navbox">,如有則保存該頁面到CategorySet;`[0022]7):解析該頁面,依據HTML標簽<a>和</a>找出該頁面中的所有超鏈接{hyperlinkjm,將所有這些超鏈接壓入超鏈接棧IinkStack中,即IinkStacKpushAlI({hyperIinkJm);[0023]8):如果LinkStack不為空,current_link=LinkStacK.popO,跳轉到第4步;如果LinkStack為空,退出。[0024]本發(fā)明進一步的改進在于:第2步中目錄頁面中上下位關系的抽取包括以下步驟:[0025]第2.1.1步:解析目錄頁面的HTML結構,根據頁面HTML標簽定位目錄頁面的邏輯塊,包括標題塊、子目錄塊、子頁面塊及父目錄塊,邏輯塊中的每個超鏈指向的頁面表示一個實體,定義上下位關系集HRS,并設H/iS=$;[0026]第2.1.2步:依據HTML標簽〈hlid="firstHeading;/>和</hl>定位標題塊,解析標題塊中標簽〈span〉和〈/span〉得到目錄頁面的標題,表示為ct;[0027]第2.1.3步:依據HTML標簽〈divid="mw-subcategories">和〈/(1;[¥>定位子目錄塊,依據HTML標簽<a>和</a>識別子目錄塊中的超鏈接,并抽取超鏈接的title屬性值,表示為sCi,所有超鏈接的title屬性值的集合表示為IscJm,其中m表示子目錄塊中超鏈接的個數;子目錄塊中超鏈接title屬性值的集合IscJm與目錄頁面標題ct形成上下位關系集Ksci,ct>}m,其中〈sCi,ct>表示第i個上下位關系,SCi表示下位實體,ct表示上位實體,最后將Kscpctw1JnTvHRSJPHRS=HRSU{<sci;ct>}m;[0028]第2.1.4步:依據HTML標簽〈divid="mw-pages;/>和</div>定位子頁面塊,依據HTML標簽<a>和</a>識別子頁面塊中的超鏈接,并抽取超鏈接的title屬性值,表示為sai;所有超鏈接的title屬性值的集合表示為{sajn,其中η表示子頁面塊中超鏈接的個數;子頁面塊中超鏈接title屬性值的集合IsaJn與目錄頁面標題ct形成上下位關系集?saj,ct>}m,Sai表示下位實體,ct表示上位實體,最后將Ksai,ct>}m加入HRS,即HRS=HRSUKsai,ct>}n;[0029]第2.1.5步:依據HTML標簽〈divid="麗-normal-catlinks">和〈/(1;[¥>定位父目錄塊,依據HTML標簽<a>和</a>識別父目錄塊中的超鏈接,并抽取超鏈接的title屬性值,表示為fCi,所有超鏈接的title屬性值的集合表示為{fcjk,其中k表示父目錄塊中超鏈接的個數;目錄頁面標題ct與父目錄塊中超鏈接title屬性值的集合{fCi}k形成上下位關系集Kct,fCi>}k,ct表示下位實體,表示上位實體,最后將{〈ct,fCi>}k加入HRS,即HRS=HRSU{〈ctfCi>}k。[0030]本發(fā)明進一步的改進在于--第2步中導航表格中上下位關系的抽取包括以下步驟:[0031]第2.2.1步:針對每個包含導航表格的頁面,根據導航表格的HTML標簽〈tableclass="navbox">和〈/table〉,定位每個表格的起始位置和結束位置;[0032]第2.2.2步:根據導航表格標題字體的格式〈fontstyle="font-size:110%;/>和〈/font〉,識別導航表格的標題title;[0033]第2.2.3步:在表格范圍內根據是否存在HTML標簽〈tableclass="nowrapIinkscollapsiblecollapsednavbox-subgroup">判斷表格下面是否嵌套子表格,如果嵌套則抽取每個子表格STi的標題Subti并執(zhí)行HRS=HRSU?title,suubtp},針對每個STi重復執(zhí)行第2.2.`3步;如果不包含子表格則執(zhí)行第2.2.4步;[0034]第2.2.4步:導航表格由兩列組成,根據HTML標簽<thclass="navbox-group">和</th>抽取導航表格第I列的實體,形成實體集合{groupentityju,其中u是導航表格的行數,然后組合title與{group_entityJu形成上下位關系集合{〈title,group—entityi〉}。,,并將{〈title,group—entityi〉}。加入到HRS,即HRS=HRSU{<title,group_entityi>}u;[0035]第2.2.5步:針對抽取導航表格第2列的每個元素,分別根據是否存在HTML標簽〈tableclass="nowrapIinksnavbox-subgroup">和〈tableclass="nowrapIinkscollapsibleautocollapsenavbox-subgroup"兩種子表格,如果嵌套則迭代執(zhí)行第2.2.4步并添加到HRS中,否則根據HTML標簽<tdclass="navbox-listnavbox-oddhlist">和〈td>解析得到列表中的實體集合{list_entiyjv,其中v表示列表中實體的個數,然后組合group+entityi與{list_entity」}v形成上下位關系集合[0036]{<(iroupjniihitJhisniihtj>}|......t,并將{<gronpMiiip1.UsLndityj>};:=1加入到HRS,即HRS=HRSu{<<jnmpniiifIfiJisf"Ififyj[0037]本發(fā)明進一步的改進在于:第3步源于不司半結構化數據的上下位關系融合具體包括以下步驟:[0038]第3.1步:構建一個有向無權簡單圖G=(V,E),其中V表示實體集合,E表示實體間的上下關系,開始G為空;[0039]第3.2步:從HRS中取出一個上下位關系Gi=〈hypo,hyper〉eHRS,同時執(zhí)行HRS=HRS-{ej;[0040]第3.3步:判斷在V中某個下位實體與hypo是否等價。如果不存在等價實體,則將hypo加入V,V=VU{hypo};[0041]第3.4步:判斷在V中某個上位實體與hyper是否等價。如果不存在等價實體,貝U將hyper加入VV=VU{hyper};[0042]第3.5步:如果hyper或hypo任何一個在V中不存在等價實體,則將Oi作為G的一條新的邊,即E=EU{ej;[0043]第3.6步:執(zhí)行第3.2步,直到HRS為空;得到有向無權簡單圖G;[0044]第3.7步:根據實體rooteV及G,通過有向無權簡單圖G的深度優(yōu)先遍歷得到以root為根的分類樹T=(V,E',root),其中1I”CVSCE0[0045]一種從維基百科半結構化數據自動構建分類樹的方法,包括以下步驟:[0046]第I步、半結構化數據抽取:維基百科中的半結構化數據包括目錄頁面和導航表格,首先根據URL地址前綴的不同,從維基百科網站www.wikipedia.0rg所有頁面中識別出維基目錄頁面與維基條目頁面;進一步根據條目頁面是否包含HTML標簽〈tableclass="navbox">找出包含導航表格的條目頁面;[0047]第2步、半結構化數據中上下位關系hypernym/hyponymrelation抽取:首先,解析目錄頁面的HTML結構,得到頁面不同的邏輯塊,依據邏輯塊之間的布局關系獲取目錄頁面內所包含的實體間的上下位關系;其次是解析導航表格,得到表格的邏輯結構及所包含的實體,然后根據邏輯結構獲取表格中實體間的上下位關系;[0048]第3步、源于不同半結構化數據的上下位關系融合:首先是依據第2步得到的上下位關系集合HRS構建一個有向圖G=(VE),其中V表示一個實體集合,E表示實體間的上下位關系;其次是根據實體rooteV及G生成以root為根的分類樹T=(V,E',root),其中rC[0049]相對于現有技術,本發(fā)明具有以下優(yōu)點:[0050]I)本發(fā)明依據HTML標簽解析維基頁面的目錄頁面及條目頁面中的導航表格,準確解析其中的上下位關系,從而得到大量的上下位關系,該技術簡單高效。[0051]2)本發(fā)明充分利用了散落在不同的維基頁面中的上下位關系,進而將來源不同的上下位融合在一起,形成一個一致的上下位關系圖。[0052]3)由于本發(fā)明的上下位關系來源于領域專家的手工編輯,從而造成通過該方法得到分類樹更具有權威性。【專利附圖】【附圖說明】[0053]圖1是從維基百科半結構化數據自動構建分類樹的流程圖。[0054]圖2是半結構化數據抽取的流程圖。[0055]圖3是目錄頁面中上下位關系抽取的流程圖。[0056]圖4是導航表中上下位關系抽取的流程圖。[0057]圖5是不同源上下位關系融合的流程圖。[0058]圖6是目錄頁面示意圖。[0059]圖7是導航表示意圖。[0060]圖8是上下位關系圖。[0061]圖9是以“樹”為根的分類樹?!揪唧w實施方式】[0062]以下結合附圖及實例對本發(fā)明作進一步的說明。[0063]請參閱圖1所示,本發(fā)明一種從維基百科半結構化數據自動構建分類樹的方法,分為如下3個過程:[0064]第I步:半結構化數據抽取,包括2個步驟。[0065]第1.1步:從維基百科網站首頁www.wikipedia.0rg開始,通過解析頁面的超鏈接逐層爬取所有頁面,依據頁面URL前綴“http://en.wikipedia.0rg/wiki/”獲取條目頁面,依據URL前綴“http://en.wikipedia.0rg/wiki/Category:”獲取目錄頁面,每個頁面對應一個實體,頁面標題為該實體的名字;[0066]第1.2步:根據條目頁面是否含有HTML標簽〈tableclass="navbox">,篩選出含有導航表格的條目頁面。[0067]這些步驟的流程如圖2所示,比如圖6及圖7分別給出“數據結構”目錄頁面和“數據結構”頁面中的導航表格。[0068]第I步半結構化數據的抽取按照如下過程:[0069]I):通過Web頁面爬取工具爬取維基百科首頁http://www.wikipedia.0rg/并進行解析,然后依據HTML標簽<a>和</a>找出該頁面中的所有匹配模式http\:VV[a_z]+\.wikipedia\.0rgV的超鏈接,記為{head_linkjn,其中η表示所有不同語言的維基子網站數目。每個這樣的超鏈接head_linkj^應一種語言的維基百科子網站,并且是該子網站的首頁,枚舉每個維基子網站首頁的超鏈接heacLlinkp[0070]2):構建空的哈希表/fasIiSet=0,該哈希表用來記錄某個頁面是否已經被爬取過,使用頁面的URL地址來標識不同的頁面。[0071]3):設置當前爬取頁面地址為當前維基子網站首頁,current_link=head_linki比如英文維基子網站首頁地址為“http://en.wikipedia.0rg/wiki/Main_Page”。[0072]4):在HashSet查詢current_link,如果命中,表明頁面已經被爬取過,貝U不再爬取跳轉到第8步;如果該頁面沒有爬取過,則通過Web頁面爬取工具爬取該頁面,并將該鏈接加入到HashSet中,即執(zhí)行HashSet.add(current_link)。[0073]5):如果該頁面URL前綴是“http://en.wikipedia.0rg/wiki/Category:”,則保存該頁面到ArticleSet,并跳轉到第7)步。[0074]6):如果該頁面URL前綴是“http://en.wikipedia.0rg/wiki/”,進一步判斷該條目頁面是否含有HTML標簽〈tableclass="navbox">,如有則保存該頁面到CategotySet0[0075]7):解析該頁面,依據HTML標簽<a>和</a>找出該頁面中的所有超鏈接{htyperlinkjm,將所有這些超鏈接壓入超鏈接棧LinkStack中,即LinkStatk,pushAlI({hyperIinkJm)。[0076]8):如果LinkStack不為空,current_link=LinkStack.popO,跳轉到第4步;如果LinkStack為空,退出。[0077]第2步:半結構化數據中上下位關系(hypernym/hyponymrelation)抽取目錄頁面中上下位關系和導航表格中上下位關系,其中前者包含5個步驟。[0078]如圖3所示,目錄頁面中上下位關系的抽取包括以下步驟:[0079]第2.1.1步:解析目錄頁面的HTML結構,根據頁面HTML標簽定位目錄頁面的邏輯塊,包括標題塊、子目錄塊、子頁面塊及父目錄塊,邏輯塊中的每個超鏈指向的頁面表示一個實體,定義上下位關系集HRS,并設///?5=$[0080]第2.1.2步:依據HTML標簽〈hlid="firstHeading">和</hl>定位標題塊,解析標題塊中標簽〈span〉和〈/span〉得到目錄頁面的標題,表示為ct;[0081]第2.1.3步:依據HTML標簽〈divid="mw-subcategories">和〈/(1;[¥>定位子目錄塊,依據HTML標簽<a>和</a>識別子目錄塊中的超鏈接,并抽取超鏈接的title屬性值,表示為sCi,所有超鏈接的title屬性值的集合表示為IscJm,其中m表示子目錄塊中超鏈接的個數;子目錄塊中超鏈接title屬性值的集合IscJm與目錄頁面標題ct形成上下位關系集Ksci,ct>}m,其中〈sCi,ct>表示第i個上下位關系,SCi表示下位實體,ct表示上位實體,最后將Ksci,ct>m加入HRSJPHRS=HRSUKsci,ct>}m;[0082]第2.1.4步:依據HTML標簽〈divid="mw-pages;/>和</div>定位子頁面塊,依據HTML標簽<a>和</a>識別子頁面塊中的超鏈接,并抽取超鏈接的title屬性值,表示為sai;所有超鏈接的title屬性值的集合表示為{sajn,其中η表示子頁面塊中超鏈接的個數;子頁面塊中超鏈接title屬性值的集合IsaJn與目錄頁面標題ct形成上下位關系集KsaiOlm,Sai表示下位實體,ct表示上位實體,最后將KsaiOlmWAHRSJPHRS=HRSUKsai,ct>}n;[0083]第2.1.5步:依據HTML標簽〈divid="麗-normal-catlinks">和〈/(1;[¥>定位父目錄塊,依據HTML標簽<a>和</a>識別父目錄塊中的超鏈接,并抽取超鏈接的title屬性值,表示為fCi,所有超鏈接的title屬性值的集合表示為{fcjk,其中k表示父目錄塊中超鏈接的個數;目錄頁面標題ct與父目錄塊中超鏈接title屬性值的集合{fCi}k形成上下位關系集Kct,fCi>}k,ct表示下位實體,表示上位實體,最后將{〈ct,fCi>}k加入HRS,即HRS=HRSU{〈ct,fc)},。[0084]這些步驟的流程如圖3所示,比如基于圖6即可以得到表1左側所示的上下位關系集合。[0085]請參閱圖4所示,導航表格中抽取上下位關系的步驟為:[0086]第2.2.1步:針對每個包含導航表格的頁面,根據導航表格的HTML標簽〈tableclass="navbox">和〈/table〉,定位每個表格的起始位置和結束位置;[0087]第2.2.2步:根據導航表格標題字體的格式〈fontstyle="font-size:110%;/>和〈/font〉,識別導航表格的標題title;[0088]第2.2.3步:在表格范圍內根據是否存在HTML標簽〈tableclass="nowrapIinkscollapsiblecollapsednavbox-subgroup">判斷表格下面是否嵌套子表格,如果嵌套則抽取每個子表格STi的標題Subti并執(zhí)行HRS=HRSU?title,subti〉},針對每個STi重復執(zhí)行第2.2.3步;如果不包含子表格則執(zhí)行第2.2.4步;[0089]第2.2.4步:導航表格由兩列組成,根據HTML標簽<thclass="navbox-group">和</th>抽取導航表格第I列的實體,形成實體集合{group_entityju,其中u是導航表格的行數,然后組合title與{group_entityJu形成上下位關系集合{〈title,group—entityiWu,并將{〈title,group+entity^u加入到HRS,即HRS=HRSU{<title,group_entityi>}u;[0090]第2.2.5步:針對抽取導航表格第2列的每個元素,分別根據是否存在HTML標簽〈tableclass="nowrapIinksnavbox-subgroup">和〈tableclass="nowrapIinkscollapsibleautocollapsenavbox-subgroup">判斷是否嵌套sub_group和sub_box兩種子表格,如果嵌套則迭代執(zhí)行第2.2.4步并添加到HRS中,否則根據HTML標簽〈tdciass="navbox-listnavboxhlist">和〈td>解析得到列表中的實體集合{list_entitgj}v,其中v表示列表中實體的個數,然后組合group_entityi與{list_entityj}v,形成上下位關系集合{<groupJ::KtIty1.1istj;;utitIjj>}^F并將{<groi屮J.nfif,.!isfj.?ififj>}]=、加入至IjHRS,即HRS=HRSu{<groupjutiiijj.JiStsnfiiyj[0091]這些步驟的流程如圖4所示,比如基于圖7即可以得到表1右側所示的上下位關系集合。[0092]表1中每個ID對應一個上下位關系,分別由上位實體和下位實體組成。[0093]表1從目錄頁面及導航表格中得到的上下位關系集合[0094]【權利要求】1.一種從維基百科半結構化數據自動構建分類樹的方法,其特征在于,包括以下步驟:第I步、半結構化數據的抽取:通過分析獲取到頁面的HTML,識別出含有半結構化數據的頁面,所述半結構化數據指維基百科目錄頁面及維基百科條目頁面中的導航表格;第2步、半結構化數據中上下位關系的抽取:抽取維基百科目錄頁面中上下位關系和導航表格中上下位關系;第3步、源于不同半結構化數據的上下位關系融合:依據抽取到的上下位關系集構建向有向無權簡單圖,然后基于圖的深度優(yōu)先遍歷算法生成分類樹。2.根據權利要求1所述的一種從維基百科半結構化數據自動構建分類樹的方法,其特征在于,第I步具體包括以下步驟:第1.1步:從維基百科網站首頁WWW.wikipedia.0rg開始,通過解析頁面的超鏈接逐層爬取所有頁面,依據頁面URL前綴“http://en.wikipedia.0rg/wiki/”獲取條目頁面,依據URL前綴“http://en.wikipedia.0rg/wiki/Category:”獲取目錄頁面,每個頁面對應一個實體,頁面標題為該實體的名字;第1.2步:根據條目頁面是否含有HTML標簽〈tableclass="navbox">,篩選出含有導航表格的條目頁面。3.根據權利要求1所述的一種從維基百科半結構化數據自動構建分類樹的方法,其特征在于,第I步具體包括以下步驟:1):通過Web頁面爬取工具爬取維基百科首頁http://www.wikipedia.0rg/并進行解析,然后依據HTML標簽<a>和</a>找出該頁面中的所有匹配模式http\:VV[a_z]+\.wikipedia\.0rgV的超鏈接,記為{head_linkjn,其中η表示所有不同語言的維基子網站數目;每個這樣的超鏈接heacLlinki對應一種語言的維基百科子網站,并且是該子網站的首頁,枚舉每個維基子網站首頁的超鏈接head_lInki;2):構建空的哈希表1fi1.s/lSe+/=I,該哈希表用來記錄某個頁面是否已經被爬取過,使用頁面的URL地址來標識不同的頁面;3):設置當前爬取頁面地址為當前維基子網站首頁,current-1ink=IieadJinki;4):在HashSet查詢current_link,如果命中,表明頁面已經被爬取過,貝U不再爬取跳轉到第8步;如果該頁面沒有爬取過,則通過Web頁面爬取工具爬取該頁面,并將該鏈接加入到HashSet中,即執(zhí)行HashSet.add(current_link);5):如果該頁面URL前綴是“http://en.wikipedia.0rg/wiki/Category:”,則保存該頁面到ArticleSet,并跳轉到第7)步;6):如果該頁面URL前綴是“http://en.wikipedia.0rg/wiki/”,進一步判斷該條目頁面是否含有HTML標簽〈tableclass="navbox">,如有則保存該頁面到CategorySet;7):解析該頁面,依據HTML標簽<a>和</a>找出該頁面中的所有超鏈接{hyperlinkjm,將所有這些超鏈接壓入超鏈接棧LinkStack中,即LinkStack.pushAll({hyperIinkJJ;8):如果LinkStack不為空,current_link=LinkStack.popO,跳轉到第4步;如果LinkStack為空,退出。4.根據權利要求1所述的一種從維基百科半結構化數據自動構建分類樹的方法,其特征在于,第2步中目錄頁面中上下位關系的抽取包括以下步驟:第2.1.1步:解析目錄頁面的HTML結構,根據頁面HTML標簽定位目錄頁面的邏輯塊,包括標題塊、子目錄塊、子頁面塊及父目錄塊,邏輯塊中的每個超鏈指向的頁面表示一個實體,定義上下位關系集HRS,并設if/?<S=|;;第2.1.2步:依據HTML標簽〈hlid="firstHeading">和</hl>定位標題塊,解析標題塊中標簽〈span〉和〈/span〉得到目錄頁面的標題,表示為ct;第2.1.3步:依據HTML標簽〈divid="mw-subcategories">和〈/(1;[¥>定位子目錄塊,依據HTML標簽<a>和</a>識別子目錄塊中的超鏈接,并抽取超鏈接的title屬性值,表示為sCi,所有超鏈接的title屬性值的集合表示為IscJm,其中m表示子目錄塊中超鏈接的個數;子目錄塊中超鏈接title屬性值的集合IscJm與目錄頁面標題ct形成上下位關系集Ksci,ct>}m,其中〈sCi,ct>表示第i個上下位關系,SCi表示下位實體,ct表示上位實體,最后將KscPctw1JnTVHRSJPHRS=HRSU{〈SCi,Ct>}m;第2.1.4步:依據HTML標簽〈divid="mw-pages">和</div>定位子頁面塊,依據HTML標簽<a>和</a>識別子頁面塊中的超鏈接,并抽取超鏈接的title屬性值,表示為sai;所有超鏈接的title屬性值的集合表示為{sajn,其中η表示子頁面塊中超鏈接的個數;子頁面塊中超鏈接title屬性值的集合IsaaJn與目錄頁面標題ct形成上下位關系集KsaiOlm,Sai表示下位實體,ct表示上位實體,最后將KsaiOlmWAHRS即HRS=HRSUKsai,ct>}n;第2.1.5步:依據HTML標簽〈divid="mw-normal-catlinks">和〈/(1;[¥>定位父目錄塊,依據HTML標簽<a>和</a>識別父目錄塊中的超鏈接,并抽取超鏈接的title屬性值,表示為fci;所有超鏈接的title屬性值的集合表示為{fcjk,其中k表示父目錄塊中超鏈接的個數;目錄頁面標題ct與`父目錄塊中超鏈接title屬性值的集合{fCi}k形成上下位關系集{〈ct,fc^k,ct表示下位實體,fcj表示上位實體,最后將{〈ct,?^>}1?加入HRS即HRS=HRSUKctfciMk。5.根據權利要求1所述的一種從維基百科半結構化數據自動構建分類樹的方法,其特征在于,第2步中導航表格中上下位關系的抽取包括以下步驟:第2.2.1步:針對每個包含導航表格的頁面,根據導航表格的HTML標簽〈tableclass="navbox">和〈/table〉,定位每個表格的起始位置和結束位置;第2.2.2步:根據導航表格標題字體的格式〈fontstyle="font-size:110%;/>和〈/font〉,識別導航表格的標題title;第2.2.3步:在表格范圍內根據是否存在HTML標簽〈tableclass="nowrapIinkscollapsiblecollapsednavbox-subgroup">判斷表格下面是否嵌套子表格,如果嵌套則抽取每個子表格STi的標題Subti并執(zhí)行HRS=HRSU{〈title,subt^},針對每個STi重復執(zhí)行第2.2.3步;如果不包含子表格則執(zhí)行第2.2.4步;第2.2.4步:導航表格由兩列組成,根據HTML標簽<thclass="navbox-group">和</th>抽取導航表格第I列的實體,形成實體集合{group+entityJu,其中u是導航表格的行數,然后組合title與{group_entityJu形成上下位關系集合{〈title,group_entityi>}u,并將{〈title,group—entityi〉}。加入至IjHRS,即HRS=HRSU{〈title,group_entityi>}UJ第2.2.5步:針對抽取導航表格第2列的每個元素,分別根據是否存在HTML標簽〈tableclass="nowrapIinksnavbox-subgroup>^B〈tableclass="nowrapIinkscollapsibleautocollapsenavbox-subgroup!f>判斷是否嵌套sub_group和sub—box兩種子表格,如果嵌套則迭代執(zhí)行第2.2.4步并添加到HRS中,否則根據HTML標簽<tdclass="navbox-listnavbox-oddhlist">和〈td>解析得到列表中的實體集合{list—entityj}v,其中v表示列表中實體的個數,然后組合group—eIitityi與{list—entity」.}v形成上下位關系集合6.根據權利要求1所述的一種從維基百科半結構化數據目動構建分類樹的方法,其特征在于,第3步源于不同半結構化數據的上下位關系融合具體包括以下步驟:第3.1步:構建一個有向無權簡單圖G=(VE),其中V表示實體集合,E表示實體間的上下關系,開始G為空;第3.2步:從HRS中取出一個上下位關系ei=〈hypo,hyper〉eHRS,同時執(zhí)行HRS=HRS-{ej;第3.3步:判斷在V中某個下位實體與hypo是否等價;如果不存在等價實體,則將hypo加入V,V=VU{hypo};第3.4步:判斷在V中某個上位實體與hyper是否等價;如果不存在等價實體,則將hyper加入VV=VU{hyper};第3.5步:如果hyper或hypo任何一個在V中不存在等價實體,則將Oi作為G的一條新的邊,即E=EU{ej;第3.6步:執(zhí)行第3.2步,直到HRS為空;得到有向無權簡單圖G;第3.7步:根據實體rooteV及G,通過有向無權簡單圖G的深度優(yōu)先遍歷得到以root為根的分類樹T=(V,E',root),其中CKPd7.—種從維基百科半結構化數據自動構建分類樹的方法,其特征在于,包括以下步驟:第I步、半結構化數據抽取:維基百科中的半結構化數據包括目錄頁面和導航表格,首先根據URL地址前綴的不同,從維基百科網站www.wikipedia.0rg所有頁面中識別出維基目錄頁面與維基條目頁面;進一步根據條目頁面是否包含HTML標簽〈tableclass="navbox">找出包含導航表格的條目頁面;第2步、半結構化數據中上下位關系hypernym/hyponymrelation抽取:首先,解析目錄頁面的HTML結構,得到頁面不同的邏輯塊,依據邏輯塊之間的布局關系獲取目錄頁面內所包含的實體間的上下位關系;其次是解析導航表格,得到表格的邏輯結構及所包含的實體,然后根據邏輯結構獲取表格中實體間的上下位關系;第3步、源于不同半結構化數據的上下位關系融合:首先是依據第2步得到的上下位關系集合HRS構建一個有向圖G=(V,E),其中V表示一個實體集合,E表示實體間的上下位關系;其次是根據實體rooteV及G生成以root為根的分類樹T=(V',E',root),其中rCV,EfCE。【文檔編號】G06F17/30GK103778238SQ201410040234【公開日】2014年5月7日申請日期:2014年1月27日優(yōu)先權日:2014年1月27日【發(fā)明者】劉均,魏筆凡,馮博琴,鄭慶華,馬健,王晨晨,吳蓓申請人:西安交通大學