<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    1問題的提出
    2002年,中國大約有5000萬網頁和5萬個Web站點[1],而且網頁數量還在以驚人的速度遞增。這些海量網頁中蘊含著巨大的信息資源,如果能及時而又準確地處理這些網頁就相當于擁有了開啟Internet資源庫的鑰匙。網頁處理已經成為網絡信息資源處理過程中一個極為重要的部分。
    網頁處理首先需要分解出網頁中的有用信息單元和無效(或作用不大)單元,往往采用網頁清洗技術。
    所謂網頁清洗,就是從Web頁面中劃分出精確的信息單位,并根據Web頁面信息加工的后續應用的需求,將頁面中不需要的部分去除,將需要的部分提取出來。[2]
    網頁清洗主要分三步:首先是去除頁面中的注釋、腳本、樣式表等無關信息。然后再將頁面劃分為若干塊,包括文本塊、鏈接塊、圖像塊等。最后按照語義對各塊作進一步區分,如從文本塊中區分出廣告等非關鍵信息塊;從鏈接塊中區分相關鏈接塊、導航鏈接塊、廣告鏈接塊等不同內容。經過上述處理后,Web頁面在結構和語義上都被劃分為細粒度的信息塊,從而使后續的信息加工處理工作得以順利進行[3]。
    國內學者周源遠等人開發了一個實驗系統PageExtract來完成Web頁面的相關清洗工作[2]。但是由于網頁中包含的信息的形式多樣化,有文本、圖片、動畫、音頻、視頻等多種信息形式,以及網頁中存在嚴重的冗余與無序的現象,并且信息內容本身也是不斷更新的,使得網頁清洗算法繁雜、不易實現,其清洗結果也不能完全使人滿意。
    周源遠等人對隨機選取的744個Web頁面(頁面大小總和為7974KB)進行了網頁清洗測試。隨后,又從清洗的結果中隨機選取了100個頁面進行人工評分,分為三個等級:好(指頁面提取正確)、一般(指有少量一般性錯誤,但從整體上來看,可以接受)、差(指有嚴重錯誤或誤差較多,難以接受)。結果,得分為“好”、“一般”、“差”的文本塊網頁分別為31%、50%、19%。也就是說,高達19%的清洗結果是完全不能接受的[2]。
    ??? 本文將提出一種專用于新聞網頁的正則表達式解析網頁的算法。這種算法避開了網頁清洗技術的缺陷,簡便易行,效率很高,準確性也很高。
    2新聞網頁的特征以及結構分析
    新聞網頁是具有很強開發價值的一類網頁,它具有時效性強、信息量大、結構穩定、更新快、需求廣泛、實用價值高等特點。考慮到這些特點,對新聞網頁的處理如果按照傳統的網頁解析方法,不僅效率低,效果也不會理想。
    ??? 而有一類新聞網頁更為特殊也更具有代表性,它們是各大門戶網站或新聞網站用來提供用戶檢索新聞之用的新聞頁面,這類新聞頁面包含符合檢索條件的若干條新聞記錄,這些條新聞記錄有標題、文摘、出處以及超鏈,可以用來指引用戶查閱新聞全文。這類新聞網頁其實就是各大網站給自己站內的所有新聞網頁編的“索引”,能起到很好的說明和指示的作用。因此,只要能處理好這類有關某一主題的新聞網頁,實際上就等于處理了絕大部分的與這一主題相關的網頁新聞。
    ?? 由于這些網頁在各大網站所起的作用相似,而且功能相近,所以這類網頁的結構相當穩定,而且不會受到某一個具體網站的約束,適用于大批量地統一處理。比如新浪網和搜狐網,百度網等新聞網頁就基本一樣。下面是新浪網站一個新聞網頁的實際例子:
    <html>……<head>……</head><body>
    <ul class=l15><a href="<!---qubo debug 分類=科技:大眾科技--->
    ?</ul>
    <ul class=l15><a href="
    <!---qubo debug 分類=汽車--->
    ?</ul>
    ………
    <ul class=l15><a href="
    ?

    ??? 可見,這類網頁具有非常明顯的結構特征,對此結構展開如下:(略)
    ?
    可以看出,這類網頁的結構很清晰,而我們所需要的也就是那些一個個新聞信息單元里面的內容。為此,我們完全不需要按照傳統的解析網頁的方法來一步步地細化網頁,而只要把<ul class=115>…</ul>這些信息單元直接匹配出來即可,而且這些信息單元里面同樣也是結構化的,下面就是某一個<ul class=115>…</ul>片斷:
    <ul class=l15><a href="
    > <font class=f15>背景資料:先進的攀巖工具SRT</font></a><font color=#333333><i>2001/04/13 15:56</i></font><br>…最大問題,這次中外聯合科考隊將使用目前世界上最先進的攀巖工具SRT。<b> </b>SRT包括上升<b> </b>下降手柄等一系列工具組成,攀巖者通過它借助自身的.
    <!---qubo debug 分類=科技:大眾科技--->
    ?</ul>
    ?

    對這些結構化的信息單元進行再匹配就能得到每條新聞的所有重要信息,可以構成一個完整的新聞元數據:
    新聞的超鏈:“http://tech.sina.com.cn/o/62874.shtml”
    新聞的標題:“背景資料:先進的攀巖工具SRT”
    新聞的時間或出處:“2001/04/13 15:56”
    新聞的文摘:“...最大問題,這次中外聯合科考隊將使用目前世界上最先進的攀巖工具SRT。SRT包括上升,下降手柄等一系列工具組成,攀巖者通過它借助自身的.”
    而上面的每條新聞的元數據則是進行進一步信息重組和知識再現的最好素材。所以整個解析思路的核心就是直接匹配。而正則表達式完全具備了解釋上述新聞元數據的匹配功能。因此,可用正則表達式來實現相關解析工作。
    3正則表達式簡介
    神經生理學家McCulloch 和 Pitts最早用正則表達式來描述神經網絡。1956年,數學家 Stephen Kleene 在此基礎上,發表了一篇題名為《神經網事件的表示法》的論文,引入了正則表達式的概念。正則表達式就是用來描述他稱之為“正則集的代數”的表達式。隨后,人們發現可以將此表達式應用于使用Ken Thompson 的計算搜索算法的一些早期研究。正則表達式的第一個實用應用程序就是 Unix 中的qed 編輯器。
    正則表達式提供了一種從字符集合中搜尋特定字符串的機制[4]。它可以讓用戶通過使用一系列的特殊字符構建匹配模式,然后把匹配模式與數據文件、程序輸入等目標對象進行比較,根據目標對象中是否包含匹配模式,執行相應的程序[5]。
    正則表達式有以下幾個主要功能:數據有效性驗證功能,用于測試字符串的某個模式是否有效。例如,可以對一個輸入字符串進行測試,看此字符串是否符合email的模式。替換文本功能,用于在文檔中使用匹配模式來標識特定文字,然后將其刪除或進行替換。提取子串功能,用于根據模式匹配,從字符串中提取一個子字符串。
    它主要有四類字符:首先是匹配字符,包含了需要搜索匹配的對象。例如,“.”號匹配任一字符,“[]”號匹配方括弧之間的任一字符,“[^]”號匹配不在方括弧之間的任一字符。其次是重復操作符,描述了查找一個特定字符的次數。例如,“?”號匹配某一部分一次,“*”號匹配某一部分多次,“+”號匹配某一部分一次或多次,還有“{n}”,“{n,N}”等符號。還有錨,它指定了所要匹配的格式,有“^”、“$”、“\>”、“\<”、“\b”等。當然還會有一些保留字符,需要用反斜杠來替換它們,比如“*”號,是個保留字符,如果要在表達式里表示這個特定的字符,就得用“\*”這種形式。
    4正則表達式來處理解析匹配工作的算法
    SUN公司最新發布的JDK1.4中加入了java.util.regex包,全面提供對正則表達式的支持。而且Java.lang.String類中的replaceAll和split函數也是調用的正則表達式來實現的。正則表達式可以利用模式匹配找到符合條件的字符串以及判斷相關字符串。java.util.regex包中有三個類:Pattern類,Matcher類以及異常類patternSyntaxException。Pattern類主要是按照正則表達式的語法,針對要匹配的對象構造正則表達式。所構造的表達式必須是唯一的完全匹配。Matcher類主要是用構造好的Pattern來匹配所要處理的對象,異常類則用來處理表達式可能出現的語法錯誤等情況[6]。
    下面給出在Java語言里運用正則表達式進行匹配的幾個比較簡單的例子。
    1)字符串匹配,這是不符合條件的,匹配不成功。
    ?p = Pattern.compile("ac*b");
    ?m = p.matcher("bcaaab");
    ?b = m.matches();
    2)字符串匹配,這是符合的條件的,匹配成功。
    p = Pattern.compile("cd*b");
    ?m = p.matcher("cdaaaab");
    ?b = m.matches();
    3)字符串替換,操作成功。
    ?p = Pattern.compile("ab");
    ?m = p.matcher("aaaaab");
    ?s = m.replaceAll("d");
    對于前面所討論的新聞網頁,所構造的正則表達式需要完成兩項任務。首先是從整個網頁中匹配所有的<ul class=115>…</ul>單元,然后就是把每一個信息單元中代表新聞的字段(新聞的標題、新聞的文摘、新聞的超鏈以及新聞的出處等)從每個單元中解析出來,并作為一個完整的知識單元存入數據庫中。所以每項任務都需要構造一個Pattern。
    第一個pattern是:
    Pattern p=Pattern.compile("<ul([^>]*)>(.*?)</ul>",Pattern.MULTILINE | Pattern.DOTALL)
    ?

    就是能把每個<ul class=l15>…</ul>單元從整個網頁里面取出,<ul([^>]*)>(.*?)</ul> ,其中,“<ul”表示匹配單元必須以此開頭,“([^>]*)”表示匹配的是除字符“>”以外的任意多字符,然后以”>”結束,這樣就能找到相關的單元開始,剩下的就是只取一個單元。“(.*?)”表示任意多字符,“</ul>”表示以此標識結束。這樣就很簡單的匹配到一個個<ul class=l15>…</ul>單元。“Pattern.MULTILINE”表示可以多行匹配,“Pattern.DOTALL”表示對大小寫不敏感。
    第二個pattern就是解析出每個單元里面我們所需要的元數據的字段。即新聞的超鏈等字段。
    Pattern p1 = Pattern.compile("<a href=\"([^\"]*)\".*<font class=[^>]*>(.*)</font></a>.*<font color=[^>]*><i>(.*)</i></font><br>(.*).*", Pattern.MULTILINE | Pattern.DOTALL)
    ?

    筆者還對其它門戶網站的新聞網頁結構進行了分析,發現它們都具備與新浪網站的新聞網頁相似的結構。比如,搜狐網站的新聞網頁就是由一個個<span class=blank>…</span>單元組成的新聞記錄,每條新聞記錄里面也同樣包括新聞的標題、文摘、出處、超鏈等。而網易則是由一個個<li>…<p>單元組成的新聞記錄,記錄里面的結構也相似。因此門戶網站和新聞網站的這類網頁在結構上基本相同,只是細節上有略微的差別。所以對各個網站的這類網頁的解析算法都可采用正則表達式方式,區別只在于正則表達式的構造有所不同。
    5算法測評與應用實例
    ?? 筆者分別從新浪、搜狐以及百度網站各隨機抽取了267個、342個、327個(共936個頁面,頁面大小總和21546 KB)新聞網頁,對正則表達式法算法的解析結果進行測評。測評工作主要分為兩項:速度和準確度。
    對936個頁面用正則表達式進行批處理解析,共用時約18秒,平均每秒解析網頁52個,平均速度為1197KB/S,而周源遠等人研制的網頁清洗系統的解析速度為891KB/S[2]。顯然正則表達式算法由于是采用直接完全匹配的思路,運行速度上要強于網頁清洗解析網頁的算法。
    從上述936個頁面中隨機選取了250個頁面,對正則表達式算法解析的質量進行人工評分,分為三個等級:好(指頁面中所有相關主題的新聞記錄都被準確提取,每條新聞記錄中的各重要信息也被準確提取)、一般(指有少量一般性錯誤,新聞記錄有少量遺漏,或新聞記錄中的重要信息有少量錯誤,但整體可以接受)、差(指有嚴重錯誤或誤差較多,難以接受)。結果,得分為“好”、“一般”、“差”的網頁比例分別為78%、20%、2%。也就是說,此算法解析網頁的準確度在整體上有98%是可接受的,不可接受的僅為2%。之所以有這么高的準確度是因為在掌握網頁結構的前提下,算法對所處理的對象有很高的匹配成功率。但是仍然有2%的不可接受的結果,那是因為網頁間在結構上還是有差異的,比如像百度網的新聞網頁,網頁中的新聞記錄有時有圖片,有時沒有圖片,這給算法的編寫帶來了一定的難度,所以算法有進一步改善的可能。
    筆者已將上述正則表達式解析新聞網頁算法成功應用于自主開發的個性化網絡新聞定制系統中。系統工作在Windows 2000 Server操作系統和SQL Server 2000數據庫管理系統平臺,WEB服務器為Apache 2,前臺網站采用JSP(Java ServerPages)來處理,JSP引擎為resin2.1.6,后臺模塊采用Java語言編寫,Java虛擬機為JDK1.4,按照個性化信息服務的工作模式提供新浪、網易、搜狐三大門戶網站的新聞定制服務。當成為注冊用戶后,用戶就可以享受個性化新聞的定制服務。用戶進入相關頁面提交需要定制的新聞主題以及新聞提醒服務的形式,系統會定期按照用戶的需求,以網頁或郵件的形式把相關新聞信息推送給用戶。系統分為信息采集、信息處理、信息代理服務三個模塊,其中的信息處理模塊的功能就是采用正則表達式算法,對取回新聞檢索結果頁面進行處理,提取出系統所需新聞元數據,包括新聞標題、新聞來源、新聞時間、新聞文摘等字段。
    6 結束語
    本文在對新聞類網頁的特定結構進行分析后,研究出利用正則表達式來挖掘新聞網頁的新算法,它對網頁中的一個個新聞記錄單元進行解析匹配,獲得了很好的效果,解析效率高,速度快,而且程序編寫簡單。最重要的是它是中文信息處理的一種新思路,值得進一步深入研究。不過這種方法仍然存在很多問題,比如它要求被處理的網頁結構比較穩定,而且事先也要人工對網頁的結構進行分析,然后才能構造正則表達式,這樣算法就顯得不夠靈活。因此,該方法也存在適用面不廣,智能化不高的的局限性。但由于正則表達式的強大的解析、匹配的能力,以及研究尚處于初期,該算法仍然具有廣闊的前景

    posts - 2, comments - 2, trackbacks - 0, articles - 25

    Copyright © sunbaby

    free web counter
    free web counter 點擊發送消息給我
    主站蜘蛛池模板: 久久久久久亚洲精品不卡| 97久久国产亚洲精品超碰热| 黄色毛片免费观看| 人妻视频一区二区三区免费| 亚洲一区二区三区乱码A| 亚洲国产亚洲综合在线尤物| 四虎永久在线观看免费网站网址 | 亚洲∧v久久久无码精品| 亚洲AV无码一区二区三区久久精品| 国产在线精品免费aaa片| 国产亚洲一区二区精品| 无码av免费网站| 国产免费女女脚奴视频网| 亚洲国产综合无码一区| 少妇无码一区二区三区免费| 亚洲精品在线网站| 国产午夜不卡AV免费| 亚洲影院在线观看| AV片在线观看免费| 深夜a级毛片免费无码| 亚洲国产精品无码久久久不卡 | 久久国产免费观看精品| 日产亚洲一区二区三区| 我的小后妈韩剧在线看免费高清版 | 亚洲av日韩av综合| 国产无遮挡色视频免费视频| 国产日韩在线视频免费播放| 久久伊人久久亚洲综合| 免费观看a级毛片| 两个人看的www免费高清| 亚洲无人区视频大全| 国产伦一区二区三区免费| 中文有码亚洲制服av片| 亚洲国产精品成人| 97在线视频免费公开观看| 亚洲av午夜电影在线观看| 精品亚洲综合在线第一区| 成年在线网站免费观看无广告| 亚洲精品456人成在线| 中文字幕亚洲综合久久男男| 国产成人精品免费视频大|