999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的校園網(wǎng)搜索引擎研究

2018-05-08 13:20:44左衛(wèi)剛
電子技術(shù)與軟件工程 2018年22期
關(guān)鍵詞:搜索引擎信息

左衛(wèi)剛

摘要 隨著數(shù)字化校園的發(fā)展,校園網(wǎng)數(shù)據(jù)量呈幾何倍增長,信息的查找和定位變得更為困難。本文以大學(xué)校園網(wǎng)為研究對象,在分析了網(wǎng)絡(luò)搜索引擎的原理、核心模塊的基礎(chǔ)上,采用基于Python的Scrapy爬蟲和Whoosh索引庫等技術(shù),完成了linux平臺下校園網(wǎng)搜索引擎原型系統(tǒng)的構(gòu)建。實驗結(jié)果顯示,本文所提出的搜索引擎原型系統(tǒng),有效解決了使用通用搜索引擎所產(chǎn)生的校園網(wǎng)信息收錄不完全及索引更新不及時等問題。

【關(guān)鍵詞】校園搜索引擎 網(wǎng)絡(luò)爬蟲 ScrapyWhoosh URL去重 布隆過濾器 中文分詞

1 引言

大數(shù)據(jù)時代的來臨意味著將產(chǎn)生海量的數(shù)據(jù)信息,這些信息被廣泛分布在互聯(lián)網(wǎng)的不同節(jié)點上,如何從中獲取到我們真正需要的信息成為難題。目前用戶獲取信息的主要方式是使用傳統(tǒng)的互聯(lián)網(wǎng)搜索引擎,但因不用領(lǐng)域和不同背景的用戶的檢索目的和需求往往不同,使得通用搜索引擎返回的查詢結(jié)果不是我們真正所關(guān)心和需要的。

近年來,校園信息化建設(shè)不斷推進(jìn),校園網(wǎng)絡(luò)信息呈現(xiàn)爆發(fā)式增長,校園內(nèi)信息的查找和定位面臨同樣的困境。校園網(wǎng)有其特殊性,比如校園內(nèi)有些站點使用二級或三級域名,甚至不綁定域名直接使用IP訪問等特點。用戶在使用通用搜索引擎來進(jìn)行全域搜索或站內(nèi)搜索就存在信息無法被通用搜索引擎收錄和收錄時間嚴(yán)重滯后等問題,顯然通用搜索引擎的在面對校園網(wǎng)的這些特殊性,效果并不理想。

本文以大學(xué)校園網(wǎng)為研究對象,介紹搜索引擎中的一些關(guān)鍵技術(shù),通過使用基于Python語言的S crapy開源爬蟲框架,對搜索引擎的爬蟲模塊進(jìn)行開發(fā),指出Scrapy框架原有的URL去重方法存在的缺陷,提出了一種使用布隆過濾器對S crapy爬蟲框架的URL去重功能進(jìn)行改進(jìn)的方案。同時,根據(jù)實際經(jīng)驗,提出了兩種防止爬蟲被ban的策略。利用基于Python語言的Whoosh索引檢索庫,對本系統(tǒng)索引檢索模塊進(jìn)行開發(fā)。針對Whoosh對中文分詞效果不好的問題,提出了使用jieba開源分詞組件來對Whoosh的中文分詞功能進(jìn)行改進(jìn)。探索性地研究Linux平臺下面向校園網(wǎng)的搜索引擎。

2 網(wǎng)絡(luò)爬蟲

互聯(lián)網(wǎng)就像一張大的蜘蛛網(wǎng),網(wǎng)絡(luò)爬蟲通過各種遍歷算法從互聯(lián)網(wǎng)上下載用戶需要的信息,我們通常把互聯(lián)網(wǎng)看做一張無限大的蜘蛛網(wǎng),而蜘蛛網(wǎng)中每一個交叉點就是互聯(lián)網(wǎng)上的一個節(jié)點,各個節(jié)點之間通過超鏈接連在一起。網(wǎng)絡(luò)爬蟲可以以互聯(lián)網(wǎng)中的任何一個節(jié)點出發(fā),使用遍歷算法,到達(dá)互聯(lián)網(wǎng)中的任何其他節(jié)點,被訪問到的節(jié)點根據(jù)用戶需求對節(jié)點內(nèi)信息進(jìn)行比對判斷,把需要的信息從網(wǎng)頁中下載下來,并進(jìn)行格式化呈現(xiàn)給用戶。

2.1 爬取策略

針對海量的網(wǎng)絡(luò)信息,搜索引擎常用的網(wǎng)絡(luò)爬蟲策略主要有以下幾種:

2.1.1 寬度優(yōu)先策略

寬度優(yōu)先算法(Breadth First Search),又稱為廣度優(yōu)先。它的主體思想是:從V頂點出發(fā),依次訪問V頂點沒有被訪問過的相鄰點,然后再從這些相鄰點依次訪問它們的相鄰點,并遵循先被頂點訪問的相鄰點先于其他被訪問的相鄰點,這些相鄰點繼續(xù)訪問其所有的相鄰點,如此反復(fù)直到所有的頂點都被訪問到。

下面以圖l為例,來說明寬度優(yōu)先搜索過程。

圖1以VI為起點,首先訪問V3、V4、V6。V3、V4、V6被訪問過之后,再依次訪問V3、V4、V6的相鄰點。訪問V3的相鄰點V2,V4沒有相鄰點,訪問V6的相鄰點V7。訪問完V2河V7后,再訪問V7的相鄰點V5。如此以來,整個的訪問序列為:VI→ V3→ V4→ V6→ V2→V7→ V5

2.1.2 深度優(yōu)先策略

深度優(yōu)先搜索(Depth First Search)和廣度優(yōu)先搜索不同,深度優(yōu)先搜索是一個遞歸的過程,比較類似于樹的先序遍歷。它的主體思想是:

深度優(yōu)先算法類似于“一條路走到黑”。對于一個從未被訪問過的圖,假設(shè)從其V點出發(fā)開始訪問,第一步是訪問與V頂點直接相連的所有頂點,待其所有的頂點均被訪問過以后,再從剛才被訪問過的頂點開始依次訪問與它們直接相連的頂點,重復(fù)上述訪問過程,直到圖中的所有頂點均被訪問到為止。圖2為深度優(yōu)先搜索過程。

圖2中首先訪問V1,然后訪問VI的相鄰點V3、V4、V6。假設(shè)圖中的頂點是按照VI、V2、V3、V4、V5、V6的順序存儲的,因為在存儲時V3在V4和V6的前面,所以先訪問V3,接下來應(yīng)該訪問V3的相鄰點V2和V4,因為V2在V4之前存儲,所以先訪問V2。V2被訪問過之后,訪問V2未被訪問過后的相鄰點,但是V2沒有,返回訪問V4也是沒有。于是返回起始點VI,繼續(xù)訪問Vl的另一個相鄰點V6。訪問V6的相鄰點V7,訪問V7的相鄰點V5所以整個的訪問序列為:V1→ V3→ V2→ V4→V6→V7→V5。

在互聯(lián)網(wǎng)中,每一個網(wǎng)頁都是一個節(jié)點,寬度優(yōu)先搜索引擎和深度優(yōu)先搜索都可以訪問到所有節(jié)點。但是實際中每個網(wǎng)頁都有不同的重要性,這兩種算法只是可以抓取頁面并排入隊列,無法有效判定頁面的優(yōu)先級。

2.1.3 非完全PageRank策略

PageRank算法借鑒了學(xué)術(shù)界評判學(xué)術(shù)論文的通用方法。如何評價網(wǎng)絡(luò)中海量信息的重要性,假如一個網(wǎng)站被很多的其他網(wǎng)站做了鏈接,則我們認(rèn)為此網(wǎng)站很重要。這就是SEO中通常所說的PR值,我們在衡量某個網(wǎng)站的重要性時通常會看其PR值,網(wǎng)站在做外鏈時喜歡與比其PR值高的網(wǎng)站做交換鏈接,這樣以來,搜索引擎就會認(rèn)為這個網(wǎng)站也是可信賴的,就會賦予其較高的PR值,這樣在相關(guān)的搜索結(jié)果中排名就會比較靠前。圖3為非完全PageRank策略圖。

在此我們假設(shè)PR值的計算以3為基數(shù)單位,初始狀態(tài)中已經(jīng)有{P1、P2、P3}3各頁面被下載到了本地,它們的指向鏈接有{P4, P5,P6),這3頁面也是等待爬蟲爬取的集合。如何判斷其爬行的次序,我們通常將已經(jīng)下載的和待爬取的這6個頁面形成一個新的集合,計算這個集合的PR值,按照PR值得大小次序進(jìn)行爬取。這里假設(shè)待爬行的次序為P4,P5,P6,p4下載完畢后,下載P5,P5被爬取后獲取P5的鏈接Ps,此時賦予P8 一個臨時的PR值,如果P8的PR值大于P6,就優(yōu)先下載P8。如此往復(fù),不斷循環(huán),直到上圖中所有頁面都被爬取到。這就是非完全PageRank策略的計算思路。

2.2 Scrapy應(yīng)用

Scrapy是一個高效的WEB爬蟲框架,它完全基于Python開發(fā)而來,常被用于抓取網(wǎng)站信息,并從中提取出結(jié)構(gòu)化數(shù)據(jù)。Scrapy框架簡單而強(qiáng)大,可用于數(shù)據(jù)挖掘和自動化測試等。我們將使用Scrapy框架來編寫本文構(gòu)建的校園網(wǎng)搜索引擎的爬蟲模塊。

2.2.1 Scrapy中URL去重問題

Scrapy自帶的去重方法是通過RFPDupeFilter類來實現(xiàn)的,在抓取小型網(wǎng)站數(shù)據(jù)時完全夠用,但在面對大型網(wǎng)站時存在內(nèi)存消耗大等問題,這時采用布隆過濾器( BloomFilter)來改善內(nèi)存消耗過大的問題。布隆過濾器在開源社區(qū)已經(jīng)有相應(yīng)的類庫pybloom。

2.2.2 Scrapy爬蟲防止被禁止策略

爬蟲模塊設(shè)計完成后,爬蟲將對網(wǎng)站進(jìn)行爬取。因大部分網(wǎng)站都有防止爬蟲的策略,為了防止被ban,可采取以下兩種策略:

(1)在爬蟲的配置文件中將參數(shù)downloaddelay的值設(shè)置為1秒以上,鑒于校園網(wǎng)信息的更新并不是很頻繁,隨這樣會致使抓取的頻率降低,但不受大的影響。

(2)根據(jù)實際需求編寫user agent中間件,替換掉原來的中間件。

3 索引與檢索

網(wǎng)絡(luò)爬蟲爬過的網(wǎng)站數(shù)據(jù),經(jīng)過處理后將其添加進(jìn)索引。索引就像是我們?nèi)粘I钪袝哪夸?,有了目錄我們就可以更快的找到想要看的?nèi)容。索引的基礎(chǔ)其實是集合論中的布爾運(yùn)算,都是建立在布爾運(yùn)算的基礎(chǔ)之上的。

3.1 正反向索引

搜索引擎索引有正向索引和反向索引。正向索引簡而言之就是將所爬取的信息匯總成關(guān)鍵詞集合,爬蟲爬取信息的同時需要保存與關(guān)鍵詞相關(guān)的很多信息,比如關(guān)鍵詞的具體位置、關(guān)鍵詞在信息中出現(xiàn)的次數(shù)等。用戶在搜索某個關(guān)鍵詞時,首先通過遍歷算法查找包含了此關(guān)鍵詞的信息,這在一定程度上致使效率低下。

反向索引常用于搜索引擎中,與正向索引完全不同,它是通常意義下索引的倒置。反向索引能夠較好地實現(xiàn)從關(guān)鍵詞到文檔的映射,通過反向索引可以很快地根據(jù)關(guān)鍵詞獲取到需要查詢的數(shù)據(jù)信息。

3.2 Whoosh

索引與檢索模塊可通過開源社區(qū)的Whoosh實現(xiàn)。Whoosh是完全基于Python的全文索引與檢索編程庫。Whoosh構(gòu)架良好,其包含的諸多模塊都可以根據(jù)用戶的實際需求進(jìn)行替換,因其沒有二進(jìn)制包,不存在繁瑣的編譯,程序也就不會無故崩潰。

在使用Whoosh時要先建立索引對象,索引中包含索引模式,并以字段的形式存在:

上述代碼建立了索引的模式,title,url,content字段對應(yīng)索引查找目標(biāo)文件的一部分信息,索引內(nèi)容包括每個字段。字段建立索引后,就能被搜索和保存。索引模式建立之后,再建立索引存儲目錄。便可供用戶搜索查詢。

3.3 中文分詞

Whoosh本身的分詞功能是針對英文的,對中文的分詞支持不友好,在本系統(tǒng)的開發(fā)中我們使用jieba中文分詞,它是目前開源社區(qū)中比較活躍的項目,其采用了動態(tài)規(guī)劃查找最大概率路徑,基于前綴詞典實現(xiàn)了高效的詞圖掃描。jieba分詞可將句子最精確的切開,適合文本分析,在此基礎(chǔ)上,對長詞再次切分,提高召回率,適合于搜索引擎分詞。通過與Whoosh的結(jié)合來提高系統(tǒng)對中文進(jìn)行分詞的能力。

4 實驗分析

搜索質(zhì)量的好壞需要進(jìn)行科學(xué)的搜索質(zhì)量評估。用戶輸入關(guān)鍵詞到獲取到需要的準(zhǔn)確信息,整個過程速度越快,結(jié)果越準(zhǔn)確,說明搜索引擎的質(zhì)量越高。本節(jié)將進(jìn)行相關(guān)測試,以驗證搜索系統(tǒng)各方面的性能。

4.1 相關(guān)性量化評價

搜索引擎結(jié)果的好壞與否,體現(xiàn)在結(jié)果的相關(guān)性( Relevance)上。查準(zhǔn)率(Precisionratio,簡稱為P)和查全率(Recall ratio,簡稱為R)是信息檢索效率評價的兩個重要定量指標(biāo)。要評價搜索引擎的性能水平,就必須進(jìn)行多次檢索。每進(jìn)行一次檢索,都計算其查準(zhǔn)率和查全率,并將其在平面坐標(biāo)圖上標(biāo)示出來。通過大量的檢索,就可以得到檢索系統(tǒng)的性能曲線。Precision/Recall曲線以每一次計算的查全率為橫坐標(biāo),每一次計算的查準(zhǔn)率為縱坐標(biāo)。經(jīng)過100次檢索得到,由圖4可得出:我們所研究的校園網(wǎng)搜索引擎在查全率和查準(zhǔn)率之間達(dá)到了較好的動態(tài)平衡。

通常情況下,我們也使用ROC曲線來定量評價搜索引擎。ROC曲線的橫坐標(biāo)為不相關(guān)信息量(false positive rate),縱坐標(biāo)為相關(guān)信息量(true positive rate)。圖5曲線也是由100次檢索得到,由圖5可知,在ROC空間繪制的ROC曲線凸向西北方向,效果較好。

4.2 收錄及時性評價

大學(xué)校園中有海量的信息資源,搜索引擎收錄的及時性和完整性非常重要。通過30余個關(guān)鍵字的測試發(fā)現(xiàn):通用搜索引擎的收錄滯后在7-15天,使用IP訪問的四個站點的信息沒有被通用搜索引擎收錄。而我們構(gòu)建的搜索引擎可按照需求更改爬行頻率,信息收錄非常及時。我們亦可隨時將網(wǎng)站添加到系統(tǒng)的爬蟲待爬隊列中,IP訪問的網(wǎng)站信息也得到較好的收錄。

實驗證明,本文所構(gòu)建的搜索引擎原型系統(tǒng),解決了使用通用搜索引擎索引更新頻率無法控制,對校園網(wǎng)消息收錄不完全的問題。更適合校園網(wǎng)搜索的個性化需求。

5 結(jié)語

本文研究的校園網(wǎng)搜索引擎,有效解決了校園網(wǎng)內(nèi)信息不能被通用搜索引擎有效收錄或收錄不及時等問題,并完成了以下工作:針對S crapy網(wǎng)絡(luò)爬蟲框架自帶的網(wǎng)頁去重功能存在的缺陷,從理論上提出了使用布隆過濾器解決問題的方案;根據(jù)校園網(wǎng)特點,提出兩種防止爬蟲被禁止的方案;使用開源的jieba技術(shù)與Whoosh索引庫相結(jié)合,有效提高了中文分詞能力。

參考文獻(xiàn)

[1]史寶明,賀元香,吳崇正,主題搜索引擎中爬蟲搜索策略的研究[J].計算機(jī)工程與應(yīng)用,2013 (08):56-58.

[2]黃榮懷,張進(jìn)寶,胡永斌,智慧校園:數(shù)字校園發(fā)展的必然趨勢[J].開放教育研究,2012,18 (04):12-17.

[3]李志義,網(wǎng)絡(luò)爬蟲的優(yōu)化策略探略[J].現(xiàn)代情報,2011,31 (10):31-34.

[4]王燕,智慧校園建設(shè)總體架構(gòu)模型及典型應(yīng)用分析[J].中國電化教育,2014 (09):88-92.

[5]于娟,劉強(qiáng),主題網(wǎng)絡(luò)爬蟲研究綜述[J].計算機(jī)工程與科學(xué),2015 (02):36-39.

猜你喜歡
搜索引擎信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
廣告主與搜索引擎的雙向博弈分析
知識漫畫
百科知識(2012年11期)2012-04-29 08:30:15
搜索,也要“深搜熟濾”
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 人妻91无码色偷偷色噜噜噜| 亚洲天堂成人在线观看| 免费在线看黄网址| 国产不卡网| 色婷婷成人网| 欧美国产日本高清不卡| 亚洲三级a| 毛片大全免费观看| 亚洲第一黄片大全| 亚洲高清无在码在线无弹窗| 久久精品国产免费观看频道| 99在线视频精品| 亚洲资源在线视频| 国产精品妖精视频| 玖玖免费视频在线观看| 美女免费黄网站| 久草青青在线视频| 国产精品999在线| 久久五月视频| 色婷婷在线影院| 香蕉色综合| 久久亚洲美女精品国产精品| 国产成人亚洲无吗淙合青草| 男女精品视频| 亚洲IV视频免费在线光看| 四虎在线观看视频高清无码| 99re这里只有国产中文精品国产精品| 国产69精品久久久久孕妇大杂乱| 欧美成一级| 九九视频免费在线观看| 国产精品30p| 污污网站在线观看| 国产成人高清亚洲一区久久| 91国内外精品自在线播放| 天堂av高清一区二区三区| 中文字幕2区| www.亚洲一区| 国产精品亚洲一区二区三区z| 秋霞一区二区三区| 54pao国产成人免费视频| 国产精品浪潮Av| a在线亚洲男人的天堂试看| 亚洲一级毛片免费观看| 国产无码性爱一区二区三区| 亚洲一级毛片在线观| 91精品国产丝袜| 久久黄色视频影| 久996视频精品免费观看| 国产一区免费在线观看| 免费三A级毛片视频| 丁香婷婷久久| 99re视频在线| 四虎成人精品| 99久久无色码中文字幕| 精品超清无码视频在线观看| 91外围女在线观看| 九九香蕉视频| 视频在线观看一区二区| 亚洲动漫h| 超碰91免费人妻| 欧美日韩在线观看一区二区三区| 国产高清色视频免费看的网址| 久久精品无码国产一区二区三区| 精品少妇人妻无码久久| 色婷婷亚洲综合五月| 免费国产好深啊好涨好硬视频| 亚洲国产日韩视频观看| 最新亚洲人成网站在线观看| 亚洲精品成人7777在线观看| 在线视频一区二区三区不卡| 在线va视频| 国产白浆一区二区三区视频在线| 国产一区在线观看无码| 四虎国产精品永久一区| 国产在线观看一区精品| 日a本亚洲中文在线观看| 91在线国内在线播放老师| 在线亚洲小视频| 91精品啪在线观看国产60岁| 一区二区三区国产| 精品国产美女福到在线不卡f| 老司国产精品视频91|