本發(fā)明涉及基于超鏈文本密度算法的一種頁面類型識別方法,具體涉及該方法可很好的對小說目錄頁進行識別。
背景技術(shù):
網(wǎng)絡(luò)文學(xué)業(yè)務(wù)正在互聯(lián)網(wǎng)上迅速發(fā)展,互聯(lián)網(wǎng)的網(wǎng)民們也越來越依賴于在網(wǎng)絡(luò)上閱讀文學(xué)作品。在網(wǎng)絡(luò)上閱讀小說時,小說目錄頁是其中最為重要的一頁——該頁面給出了文章所有的章節(jié)列表,用戶可以最為方便的訪問所需的章節(jié)。圖1為《盤龍》在起點中文網(wǎng)上的小說目錄頁截圖。而對搜索引擎來說,在網(wǎng)頁處理時,對小說目錄頁進行識別是非常有必要,只有對這些網(wǎng)頁進行正確識別后,才能在用戶搜索相關(guān)文學(xué)作品名稱時,直接提供給網(wǎng)民對應(yīng)的小說目錄頁面,提高檢索結(jié)果的質(zhì)量。
目前,目錄型頁面的識別難點如下:
難點1:不同站點使用的html格式各不相同以三個小說站點上的小說目錄頁為例:【89文學(xué)】《盤龍》小說目錄頁:http://www.89wx.com/html/book/3/3426/list.htm?!緯x江文學(xué)】《櫻花尋》目錄頁:http://www.jjwxc.net/onebook.php?novelid=516262?!炯t袖添香】《邪少的貼心冷密》小說目錄:http://novel.hongxiu.com/a/106306/list.shtml。
以上三個站點的頁面,使用的html頁面排版布局、CSS模板、字體、字號、顏色等各不相同,無法使用簡單的使用模板匹配的方法進行小說目錄頁的識別。
難點2:網(wǎng)頁和url中均沒有明顯的小說目錄信息僅從url很難提取到小說目錄頁信息,例如:晉江文學(xué)–小說目錄http://www.jjwxc.net/onebook.php?novelid=516262和小說內(nèi)容頁:http://www.jjwxc.net/onebook.php?novelid=746511,從url來看,僅最后的數(shù)字不同,因此無法簡單通過url來進行區(qū)分另外,從頁面的文本內(nèi)容來看,沒有直接出現(xiàn)目錄、列表等關(guān)鍵詞,也難以直接獲取頁面類型信息。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的上述不足之處,本發(fā)明專利提出一種針對日文語言網(wǎng)頁的自動化識別方法,該方法可用于對所訪問的網(wǎng)頁,自動的判斷語言是否為日語。
本發(fā)明采取的技術(shù)方案如下:
基于超鏈文本密度算法的一種頁面類型識別方法,包括如下步驟,
第一步,獲取網(wǎng)頁數(shù)據(jù)體,所述網(wǎng)頁數(shù)據(jù)體是html源文件;
第二步,在html源文件中,尋找html tag標(biāo)簽“<a herf=”,對所有包含改標(biāo)簽的部分,將由“<a”開始,直到“</a>”結(jié)束的部分提取并保存在字符串verify_html_string[i]中;
第三步,對于第二步中的每一段verify_html_string[i],i=0,1,2,…,N;判斷是否存在html tag標(biāo)簽“<img”,如果存在html tag標(biāo)簽,則將該string從verify_html_string數(shù)組中剔除,即去除圖像類超鏈;
第四步,對第三步中的verify_html_string[i],提取超鏈本文信息,方法為:首先生成一個臨時棧stack,再從string頭部開始查找字符;
第五步,依次判斷文本anchor_text_string[i],取該文本的頭文字anchor_head_text和anchor_tail_text,若滿足:Anchor_head_text==“第”&&(anchor_tail_text==“章”||anchor_tail_text==“節(jié)”anchor_tail_text==“回”||anchor_tail_text==“話”),則標(biāo)記verify_html_tag[i]=true;否則為verify_html_tag[i]=false;
第六步,統(tǒng)計所有verify_html_tag==true的anchor字符串的下表i,得到i的列表verify_subscribe[s];
第七步,統(tǒng)計verify_subscribe的數(shù)量,計算
第八步,判斷當(dāng)verify_ratio>0.7或者num(verify_subscribe)>15時,當(dāng)前頁面為文學(xué)目錄頁。
所述第四步中涉及到的string頭部開始查找字符的處理過程為:當(dāng)出現(xiàn)“<”時,將該字符壓棧;當(dāng)出現(xiàn)“>”時,且棧頂元素為字符“<”時,將“<”彈棧;當(dāng)出現(xiàn)非“<”和“>”字符時,如果當(dāng)前棧頂元素為“<”,則忽略當(dāng)前字符,繼續(xù)沿字符串往前遍歷;當(dāng)出現(xiàn)非“<”和“>”字符時,如果當(dāng)前棧頂元素不是“<”,則將該元素壓入棧;當(dāng)掃描至verify_html_string結(jié)束后,將當(dāng)前Stack內(nèi)的所有文本彈出,并按順序存入字符串a(chǎn)nchor_text_string[i]中。
采用上述技術(shù)方案,本發(fā)明包括以下有益技術(shù)效果:
1.使用的html頁面排版布局、CSS模板、字體、字號、顏色等各不相同,可以使用簡單的使用模板匹配的方法進行小說目錄頁的識別。
2.可以簡單通過url來進行區(qū)分另外,從頁面的文本內(nèi)容來看,沒有直接出現(xiàn)目錄、列表等關(guān)鍵詞,可以直接獲取頁面類型信息。
附圖說明
圖1示例性示出了《盤龍》在起點中文網(wǎng)上的小說目錄的示例圖;
圖2示例性示出了本發(fā)明的流程示意圖。
具體實施方式
下面通過具體的實施例并結(jié)合附圖對本發(fā)明做進一步的詳細(xì)描述。
如圖2所示,本發(fā)明包括如下步驟:
1.獲取網(wǎng)頁數(shù)據(jù)體,即html源文件;
2.在html源文件中,尋找html tag標(biāo)簽“<a herf=”,對所有包含改標(biāo)簽的部分,將由“<a”開始,直到“</a>”結(jié)束的部分提取并保存在字符串verify_html_string[i]中;
3.對每一段verify_html_string[i],i=0,1,2,…,N;判斷是否存在html tag標(biāo)簽“<img”,如果存在,則將該string從verify_html_string數(shù)組中剔除,去除圖像類超鏈;
4.對verify_html_string[i],提取超鏈本文信息,方法為:首先生成一個臨時棧stack;再從string頭部開始查找字符,
4.1.當(dāng)出現(xiàn)“<”時,將該字符壓棧;
4.2.當(dāng)出現(xiàn)“>”時,且棧頂元素為字符“<”時,將“<”彈棧;
4.3.當(dāng)出現(xiàn)非“<”和“>”字符時,如果當(dāng)前棧頂元素為“<”,則忽略當(dāng)前字符,繼續(xù)沿字符串往前遍歷;
4.4.當(dāng)出現(xiàn)非“<”和“>”字符時,如果當(dāng)前棧頂元素不是“<”,則將該元素壓入棧;
4.5.當(dāng)掃描至verify_html_string結(jié)束后,將當(dāng)前Stack內(nèi)的所有文本彈出,并按順序存入字符串a(chǎn)nchor_text_string[i]中;
5.依次判斷文本anchor_text_string[i],取該文本的頭文字anchor_head_text,和anchor_tail_text,若滿足:Anchor_head_text==“第”&&(anchor_tail_text==“章”||anchor_tail_text==“節(jié)”anchor_tail_text==“回”||anchor_tail_text==“話”)則標(biāo)記verify_html_tag[i]=true;否則為verify_html_tag[i]=false;
6.統(tǒng)計所有verify_html_tag==true的anchor字符串的下表i,得到i的列表verify_subscribe[s];
7.統(tǒng)計verify_subscribe的數(shù)量,計算
8.判斷當(dāng)verify_ratio>0.7或者num(verify_subscribe)>15時,當(dāng)前頁面為文學(xué)目錄頁。
本發(fā)明提出的方法,能否解決不同類型的站點中,小說目錄頁面的多樣性問題,能很好的對小說目錄頁進行識別。
對于本領(lǐng)域的普通技術(shù)人員而言,具體實施例只是對本發(fā)明進行了示例性描述,顯然本發(fā)明具體實現(xiàn)并不受上述方式的限制,只要采用了本發(fā)明的方法構(gòu)思和技術(shù)方案進行的各種非實質(zhì)性的改進,或未經(jīng)改進將本發(fā)明的構(gòu)思和技術(shù)方案直接應(yīng)用于其它場合的,均在本發(fā)明的保護范圍之內(nèi)。