張文超 胡玉蘭
摘要 網絡信息數量的日益增加,對人們從中獲取有效信息的能力提出了更高要求。為了更好地響應用戶需求,提高信息處理效率并降低人力成本,基于PyQt進行全文搜索引擎平臺開發。采用模塊化思想設計網絡信息采集功能,然后將獲取的信息經數據處理后建立索引庫,采用PageRank算法對查詢響應結果進行排序,實現檢索器功能,并通過用戶的點擊決策,利用神經網絡對排序結果進行二次修正。最后,在界面輸入查詢字符串后,便可快速得到已排序的鏈接響應,從而能更好地反映用戶對檢索結果的感興趣程度,并提供個性化服務。
關鍵詞關鍵詞:全文搜索引擎;網絡信息采集;PageRank;PyQt
DOIDOI:10.11907/rjdk.181009
中圖分類號:TP319
文獻標識碼:A文章編號文章編號:16727800(2018)009013204
英文標題Development of FullText Search Engine Platform Based on PyQt
--副標題
英文作者ZHANG Wenchao, HU Yulan
英文作者單位(Institute of Information Science and Technology,Shengyang Ligong University,Shengyang 110159,China)
英文摘要Abstract:With the increasing of network information,people also have higher requirements on their ability to obtain effective information.In order to better respond to users'needs,improve the efficiency of information processing and reduce human resources,the function of network information collection is designed with the idea of modularizationfocusing on the hot technology of fulltext search engine,and the index database after the data is established and processed,then we use PageRank algorithm to implement the retriever function in the query response,and the ranking results are secondarily corrected by using the neural network through the user's click decision.At last, after the completion of the development of fulltext search engine system platform by using of PyQt, the query string is inputted in the interface and the sorted link response can be quickly obtained,which can better reflect the users' interest in the search results and provide personalized service.
英文關鍵詞Key Words:fulltext search engine;network information collection;PageRank;PyQt
0引言
隨著計算機與網絡技術的快速發展,每天的信息量呈爆炸式增長,搜索引擎應運而生。搜索引擎通過對互聯網上的信息資源進行采集、提取和組織處理,為用戶提供檢索服務,已成為當今一種必不可少的網絡資源獲取工具,也是科研人員研究的重點方向。
文獻[1]和文獻[2]采用對象交換模型將頁面中結構化標簽對應的數據部分抽取出來,形成相應的Web信息模型,但由于Web網頁結構只是一種信息的簡單表現形式,使用這些標簽進行信息抽取[3]得到的精度、可信度不高,因此對網絡信息的采集進行模塊化設計,對頁面的文本內容進行預處理后建立索引庫,實現基于內容的信息抽取;文獻[4]設計一個基于Web的全文搜索引擎,擴充了系統的全文檢索范圍,實現了基于同義詞的檢索;文獻[5]介紹一種個性化智能Agent搜索引擎設計方案,采用內容過濾的方法構造用戶個性化信息表,但無法體現搜索結果的重要程度。本文介紹一種采用PageRank對檢索響應網頁進行排序,并根據用戶點擊決策,利用神經網絡修正排序結果的方法,可更好地反映用戶對檢索結果的感興趣程度。
1編程環境搭建
PC端全文搜索引擎的服務器操作系統采用Windows 7,開發平臺采用Anaconda2.3+PyQt4+eric44.5.24。Anaconda是一個用于科學計算的Python發行版,支持 Linux、Mac、Windows系統,提供了包管理與環境管理功能,可以很方便地解決多版本Python并存、切換以及各種第三方包安裝問題。Anaconda利用工具/命令conda進行package與environment的管理,并且已包含了Python和相關配套工具。PyQt是一個GUI庫,是將Python和Qt結合在一起的產物[6],而Qt是目前比較成功與強大的GUI庫。Eric4是一個用PyQt4和QScintilla2開發的Python集成開發環境,非常適合開發Python的GUI應用。首先安裝Anacoda,并選擇Python為默認解釋器;接著安裝PyQt,選擇默認方式安裝;然后安裝Eric4,在文件夾下雙擊install.py。如果是首次安裝Eric4,則需要首先配置運行環境,在Editor目錄下APIs的Language選項中選擇Python語言,點擊Add from installed APIS,默認選擇eric4.api;最后單擊Compile APIS進行編譯,以加快運行速度。完成上述操作后,則會在Anacoda安裝路徑下生成eric4.bat文件,至此開發環境搭建完畢。
2全文搜索引擎體系結構
現有的搜索引擎根據工作原理可劃分為全文搜索引擎、信息檢索Agent、目錄搜索引擎和元搜索引擎4類[7],其中全文搜索引擎是應用最廣的引擎。全文搜索引擎主要由網絡資源采集、數據處理、索引庫構建與結果排序4部分組成,結構如圖1所示。
網絡資源的采集由網絡爬蟲完成,網絡爬蟲通過解析URL鏈接獲取網頁內容,檢查該頁面內容后,再尋找另一個URL,不斷循環該過程采集資源;數據處理可進一步精煉數據,將網絡中雜亂無章的數據聚合成規范、合理的形式,以方便分析處理;索引庫需要保存URL鏈接及其頁面內出現的單詞位置信息,并對頁面內容進行過濾和分詞;結果排序是對檢索返回信息與檢索目標間相關度的一種度量,同樣也是搜索引擎的重要技術,對返回高質量的檢索響應起著關鍵作用。
3主要模塊功能實現
3.1網絡資源采集
網絡數據采集也稱為網絡爬蟲[8]或數據挖掘,利用Python的標準庫urllib2和非標準庫BeautifulSope,通過廣度優先[9]的搜索方式實現數據采集。urllib2下的urlopen方法可以打開并獲取一個網絡遠程對象,BeautifulSoup通過對網頁HTML標簽的定位,可格式化并組織復雜的網絡信息。網絡資源的采集架構主要由URL管理器、網頁下載器與網頁解析器3部分組成[10]。URL管理器管理待抓取和已抓取的URL,防止重復抓取與循環抓取;網頁下載器負責將互聯網上URL對應的網頁下載到本地;網頁解析器對網頁內容進行結構化,以便后續的數據處理,并從中獲取有價值的信息。
網絡資源獲取過程如下:①在URL管理器中檢查是否存在待爬取的URL鏈接,如果有則將該URL傳遞至網頁下載器,下載頁面內容;②將已下載的URL內容交付給網頁解析器以結構化網頁,并將頁面中指向其它頁面的URL鏈接輸出至URL管理器;③由URL管理器判斷這些URL是否存在于已爬取的URL列表中,如果不存在,則將其添加至待爬取URL隊列中。重復迭代該過程便可不斷獲取網絡資源。
3.2數據處理
采集好的HTML文檔中包含許多不在索引范圍內的標簽和屬性等信息[11],所以首先需要提取出網頁的純文本部分,利用BeautifulSoup對象的contents屬性將所有標簽節點以列表形式輸出,并利用string屬性以遞歸向下的方式取出所有文本信息,最后以長字符串的形式返回。
建立索引需要的是網頁的URL鏈接和其所對應頁面內容中的單詞及單詞位置信息,因此首先應獲得網頁中所有a標簽中herf屬性中的內容,其次將獲取的文本字符串劃分為詞組。篩選URL鏈接可用BeautifulSoup對象的標簽屬性一步獲得,而詞組劃分需要用到正則表達式與Python的非標準庫jieba。jieba是一款基于Python的中文分詞工具,采用動態規劃查找最大概率路徑,以找出基于詞頻的最大切分組合。中文的utf8編碼在u4e00u9fa5范圍內,根據該約束使用正則表達式提取出所有中文字符串,并可利用jieba的搜索引擎模式切割獲取到的中文字符串,以便后續建立索引。
3.3索引庫建立
索引不僅包含了所有詞組的文本和位置信息,還包含文本所屬網頁的URL及其與文本之間的鏈接信息。利用SQLite創建索引庫,SQLite是一個嵌入式數據庫,在Pyhton中使用SQLlite3建立與數據庫的連接,將索引所需信息分別保存在5張數據表中,分別是單詞列表、單詞位置信息表、URL鏈接表、URL外部指向鏈接表,以及URL與單詞映射關系表。其中單詞位置信息代表單詞在頁面中出現的順序,以單詞在表中的ID字段進行標識。URL鏈接和外部指向鏈接信息在網絡資源采集時由URL管理器部分獲得。
索引庫的GUI顯示結果如圖2所示,GUI程序建立的第一步需要與數據庫建立連接,PyQt4的QtSql模塊提供了與平臺及數據庫種類無關的訪問SQL數據庫接口;連接建立之后使用QSqlTableModel模塊載入相關數據表,QSqlTableModel類是一個獨立處理數據庫的高級界面接口;最后在QTableView窗口部件中顯示設置好的模型。
3.4結果排序
無論何種搜索引擎均以在最短時間內提供給用戶最滿意的結果為目的,在大量滿足條件的響應頁面中,用戶不可能系統瀏覽所有查詢結果[12],結果排序在用戶對網絡搜索引擎的滿意度及檢索相關文檔成功率方面有著重要影響[13]。排序算法可根據搜索結果與查詢字符串的相關性對包含目標信息的網頁按遞減順序排序,算法按原理可分為基于文本內容和基于鏈接兩大類[14]。基于文本內容的排序方法以與查詢字符串匹配的單詞頻度、單詞在網頁中出現的相對位置和單詞出現順序等為影響因子進行排序;基于鏈接的排序以相互鏈接網頁之間相關度對其重要程度的影響為考量。
基于鏈接的排序方法已廣泛應用于商業搜索引擎中,其利用基于鏈接的PageRank算法對檢索響應頁面進行排序。該算法的基本思想是為每個網頁給定指示其重要程度的評價值,而每個網頁的重要性依賴于所有指向該網頁的其它網頁重要性[15]。網頁的PageRank值計算方法如下:
PR(X)=(1-d)+d∑ni=1Pr(Ti)C(Ti)(1)
式中,d為阻尼因子,代表用戶持續點擊每個網頁中鏈接的概率,在本文中設定為0.85。n是鏈接到網頁X的網頁總數,Ti是鏈接到網頁X的第i個頁面,C(Ti)是網頁Ti指向其它頁面的鏈接總數。在該算法中,計算每個網頁的評價值需預先知道指向該頁面其它頁面的評價值,所以首先應為每個網頁設定一個初始評價值,然后通過迭代計算逐漸逼近真實值,迭代次數根據網頁數量確定。
利用PageRank算法排序的結果只是基于網絡信息,并不能反映用戶興趣目標,所以可通過建立一個神經網絡,根據用戶對檢索響應網頁的點擊決策修正排序結果[16],以提供更加人性化的服務。構建的神經網絡共使用三層神經元,第一層接收查詢字符串,第二層為隱藏層,負責對輸入進行組合,第三層返回不同URL的權重列表。對輸入層到隱藏層,以及隱藏層到輸出層的默認權重分別設定為-0.2和0。
輸入層每次接收到未見過的詞組,便在隱藏層中新建一個節點,并為單詞與隱藏節點之間,以及查詢節點與響應鏈接結果設置默認權重的連接。神經網絡中利用反雙曲正切變換函數衡量每個節點對輸入的響應程度,以構造前向傳遞算法,返回所有輸出層節點的輸出結果。0值代表所有用戶未點擊的URL,1值代表用戶點擊過的URL。節點間連接的權重值根據每個輸出層的期望輸出,利用反向傳遞法進行更新。對于輸出層,首先計算每個節點當前輸出結果與期望結果之間的差距,然后利用當前輸出級別上的斜率,確定節點總輸入的改變量,最后改變每個外部回指鏈接的強度值,其值與當前鏈接的強度及學習速率成一定比例;對于隱藏層,首先將每個節點輸出鏈接的強度值乘以其目標節點所需的改變量,累加求和后改變其輸出結果,然后利用當前輸出級別上的斜率確定總輸入的改變量,最后改變每個輸入鏈接強度值,其值與鏈接的當前強度及學習速率成一定比例。
4自定義搜索
自定義搜索功能的實現建立在上文各模塊功能基礎之上,可提供主題搜索服務,其用戶界面如圖3所示。用戶可以在鏈接輸入框中輸入某一感興趣主題任意網頁的URL,然后單擊“爬取”,即可使后臺在網絡中自動采用廣度優先模式收集該主題的網絡資源,將其處理后建立索引,隨后在搜索文本輸入框中輸入與主題相關的關鍵詞,便可得到排序后的鏈接及其評分結果。
5結語
本文介紹了基于PyQt的全文搜索引擎系統,以方便用戶理解搜索引擎工作流程。全文搜索引擎共有5大功能模塊,分別是網絡信息采集、數據處理、索引庫建立、結果排序與神經網絡訓練。然而,神經網絡部分的隱藏層較少,用戶評價度量單一,還需作進一步改進。
參考文獻參考文獻:
[1]LUCA IOCCHI.The WebOEM approach to Web information extraction[J].Journal of Network and Computer Appications,1999,22:259269.
[2]黃豫清,戚廣志,張福炎.從WEB文檔中構造半結構化信息的抽取器[J].軟件學報,2000(1):7378.
[3]SHEN,LI,WANG,et al.Multilevel discriminative dictionary learning towards hierarchical visual categorization[C].IEEE Conference on Computer Vision and Pattern Recognition.Institute of Electrical and Electronics Engineers,2013:383390.
[4]陳康,許婷,戴文俊,等.基于Web的全文搜索引擎的設計與實現[J].計算機工程,2005(20):5153.
[5]金玉堅,劉焱.基于用戶的個性化智能搜索引擎[J].現代情報,2005(7):170172.
[6]陳笑飛,李滔.基于Python的虛擬儀器技術研究及實現[J].電子設計工程,2012,20(16):4850.
[7]JANSEN B J,POOCH U.A review of Web searching studies and a framework for future research[J].Journal of the Association for Information Science & Technology,2001,52(3):235246.
[8]RUNGSAWANG A,ANGKAWATTANAWIT N.Learnable topicspecific web crawler[J].Journal of Network & Computer Applications,2005,28(2):97114.
[9]GWETU M V.The application of sampling to the design of structural analysis Web crawlers[J].International Journal of Computer Science Issues,2010.
[10]劉瑋瑋.搜索引擎中主題爬蟲的研究與實現[D].南京:南京理工大學,2006.
[11]熊忠陽,藺顯強,張玉芳,等.結合網頁結構與文本特征的正文提取方法[J].計算機工程,2013,39(12):200203,210.
[12]BARILAN J.Comparing rankings of search results on the Web[J].Information Processing and Management,2004 (41):15111519.
[13]COURTOIS M P,BERRY M W.Results ranking in Web search engines[J].Online,1999,23(3):3946.
[14]MCCALLUM A K,NIGAM K,RENNIE J,et al.Automating the construction of internet portals with machine learning[J].Information Retrieval,2000,3(2):127163.
[15]馮振明.Google核心——PageRank算法探討[J].計算機技術與發展,2006(7):8284.
[16]金祖旭,李敏波.基于用戶反饋的搜索引擎排名算法[J].計算機系統應用,2010,19(11):6065.
責任編輯(責任編輯:黃健)