• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于PyQt的全文搜索引擎平臺開發(fā)

      2018-12-10 09:13:16張文超胡玉蘭
      軟件導(dǎo)刊 2018年9期

      張文超 胡玉蘭

      摘要 網(wǎng)絡(luò)信息數(shù)量的日益增加,對人們從中獲取有效信息的能力提出了更高要求。為了更好地響應(yīng)用戶需求,提高信息處理效率并降低人力成本,基于PyQt進(jìn)行全文搜索引擎平臺開發(fā)。采用模塊化思想設(shè)計(jì)網(wǎng)絡(luò)信息采集功能,然后將獲取的信息經(jīng)數(shù)據(jù)處理后建立索引庫,采用PageRank算法對查詢響應(yīng)結(jié)果進(jìn)行排序,實(shí)現(xiàn)檢索器功能,并通過用戶的點(diǎn)擊決策,利用神經(jīng)網(wǎng)絡(luò)對排序結(jié)果進(jìn)行二次修正。最后,在界面輸入查詢字符串后,便可快速得到已排序的鏈接響應(yīng),從而能更好地反映用戶對檢索結(jié)果的感興趣程度,并提供個性化服務(wù)。

      關(guān)鍵詞關(guān)鍵詞:全文搜索引擎;網(wǎng)絡(luò)信息采集;PageRank;PyQt

      DOIDOI:10.11907/rjdk.181009

      中圖分類號:TP319

      文獻(xiàn)標(biāo)識碼:A文章編號文章編號:16727800(2018)009013204

      英文標(biāo)題Development of FullText Search Engine Platform Based on PyQt

      --副標(biāo)題

      英文作者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.

      英文關(guān)鍵詞Key Words:fulltext search engine;network information collection;PageRank;PyQt

      0引言

      隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)的快速發(fā)展,每天的信息量呈爆炸式增長,搜索引擎應(yīng)運(yùn)而生。搜索引擎通過對互聯(lián)網(wǎng)上的信息資源進(jìn)行采集、提取和組織處理,為用戶提供檢索服務(wù),已成為當(dāng)今一種必不可少的網(wǎng)絡(luò)資源獲取工具,也是科研人員研究的重點(diǎn)方向。

      文獻(xiàn)[1]和文獻(xiàn)[2]采用對象交換模型將頁面中結(jié)構(gòu)化標(biāo)簽對應(yīng)的數(shù)據(jù)部分抽取出來,形成相應(yīng)的Web信息模型,但由于Web網(wǎng)頁結(jié)構(gòu)只是一種信息的簡單表現(xiàn)形式,使用這些標(biāo)簽進(jìn)行信息抽取[3]得到的精度、可信度不高,因此對網(wǎng)絡(luò)信息的采集進(jìn)行模塊化設(shè)計(jì),對頁面的文本內(nèi)容進(jìn)行預(yù)處理后建立索引庫,實(shí)現(xiàn)基于內(nèi)容的信息抽?。晃墨I(xiàn)[4]設(shè)計(jì)一個基于Web的全文搜索引擎,擴(kuò)充了系統(tǒng)的全文檢索范圍,實(shí)現(xiàn)了基于同義詞的檢索;文獻(xiàn)[5]介紹一種個性化智能Agent搜索引擎設(shè)計(jì)方案,采用內(nèi)容過濾的方法構(gòu)造用戶個性化信息表,但無法體現(xiàn)搜索結(jié)果的重要程度。本文介紹一種采用PageRank對檢索響應(yīng)網(wǎng)頁進(jìn)行排序,并根據(jù)用戶點(diǎn)擊決策,利用神經(jīng)網(wǎng)絡(luò)修正排序結(jié)果的方法,可更好地反映用戶對檢索結(jié)果的感興趣程度。

      1編程環(huán)境搭建

      PC端全文搜索引擎的服務(wù)器操作系統(tǒng)采用Windows 7,開發(fā)平臺采用Anaconda2.3+PyQt4+eric44.5.24。Anaconda是一個用于科學(xué)計(jì)算的Python發(fā)行版,支持 Linux、Mac、Windows系統(tǒng),提供了包管理與環(huán)境管理功能,可以很方便地解決多版本Python并存、切換以及各種第三方包安裝問題。Anaconda利用工具/命令conda進(jìn)行package與environment的管理,并且已包含了Python和相關(guān)配套工具。PyQt是一個GUI庫,是將Python和Qt結(jié)合在一起的產(chǎn)物[6],而Qt是目前比較成功與強(qiáng)大的GUI庫。Eric4是一個用PyQt4和QScintilla2開發(fā)的Python集成開發(fā)環(huán)境,非常適合開發(fā)Python的GUI應(yīng)用。首先安裝Anacoda,并選擇Python為默認(rèn)解釋器;接著安裝PyQt,選擇默認(rèn)方式安裝;然后安裝Eric4,在文件夾下雙擊install.py。如果是首次安裝Eric4,則需要首先配置運(yùn)行環(huán)境,在Editor目錄下APIs的Language選項(xiàng)中選擇Python語言,點(diǎn)擊Add from installed APIS,默認(rèn)選擇eric4.api;最后單擊Compile APIS進(jìn)行編譯,以加快運(yùn)行速度。完成上述操作后,則會在Anacoda安裝路徑下生成eric4.bat文件,至此開發(fā)環(huán)境搭建完畢。

      2全文搜索引擎體系結(jié)構(gòu)

      現(xiàn)有的搜索引擎根據(jù)工作原理可劃分為全文搜索引擎、信息檢索Agent、目錄搜索引擎和元搜索引擎4類[7],其中全文搜索引擎是應(yīng)用最廣的引擎。全文搜索引擎主要由網(wǎng)絡(luò)資源采集、數(shù)據(jù)處理、索引庫構(gòu)建與結(jié)果排序4部分組成,結(jié)構(gòu)如圖1所示。

      網(wǎng)絡(luò)資源的采集由網(wǎng)絡(luò)爬蟲完成,網(wǎng)絡(luò)爬蟲通過解析URL鏈接獲取網(wǎng)頁內(nèi)容,檢查該頁面內(nèi)容后,再尋找另一個URL,不斷循環(huán)該過程采集資源;數(shù)據(jù)處理可進(jìn)一步精煉數(shù)據(jù),將網(wǎng)絡(luò)中雜亂無章的數(shù)據(jù)聚合成規(guī)范、合理的形式,以方便分析處理;索引庫需要保存URL鏈接及其頁面內(nèi)出現(xiàn)的單詞位置信息,并對頁面內(nèi)容進(jìn)行過濾和分詞;結(jié)果排序是對檢索返回信息與檢索目標(biāo)間相關(guān)度的一種度量,同樣也是搜索引擎的重要技術(shù),對返回高質(zhì)量的檢索響應(yīng)起著關(guān)鍵作用。

      3主要模塊功能實(shí)現(xiàn)

      3.1網(wǎng)絡(luò)資源采集

      網(wǎng)絡(luò)數(shù)據(jù)采集也稱為網(wǎng)絡(luò)爬蟲[8]或數(shù)據(jù)挖掘,利用Python的標(biāo)準(zhǔn)庫urllib2和非標(biāo)準(zhǔn)庫BeautifulSope,通過廣度優(yōu)先[9]的搜索方式實(shí)現(xiàn)數(shù)據(jù)采集。urllib2下的urlopen方法可以打開并獲取一個網(wǎng)絡(luò)遠(yuǎn)程對象,BeautifulSoup通過對網(wǎng)頁HTML標(biāo)簽的定位,可格式化并組織復(fù)雜的網(wǎng)絡(luò)信息。網(wǎng)絡(luò)資源的采集架構(gòu)主要由URL管理器、網(wǎng)頁下載器與網(wǎng)頁解析器3部分組成[10]。URL管理器管理待抓取和已抓取的URL,防止重復(fù)抓取與循環(huán)抓??;網(wǎng)頁下載器負(fù)責(zé)將互聯(lián)網(wǎng)上URL對應(yīng)的網(wǎng)頁下載到本地;網(wǎng)頁解析器對網(wǎng)頁內(nèi)容進(jìn)行結(jié)構(gòu)化,以便后續(xù)的數(shù)據(jù)處理,并從中獲取有價值的信息。

      網(wǎng)絡(luò)資源獲取過程如下:①在URL管理器中檢查是否存在待爬取的URL鏈接,如果有則將該URL傳遞至網(wǎng)頁下載器,下載頁面內(nèi)容;②將已下載的URL內(nèi)容交付給網(wǎng)頁解析器以結(jié)構(gòu)化網(wǎng)頁,并將頁面中指向其它頁面的URL鏈接輸出至URL管理器;③由URL管理器判斷這些URL是否存在于已爬取的URL列表中,如果不存在,則將其添加至待爬取URL隊(duì)列中。重復(fù)迭代該過程便可不斷獲取網(wǎng)絡(luò)資源。

      3.2數(shù)據(jù)處理

      采集好的HTML文檔中包含許多不在索引范圍內(nèi)的標(biāo)簽和屬性等信息[11],所以首先需要提取出網(wǎng)頁的純文本部分,利用BeautifulSoup對象的contents屬性將所有標(biāo)簽節(jié)點(diǎn)以列表形式輸出,并利用string屬性以遞歸向下的方式取出所有文本信息,最后以長字符串的形式返回。

      建立索引需要的是網(wǎng)頁的URL鏈接和其所對應(yīng)頁面內(nèi)容中的單詞及單詞位置信息,因此首先應(yīng)獲得網(wǎng)頁中所有a標(biāo)簽中herf屬性中的內(nèi)容,其次將獲取的文本字符串劃分為詞組。篩選URL鏈接可用BeautifulSoup對象的標(biāo)簽屬性一步獲得,而詞組劃分需要用到正則表達(dá)式與Python的非標(biāo)準(zhǔn)庫jieba。jieba是一款基于Python的中文分詞工具,采用動態(tài)規(guī)劃查找最大概率路徑,以找出基于詞頻的最大切分組合。中文的utf8編碼在u4e00u9fa5范圍內(nèi),根據(jù)該約束使用正則表達(dá)式提取出所有中文字符串,并可利用jieba的搜索引擎模式切割獲取到的中文字符串,以便后續(xù)建立索引。

      3.3索引庫建立

      索引不僅包含了所有詞組的文本和位置信息,還包含文本所屬網(wǎng)頁的URL及其與文本之間的鏈接信息。利用SQLite創(chuàng)建索引庫,SQLite是一個嵌入式數(shù)據(jù)庫,在Pyhton中使用SQLlite3建立與數(shù)據(jù)庫的連接,將索引所需信息分別保存在5張數(shù)據(jù)表中,分別是單詞列表、單詞位置信息表、URL鏈接表、URL外部指向鏈接表,以及URL與單詞映射關(guān)系表。其中單詞位置信息代表單詞在頁面中出現(xiàn)的順序,以單詞在表中的ID字段進(jìn)行標(biāo)識。URL鏈接和外部指向鏈接信息在網(wǎng)絡(luò)資源采集時由URL管理器部分獲得。

      索引庫的GUI顯示結(jié)果如圖2所示,GUI程序建立的第一步需要與數(shù)據(jù)庫建立連接,PyQt4的QtSql模塊提供了與平臺及數(shù)據(jù)庫種類無關(guān)的訪問SQL數(shù)據(jù)庫接口;連接建立之后使用QSqlTableModel模塊載入相關(guān)數(shù)據(jù)表,QSqlTableModel類是一個獨(dú)立處理數(shù)據(jù)庫的高級界面接口;最后在QTableView窗口部件中顯示設(shè)置好的模型。

      3.4結(jié)果排序

      無論何種搜索引擎均以在最短時間內(nèi)提供給用戶最滿意的結(jié)果為目的,在大量滿足條件的響應(yīng)頁面中,用戶不可能系統(tǒng)瀏覽所有查詢結(jié)果[12],結(jié)果排序在用戶對網(wǎng)絡(luò)搜索引擎的滿意度及檢索相關(guān)文檔成功率方面有著重要影響[13]。排序算法可根據(jù)搜索結(jié)果與查詢字符串的相關(guān)性對包含目標(biāo)信息的網(wǎng)頁按遞減順序排序,算法按原理可分為基于文本內(nèi)容和基于鏈接兩大類[14]?;谖谋緝?nèi)容的排序方法以與查詢字符串匹配的單詞頻度、單詞在網(wǎng)頁中出現(xiàn)的相對位置和單詞出現(xiàn)順序等為影響因子進(jìn)行排序;基于鏈接的排序以相互鏈接網(wǎng)頁之間相關(guān)度對其重要程度的影響為考量。

      基于鏈接的排序方法已廣泛應(yīng)用于商業(yè)搜索引擎中,其利用基于鏈接的PageRank算法對檢索響應(yīng)頁面進(jìn)行排序。該算法的基本思想是為每個網(wǎng)頁給定指示其重要程度的評價值,而每個網(wǎng)頁的重要性依賴于所有指向該網(wǎng)頁的其它網(wǎng)頁重要性[15]。網(wǎng)頁的PageRank值計(jì)算方法如下:

      PR(X)=(1-d)+d∑ni=1Pr(Ti)C(Ti)(1)

      式中,d為阻尼因子,代表用戶持續(xù)點(diǎn)擊每個網(wǎng)頁中鏈接的概率,在本文中設(shè)定為0.85。n是鏈接到網(wǎng)頁X的網(wǎng)頁總數(shù),Ti是鏈接到網(wǎng)頁X的第i個頁面,C(Ti)是網(wǎng)頁Ti指向其它頁面的鏈接總數(shù)。在該算法中,計(jì)算每個網(wǎng)頁的評價值需預(yù)先知道指向該頁面其它頁面的評價值,所以首先應(yīng)為每個網(wǎng)頁設(shè)定一個初始評價值,然后通過迭代計(jì)算逐漸逼近真實(shí)值,迭代次數(shù)根據(jù)網(wǎng)頁數(shù)量確定。

      利用PageRank算法排序的結(jié)果只是基于網(wǎng)絡(luò)信息,并不能反映用戶興趣目標(biāo),所以可通過建立一個神經(jīng)網(wǎng)絡(luò),根據(jù)用戶對檢索響應(yīng)網(wǎng)頁的點(diǎn)擊決策修正排序結(jié)果[16],以提供更加人性化的服務(wù)。構(gòu)建的神經(jīng)網(wǎng)絡(luò)共使用三層神經(jīng)元,第一層接收查詢字符串,第二層為隱藏層,負(fù)責(zé)對輸入進(jìn)行組合,第三層返回不同URL的權(quán)重列表。對輸入層到隱藏層,以及隱藏層到輸出層的默認(rèn)權(quán)重分別設(shè)定為-0.2和0。

      輸入層每次接收到未見過的詞組,便在隱藏層中新建一個節(jié)點(diǎn),并為單詞與隱藏節(jié)點(diǎn)之間,以及查詢節(jié)點(diǎn)與響應(yīng)鏈接結(jié)果設(shè)置默認(rèn)權(quán)重的連接。神經(jīng)網(wǎng)絡(luò)中利用反雙曲正切變換函數(shù)衡量每個節(jié)點(diǎn)對輸入的響應(yīng)程度,以構(gòu)造前向傳遞算法,返回所有輸出層節(jié)點(diǎn)的輸出結(jié)果。0值代表所有用戶未點(diǎn)擊的URL,1值代表用戶點(diǎn)擊過的URL。節(jié)點(diǎn)間連接的權(quán)重值根據(jù)每個輸出層的期望輸出,利用反向傳遞法進(jìn)行更新。對于輸出層,首先計(jì)算每個節(jié)點(diǎn)當(dāng)前輸出結(jié)果與期望結(jié)果之間的差距,然后利用當(dāng)前輸出級別上的斜率,確定節(jié)點(diǎn)總輸入的改變量,最后改變每個外部回指鏈接的強(qiáng)度值,其值與當(dāng)前鏈接的強(qiáng)度及學(xué)習(xí)速率成一定比例;對于隱藏層,首先將每個節(jié)點(diǎn)輸出鏈接的強(qiáng)度值乘以其目標(biāo)節(jié)點(diǎn)所需的改變量,累加求和后改變其輸出結(jié)果,然后利用當(dāng)前輸出級別上的斜率確定總輸入的改變量,最后改變每個輸入鏈接強(qiáng)度值,其值與鏈接的當(dāng)前強(qiáng)度及學(xué)習(xí)速率成一定比例。

      4自定義搜索

      自定義搜索功能的實(shí)現(xiàn)建立在上文各模塊功能基礎(chǔ)之上,可提供主題搜索服務(wù),其用戶界面如圖3所示。用戶可以在鏈接輸入框中輸入某一感興趣主題任意網(wǎng)頁的URL,然后單擊“爬取”,即可使后臺在網(wǎng)絡(luò)中自動采用廣度優(yōu)先模式收集該主題的網(wǎng)絡(luò)資源,將其處理后建立索引,隨后在搜索文本輸入框中輸入與主題相關(guān)的關(guān)鍵詞,便可得到排序后的鏈接及其評分結(jié)果。

      5結(jié)語

      本文介紹了基于PyQt的全文搜索引擎系統(tǒng),以方便用戶理解搜索引擎工作流程。全文搜索引擎共有5大功能模塊,分別是網(wǎng)絡(luò)信息采集、數(shù)據(jù)處理、索引庫建立、結(jié)果排序與神經(jīng)網(wǎng)絡(luò)訓(xùn)練。然而,神經(jīng)網(wǎng)絡(luò)部分的隱藏層較少,用戶評價度量單一,還需作進(jìn)一步改進(jìn)。

      參考文獻(xiàn)參考文獻(xiàn):

      [1]LUCA IOCCHI.The WebOEM approach to Web information extraction[J].Journal of Network and Computer Appications,1999,22:259269.

      [2]黃豫清,戚廣志,張福炎.從WEB文檔中構(gòu)造半結(jié)構(gòu)化信息的抽取器[J].軟件學(xué)報,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的全文搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2005(20):5153.

      [5]金玉堅(jiān),劉焱.基于用戶的個性化智能搜索引擎[J].現(xiàn)代情報,2005(7):170172.

      [6]陳笑飛,李滔.基于Python的虛擬儀器技術(shù)研究及實(shí)現(xiàn)[J].電子設(shè)計(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]劉瑋瑋.搜索引擎中主題爬蟲的研究與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2006.

      [11]熊忠陽,藺顯強(qiáng),張玉芳,等.結(jié)合網(wǎng)頁結(jié)構(gòu)與文本特征的正文提取方法[J].計(jì)算機(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].計(jì)算機(jī)技術(shù)與發(fā)展,2006(7):8284.

      [16]金祖旭,李敏波.基于用戶反饋的搜索引擎排名算法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(11):6065.

      責(zé)任編輯(責(zé)任編輯:黃?。?/p>

      涡阳县| 思茅市| 句容市| 井研县| 内乡县| 宝山区| 井冈山市| 磴口县| 赤峰市| 朔州市| 内黄县| 北票市| 开封县| 青龙| 商洛市| 磴口县| 正镶白旗| 惠安县| 青冈县| 胶州市| 绿春县| 宁陕县| 隆昌县| 平邑县| 淳化县| 大名县| 西青区| 兰坪| 乌恰县| 丹寨县| 内丘县| 都兰县| 息烽县| 台山市| 东安县| 达孜县| 岑溪市| 崇州市| 永丰县| 马鞍山市| 稻城县|