<p> </p> <h3>1、研究背景及思路</h3> <p><b>研究目的:</b>經過提取URL的特徵信息對網頁做出準確的分類。</p> <p><b>研究現狀:</b>傳統對網頁分類的方法主要基於兩類特徵。第一類是頁面特徵;第二類是鄰居特徵,頁面特徵裏面又包括正文、錨文本、標題等等;可是這卻忽略了一個重要信息,頁面自身的連接信息,互聯網上任何一個頁面都是有一個惟一的標識,那就是它的連接。並且傳統分類方法分類速度慢、須要下載所有網頁、有些分類信息隱藏在圖片中等。經過搜索論文發現傳統上基於URL特徵網站分類方法,但願經過一個統一的方法解決互聯網上網站全部網址的分類問題,而且也提出了不少有效的方法,可是都沒有一種方法準確率會特別高。</p> <p><b>本文方法特色:</b>基於URL對網頁分類的優點不少。URL容易被人所記憶,良好的網站設計技術和編碼經過有用的詞彙將網頁的信息大量的說明,主題隱含在URL中也是常常可見。一個URL的時序依賴性、大小寫、特徵長度、以及URI組件特徵,對網頁分類都是有用的。本文提出一種基於需求的URL輔助法,該方法不企圖一次性解決互聯網全部分類的問題,經過嚴格的限制從而提升分類的精度。</p> <p><b>本文方法缺點:</b>嚴重依賴需求,嚴重依賴網站設計。</p> <p><b>特徵提取具體實施步驟:</b></p> <p>第一步:肯定客戶需求,明確客戶須要檢測的網站。</p> <p>第二步:肯定各個網站的導航網址,判斷網站是否適合經過URL來進行分類。</p> <p>第三步:指定網址地圖分類塊抽取規則,提取各個分類對應的網址。</p> <p>第四步:保存分類信息。</p> <p><b>連接分類具體實施步驟:</b></p> <p>第一步:判斷連接是不是在需求範圍內,若是是執行第二步,若是不是執行第三步。</p> <p>第二步:判斷連接屬於哪一個分類,層層判斷,一直到沒法判斷那一層中止。</p> <p>第三步:提示連接不在需求範圍內,提取關鍵詞,根據關鍵詞匹配算法,爲此連接分配一個類,若是一個關鍵詞都沒能匹配,隨機分配一個類,而且提示錯誤信息。</p> <p><b>但願取得的成果:</b></p> <p>經過這種半自動化的方式,最終可以對需求範圍內的網頁完成比較高的主題分類。</p> <h3>2、具體實現</h3> <p><u>實現工程命名爲:urlparser</u> 。</p> <p>2.1工程簡介</p> <p>說明:<u>urlparser</u> 目的是經過整合全部需求網址網站導航的分類信息。</p> <p>例如新浪網:http://www.sina.com.cn/ 它的導航頁是:http://news.sina.com.cn/guide/</p> <p>提取導航頁全部分類錨文本以及連接,做爲樣本數據,下面會提到具體的樣本規則化的過程。</p> <p>這樣對於新的,經過計算距離哪一個樣本最近來肯定它的分類。</p> <p>本工程全部的包以 eshore.cn.it做爲前綴,表明廣州億迅IT部門。主要分爲四塊:</p> <p>data 用於處理數據,包括數據讀寫過濾。</p> <p>DataFilter.java 根據resource目錄中的filterwords.txt過濾數據</p> <p>DataLoader.java 加載數據,包括初始網站數據,提取以後的樣本數據加載</p> <p>DataWriter.java 數據持久化,包括提取到的樣本保存到data目錄下的keywords.txt</p> <p>KeyWord.java 樣本數據對應類</p> <p>SiteMap.java 網站對應類(包括網站主頁網址,網站導航網址,網頁分類塊選擇字符串)</p> <p>main 程序入口</p> <p>ParseStart.java 對於新的網站,提取樣本數據</p> <p>parser 關鍵邏輯代碼</p> <p>LabelRecognizer.java 連接類別識別類</p> <p>UrlParser.java 樣本數據提取類</p> <h4>2.2 工程使用</h4> <h5>2.2.1 添加樣本數據:</h5> <p>在sitemaps.txt中按照以下格式添加網站:</p> <p>```</p> <p>id,網站中文名,主頁網址,導航頁網址,分類塊選擇</p> <p>1,新浪網,http://www.sina.com.cn/,http://news.sina.com.cn/guide/,div#tab01 div.clearfix</p> <p>```</p> <p>必須保留第一行,每一列經過逗號隔開,每一列的意義如第一行所示。其中分類塊選擇字符串請查考<u>Jsoup</u> select 使用,具體網址以下:</p> <p>http://jsoup.org/</p> <p>主程序入口:eshore.cn.it.main.ParseStart.java</p> <p>程序會自動保存樣本數據到data目錄下的keywords.txt,具體格式以下:</p> <p>```</p> <p>id,<u>pid</u>,<u>url</u>,host,keywords,label</p> <p>1,-1,http://www.sina.com.cn/,www.sina.com.cn,,新浪網</p> <p>2,1,http://news.sina.com.cn/,news.sina.com.cn,,新聞</p> <p>3,2,http://news.sina.com.cn/china/,news.sina.com.cn,china,國內</p> <p>```</p> <p>第一列爲行惟一標識號,第二列爲父ID,當父ID不存在時就用-1表示。</p> <h5>2.2.2 自動新連接分類</h5> <p>主程序入口:eshore.cn.it.main.AutoRecognize.java</p> <p>修改String <u>url</u> 參數值,容許本程序便可獲得分類。</p> <h4>2.3 核心思想</h4> <h5>2.3.1 樣本關鍵詞如何提取?</h5> <p>主要是經過路徑分解錨連接,獲得一系列關鍵詞,好比:</p> <p>http://news.sina.com.cn/china/ 那麼關鍵詞就是<u>china</u></p> <p>具體算法代碼請看:UrlParser.java 中的 parseTextKeyWords方法。</p> <h5>2.3.2 新數據距離如何計算?</h5> <p>主要參考論文:基於URL特徵的網頁分類研究_李玄</p> <p>具體算法代碼請看:LabelRecognizer.java distance 函數。</p> <p>修改距離算法,能夠有效提升匹配精確度和效率。</p> <h3>3、測試結果</h3> <p>此次測試總共提取了155條新浪網不一樣連接的網址,下面是測試結果。</p> <p>共耗時:499 ms</p> <p>This test task number is: 155</p> <p>The self label is correct answer number is: 96</p> <p>The father label is correct answer number is: 122</p> <p>The ratio of self correct is: 61.935486%</p> <p>The ratio of father correct is: 78.70968%</p> <p>出錯的緣由有如下幾點:</p> <p>一、 人工錄入類別與網站有差別;</p> <p>二、網站自己分類有交叉,因此類別沒有徹底匹配,並不表明分類錯誤;</p> <p>三、程序距離計算還能夠提高,不過提高的空間應該不大,不然站外匹配精度必然更低,即泛華能力更差;</p> <p>四、還須要收集站外網址測試。</p>java