孫 樂,方自金
(1.河北大學 管理學院,河北 保定 071002;2.國家圖書館參考咨詢部,北京 100081)
基于互聯(lián)網(wǎng)的信息采集系統(tǒng)的設計與實現(xiàn)
孫 樂1,方自金2
(1.河北大學 管理學院,河北 保定 071002;2.國家圖書館參考咨詢部,北京 100081)
互聯(lián)網(wǎng)資源越來越豐富,而從中獲取所需要信息的難度卻越來越大。本文介紹了一種在 NET環(huán)境下開發(fā)的信息自動采集系統(tǒng),有效地提高了情報人員獲取指定信息的速度和準確性,為以后信息的進一步加工和分析,打下了良好的基礎。
信息采集;正則表達式;中文分詞
隨著 Internet的普及與發(fā)展,網(wǎng)絡已經(jīng)深入到了人們生活的各個方面,成為經(jīng)濟、文化、社會、教育以及娛樂等幾乎所有領域的重要組成部分。同時,網(wǎng)絡也以驚人的速度在全球蔓延,據(jù)統(tǒng)計,全球目前網(wǎng)頁數(shù)已經(jīng)超過 200億,并每天以數(shù)百萬張的速度在增長,在如此浩瀚的信息海洋中尋找自己需要的資源,無疑是大海撈針。
雖然現(xiàn)在搜索引擎技術的發(fā)展日新月異,提供了很多種便捷的搜索方法,但由于各種原因,專業(yè)情報人員并不能通過百度、Google等搜索引擎迅速獲取并掌握與自己所關心領域密切相關的所有資源。為此,就需要有一個專門的互聯(lián)網(wǎng)信息采集工具來幫助情報人員獲取所關心的信息。
IEEE Std 1003.1(2004 Edition)對正則表達式的定義為:“正則表達式是一種上下文無關的語法,它能夠表達各種各樣的字符集合以及集合中字符的順序,并且這些字符集是按照當前語言 /區(qū)域設置被解釋的”。除此之外,對于正則表達式,還有其他一些定義,當前比較正式的定義主要有:“正則表達式是一種語言,它可以明確描述文本字符串中的模式”、“正則表達式是用來描述字符串模式的符號”、“正則表達式是一個字符串,它按照特定的語法規(guī)則描述或匹配字符串集”等等。
正則表達式提供了一種從字符集合中搜尋特定字符串的機制,它可以讓用戶通過使用一系列的特殊字符構(gòu)建匹配模式,然后把匹配模式與數(shù)據(jù)文件、程序輸入等目標對象進行比較,根據(jù)目標對象中是否包含匹配模式,執(zhí)行相應的程序。因此,正則表達式恰恰適應了讀者從互聯(lián)網(wǎng)上海量信息中準確提取有效信息的要求。
正則表達式有以下幾個主要功能:數(shù)據(jù)有效性驗證功能,用于測試字符串的某個模式是否有效;替換文本功能,用于在文檔中使用匹配模式來標識特定文字,然后將其刪除或進行替換;提取子字符串功能,用于根據(jù)模式匹配,從字符串中提取一個子字符串。
它主要有四類字符:首先是匹配字符,包含了需要搜索匹配的對象;其次是重復操作符,描述了查找一個特定字符的次數(shù);還有錨字符,它指定了所要匹配的格式,有“$”、“^”等;另外有一些保留字符,需要用反斜杠來替換它們,比如 “ (”號,是個保留字符,如果要在表達式里表示這個特定的字符,就得用 “ (”這種形式。
漢語不同于英語,詞與詞之間沒有明顯的界限進行分割,因此,有效的信息采集就必不可回避有效的分詞。然而,對于漢語的分詞一直是中文信息處理中的熱點和難點。目前,中文分詞的傳統(tǒng)方法是基于詞典的分詞,也就是將文章中的詞與詞典進行對照,從而找出描述詞。在此基礎上,出現(xiàn)了很多種分詞方法,如在文本的掃描順序上有正向掃描、逆向掃描、正向逆向掃描等,在匹配原則上有最長匹配、最常匹配等原則。但是這些方法都沒有從根本上解決歧義詞的問題,而且使用詞典匹配法,不容易發(fā)現(xiàn)某領域中最新出現(xiàn)的知識。由此,產(chǎn)生了無詞典分詞方法,讓計算機決定去拆分哪些詞,其基本原則是,如果一個詞在文章中重復出現(xiàn),那么這個詞便是一個有意義的詞。本文所介紹的系統(tǒng)就是基于這樣的思想,利用后綴數(shù)組算法來對文章進行無詞典拆分和標引的。
(一)后綴數(shù)組
后綴數(shù)組是作為一種文本索引結(jié)構(gòu)提出的,這種結(jié)構(gòu)記錄了一個字符串中各后綴的字典序索引,通過對字符串的編碼,可以利用后綴數(shù)組進行字符串集序列的處理。Manber和Myers給出了一個利用 O(N)的額外空間,在O(N lgN)時間內(nèi)同時構(gòu)造出后綴數(shù)組及最長公共前綴信息數(shù)組 LCP(language conversion program)的算法。通過這種方法,可以將一個字符串中所有的后綴取出,并得到這些后綴的公共前綴的長度,從而為基于后綴數(shù)組的分詞做準備。
(二)基于后綴數(shù)組的無詞典分詞算法
將字符串的后綴全部取出后,得到后綴數(shù)組 SA,按字母順序進行排序,并得到后綴數(shù)組的最長公共前綴數(shù)組LCP,最后將這些后綴字符串兩兩比較,得到第一次分詞的結(jié)果。此次結(jié)果可能會出現(xiàn)很多重復字符串,并會出現(xiàn)有的字符串是另外字符串子串的現(xiàn)象。
在此基礎上,算出結(jié)果中每個詞在文中的詞頻,并得到詞與詞之間的置信度 (confidence(W2,W1) =TF(W2)/TF(W1),其中 TF(W2)是詞W2的詞頻,TF(W1)是詞W1的詞頻),令置信度的上限為 0.9,下限為 0.3,若置信度高于 0.9,則可以去除W1,若置信度低于 0.3,則可以去除W2。經(jīng)過這樣處理后,就可以把文章中的詞抽取出來了。
現(xiàn)在越來越多的網(wǎng)站使用動態(tài)頁面來顯示文章內(nèi)容,在這種情況下,每個網(wǎng)站所顯示的文章內(nèi)容,在網(wǎng)頁上的格式基本上是一致的,這就給應用正則表達式采集網(wǎng)頁信息提供了很好的保證。每個網(wǎng)站只要設置固定的幾個正則表達式,就可以獲取相應的信息,通過中文自動分詞技術,取出相應的關鍵詞,并將采集結(jié)果和相關標引信息以一定的格式存入數(shù)據(jù)庫中。整個程序的工作流程如圖 1所示。
圖 1 系統(tǒng)工作流程
(一)采集處理
在進行網(wǎng)絡采集的工作中,系統(tǒng)應用了 NET框架的HttpWebRequest對象發(fā)送請求,使用 HttpWebResponse對象獲取服務器返回數(shù)據(jù)流。并實現(xiàn)了一個WebQuery類,將這兩個對象封裝起來,提供 Post方法和 Get方法的請求,返回服務器數(shù)據(jù)。
首先,獲取指定網(wǎng)站 URL,如果該網(wǎng)站需要登錄,那么可以通過預先設定好的用戶名和密碼,登錄網(wǎng)站,并保存 Session。
其次,請求該網(wǎng)站指定文章列表頁面的 URL,并獲取文章列表頁面的 HT ML編碼,通過正則表達式處理,得到每篇文章鏈接的URL,放入數(shù)組中。
最后,對數(shù)組中的 URL地址,分別請求,獲取文章詳細頁面的 HT ML編碼,并利用正則表達式,分離出標題、日期、來源、全文等信息。
過程如下:
(二)后處理
得到采集結(jié)果后,需要對采集結(jié)果進行分詞標引等后處理,目的是將文章中有意義的詞標引出來,提高檢索的準確性,以及方便對檢索結(jié)果進行進一步的聚類處理。
自動分詞的過程采用了基于后綴數(shù)組的無詞典分詞算法,在沒有任何詞典數(shù)據(jù)輔助的情況下,對新聞的標題和全文進行了分詞處理。一般地文章的標題最能夠反映作者的意愿,所以,在分詞的過程中,對于標題和全文都涉及到的詞,標注為首選關鍵詞,對于標題中沒有而全文中有的詞標注為次要關鍵詞,并統(tǒng)一存放在數(shù)據(jù)庫中。這樣做的目的,一方面在檢索時,先檢索首選關鍵詞,并將結(jié)果顯示出來,再檢索次要關鍵詞,這樣可以提高檢索的速度,還可以將最相關的文章排列在前面,便于用戶查看;另一方面,在進行聚類處理時,對于首先關鍵詞,可以加以高一點權(quán)重,使聚類結(jié)果更加準確。
主要處理方法分為兩步,首先將全文的所有后綴取出,并按字母順序排列,形成后綴數(shù)組 SA,計算最長公共前綴數(shù)組 LCP。
其次,進行取詞操作,依據(jù) LCP[i]來進行計算,代碼如下:
本系統(tǒng)在實際使用的過程中,取得了較好的效果。程序可以根據(jù)用戶的定制,定期采集指定網(wǎng)站的新聞信息,通過自動排重功能,只保留最新的信息,并對采集回本地的信息自動標引,但還有下面幾個問題有待改進。
(一)運用 AJAX技術網(wǎng)站的處理
AJAX技術是網(wǎng)頁數(shù)據(jù)的異步傳輸技術,采用該技術后,頁面的提交和返回方式發(fā)生了改變。不再是提交和返回完整的 HT ML頁面,而是通過AJAX引擎,提交并返回頁面中的一部分數(shù)據(jù)。這樣,所有的新聞詳細頁面的鏈接都隱藏在AJAX引擎中,直接使用正則表達式無法獲取詳細頁面的鏈接,也就無法得到該頁面的源文件字符串。增加對這種類型網(wǎng)站的特殊處理,將會大大提高軟件的采集范圍。
(二)同義詞、近義詞的處理
雖然軟件對文章進行了標引,并分配了不同的權(quán)重,但是在檢索時,同義詞和近義詞會被忽略。如 “土豆”和“馬鈴薯”,“番茄”和 “西紅柿”都是同義詞,但是在檢索中,如果用戶只按 “土豆”檢索,就得不到關于“馬鈴薯”的新聞。一個常用的方法是在檢索時,引入同義詞近義詞表,讓系統(tǒng)自動根據(jù)用戶輸入的檢索詞去查找相關詞,再去檢索,提高查全率。
(三)特殊文件格式的處理
網(wǎng)頁文檔格式有時也會包含一定的信息,如 DOC、PDF、PPT等,如果在網(wǎng)絡采集時按照格式進行標引,在檢索時分門別類地將不同的文件格式顯示出來,會更加方便用戶的使用。
(四)系統(tǒng)網(wǎng)絡架構(gòu)的改進
系統(tǒng)目前采用 C/S結(jié)構(gòu),用戶需要在機器上安裝該軟件才能使用,如果用戶數(shù)量過多,維護起來將會比較麻煩。使用 B/S、C/S結(jié)合的模式,采集引擎采用 C/S結(jié)構(gòu),分布在多個機器中,以減輕服務器的負擔。采集獲取的數(shù)據(jù)可以放在服務器中,并建立Web服務器,用戶只需要在瀏覽器中就可以進行檢索。這樣,不僅便于系統(tǒng)的維護,而且便于用戶使用。
互聯(lián)網(wǎng)上有海量的信息,但信息的無序排列給我們獲取和利用帶來了一定的難度,本文介紹的Web信息自動采集系統(tǒng),可以快速準確地獲取信息的原文,并以統(tǒng)一的數(shù)據(jù)庫格式存放,大大提高了情報人員獲取指定領域信息的效率和準確性,為信息的進一步分析挖掘提供了堅實的基礎。
[1]張米雅.利用 Net技術實現(xiàn) Web信息的采集 [J].科技信息,2006(5):135.
[2]程 沖,黃水清.利用正則表達式解析新聞網(wǎng)頁的算法研究 [J].農(nóng)業(yè)圖書情報學刊,2005(4):5-8.
[3]邵曉良,劉 紅.Web信息采集中軍事主題信息的識別 [J].情報技術,2004(7):14-16.
[4]吳麗輝,王 斌,張 剛.一個個性化的 Web信息采集模型 [J].計算機工程,2005(22):86-88.
[5]朱 華.淺談網(wǎng)絡信息資源采集技術 [J].國家圖書館學刊,2004(2):38-40.
[6]張長利,郝楓林,左萬利.一種基于后綴數(shù)組的無詞典分詞方法 [J].吉林大學學報 (理學版),2004(4):548-553.
G202
A
1008-6471(2010)04-0126-02
2010-10-01
孫樂 (1978—),男,河北保定人,河北大學管理學院圖書館學 2008級在職碩士研究生;國家圖書館總務處館員。