姚奕伸,張旖旎,周 婷,陳恩澤,陳曉星
(華北電力大學(xué) 控制與計(jì)算機(jī)工程學(xué)院,北京 102206)
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展和醫(yī)療水平的不斷提高,越來越多的用戶選擇上網(wǎng)搜索獲取醫(yī)療信息。中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心于2017年發(fā)布的《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》顯示,截至2016-12,中國(guó)網(wǎng)民規(guī)模達(dá)7.31億,相當(dāng)于歐洲人口總量,互聯(lián)網(wǎng)普及率達(dá)53.2%,其中,手機(jī)網(wǎng)民規(guī)模達(dá)6.95億,占比達(dá)95.1%,增速連續(xù)3年超10%[1].醫(yī)療信息檢索就是眾多網(wǎng)絡(luò)行為中重要的一部分。
在實(shí)際應(yīng)用中,用戶常選用通用搜索引擎,比如百度、Google檢索醫(yī)療信息。的確,這類綜合性搜索引擎資源范圍廣,用戶可以在搜索框中輸出關(guān)鍵詞檢索出幾乎任何類型、任何主題的信息,但是,正是由于其信息資源的廣闊性,出現(xiàn)了死鏈接繁多、廣告層出不窮、相關(guān)度精準(zhǔn)度低等問題,給用戶帶來了煩惱,且在一定程度上誤導(dǎo)用戶[2]。轟動(dòng)一時(shí)的魏則西事件更是揭露了混淆用戶視聽的百度競(jìng)價(jià)排名機(jī)制,引起了大量網(wǎng)民的口誅筆伐。針對(duì)這些問題,垂直搜索引擎應(yīng)運(yùn)而生。垂直搜索引擎[3]是針對(duì)某一個(gè)行業(yè)的專業(yè)搜索引擎,是搜索引擎的細(xì)分和延伸,是對(duì)網(wǎng)頁庫中的某類專門信息進(jìn)行一次整合,定向分字段抽取出需要的數(shù)據(jù)進(jìn)行處理后再以某種形式返回給用戶。垂直搜索引擎的召回率和準(zhǔn)確率遠(yuǎn)高于綜合性搜索引擎,因?yàn)樗奶囟ㄐ畔碓从谔囟ǖ木W(wǎng)站,在一定程度上保證了它的準(zhǔn)確率。
相比于通用搜索引擎,“醫(yī)家搜索”專門針對(duì)醫(yī)療行業(yè)的特定信息,致力于實(shí)現(xiàn)高召回率和高準(zhǔn)確率的醫(yī)療信息搜索,同時(shí)保證少之又少甚至零的廣告。通過搜集大量醫(yī)院網(wǎng)址,借助于開源搜索引擎Nutch,搭建出小型服務(wù)器,為用戶提供了一定的醫(yī)院信息服務(wù),同時(shí)也實(shí)現(xiàn)了移動(dòng)端的服務(wù)。
搜索引擎為用戶查找網(wǎng)上的資源,它的爬蟲會(huì)按照設(shè)定好的策略爬行,并采集信息,經(jīng)過處理后將結(jié)果返回給用戶。通用搜索引擎由網(wǎng)頁爬蟲、頁面分析、索引和檢索4個(gè)基本模塊構(gòu)成。
爬蟲(crawler),是用來在網(wǎng)絡(luò)上進(jìn)行信息抽取的程序。它從起始網(wǎng)站出發(fā),按照一定的策略,遍歷網(wǎng)站并且抓取各類型的網(wǎng)頁內(nèi)容。由于互聯(lián)網(wǎng)上的信息非常龐大,爬蟲不可能抽取到所有的信息,因此,需要按照一定的策略進(jìn)行爬取。常見的網(wǎng)絡(luò)采集策略有深度優(yōu)先采集、IP掃描采集和廣度優(yōu)先采集3種策略[4]。
為了便于建立索引,通用搜索引擎常在抓取完數(shù)據(jù)后進(jìn)行一定的預(yù)處理,一般包括頁面語法分析、詞匯分割、詞匯過濾等。垂直搜索引擎還需要進(jìn)行更深的數(shù)據(jù)挖掘和信息類型的判斷等操作,從而提高搜索的精準(zhǔn)度。
搜索引擎普遍使用的技術(shù)是倒排索引。所謂“倒排索引”,是相對(duì)于正向索引來說的,正向索引用來存儲(chǔ)每個(gè)文檔對(duì)應(yīng)的單詞列表,而倒排索引則是根據(jù)單詞來索引文檔編號(hào),每個(gè)單詞后邊的文檔編號(hào)列表叫做投遞列表。索引可使檢索對(duì)網(wǎng)頁的定位更加精確,減少計(jì)算時(shí)間,提高搜索引擎效率。
檢索模塊為用戶提供了一個(gè)方便檢索的接口,在用戶搜索相應(yīng)的關(guān)鍵詞后,搜索引擎對(duì)檢索到的結(jié)果進(jìn)行排序后呈現(xiàn)給用戶。排序主要依據(jù)搜索詞的相關(guān)度和權(quán)值,此外,還需考慮網(wǎng)頁的重要性和鏈接程度。
與通用搜索引擎抓取海量信息不同,垂直搜索引擎主要用于特定主體的抓取。垂直搜索引擎比通用搜索引擎的結(jié)果更加精準(zhǔn),它的爬蟲具有過濾功能,可實(shí)現(xiàn)對(duì)特定網(wǎng)頁的抓取,無關(guān)網(wǎng)頁的過濾。
垂直搜索引擎與通用搜索引擎的結(jié)構(gòu)基本相同,唯一的差別就是前者的爬蟲在抓取信息時(shí)會(huì)進(jìn)行一定的判別。這樣,就保證了爬蟲在工作時(shí)不會(huì)受到不相關(guān)信息的干擾,為返回準(zhǔn)確的結(jié)果打下基礎(chǔ)。
垂直搜索引擎與通用搜索引擎原理大致相同,但垂直搜索引擎也有自己比較明顯的特征,兩者的區(qū)別主要體現(xiàn)在以下幾個(gè)方面:①爬行策略。通用搜索引擎要實(shí)現(xiàn)的是更多的信息,所以,它傾向于全網(wǎng)的爬??;而垂直搜索引擎則只需爬取具有特定主題的網(wǎng)頁,爬取專業(yè)領(lǐng)域的深采集。②服務(wù)對(duì)象。通用搜索引擎面向全體網(wǎng)絡(luò)用戶,其數(shù)據(jù)覆蓋面比較廣,但其相對(duì)于某一特定領(lǐng)域的專業(yè)性比較差;垂直搜索引擎服務(wù)于專業(yè)人士或某一專業(yè)領(lǐng)域的檢索,因此,更加注重抓取的行業(yè)相關(guān)度和深度。③信息處理。通用搜索引擎注重網(wǎng)頁元數(shù)據(jù)的處理和結(jié)構(gòu)化信息的提取,在網(wǎng)頁排序方面通常采用PageRank算法;垂直搜索引擎還要在信息處理中加入主題判別功能,在排序方面比較多樣化。
面向醫(yī)療網(wǎng)站的搜索引擎的主要目標(biāo)是實(shí)現(xiàn)對(duì)某地區(qū)各大醫(yī)院網(wǎng)站、各科室的精準(zhǔn)搜索,同時(shí),還實(shí)現(xiàn)了對(duì)廣告的隔離,為用戶提供簡(jiǎn)潔直觀的搜索結(jié)果。因此,面向醫(yī)療的垂直搜索引擎應(yīng)當(dāng)至少包括以下幾個(gè)功能:①對(duì)特定醫(yī)院網(wǎng)站的數(shù)據(jù)采集,信息抽??;②對(duì)分類后的數(shù)據(jù)生成倒排文件和數(shù)據(jù)管理;③簡(jiǎn)單易操作的界面和直觀的返回結(jié)果。
根據(jù)以上功能需求,本文提出了一種基于Nutch的面向醫(yī)療網(wǎng)站的垂直搜索引擎,其工作流程如圖1所示。
圖1 垂直搜索引擎工作流程圖
基于Nutch的面向醫(yī)療的搜索引擎的搭建步驟如下。
Nutch是Java開發(fā)的開源項(xiàng)目,需要在JDK、Linux下工作,本搜索引擎使用JDK1.7,cygwin(Linux虛擬器),Nutch1.2來搭建[5]。如果需搭建分布式環(huán)境,則還需要Hadoop[6]。另外,在環(huán)境變量中分別為JDK、Nutch和Tomcat配置環(huán)境變量。
在nutch-1.2confNutch-site.xml中為Nutch設(shè)置工作信息,這些信息會(huì)附加在發(fā)給服務(wù)器的信息中,遵循HTTP協(xié)議。在之間添加以下內(nèi)容:格式如下:
同樣,在TomcatconfNutch-site.xml下為Tomcat配置相關(guān)信息,其信息與Nutch對(duì)應(yīng)目錄下一致。
本搜索引擎面向醫(yī)療,因此,爬蟲要抓取的應(yīng)是醫(yī)療方面的相關(guān)網(wǎng)站。利用一段簡(jiǎn)單的Java小程序找到行業(yè)網(wǎng)站,經(jīng)過實(shí)際操作觀察后,編寫特定規(guī)則的Java程序,獲取包含所需網(wǎng)址鏈接的網(wǎng)頁鏈接。同時(shí),編寫Java代碼獲取網(wǎng)頁源碼。編寫所需網(wǎng)址類型的正則表達(dá)式,采用首尾截取方式截取相關(guān)字段,以準(zhǔn)備好的正則表達(dá)式匹配之,最終獲得我們所需的網(wǎng)址鏈接。將獲得的鏈接整理好放于文檔中,用Nutch爬取,所得結(jié)果存儲(chǔ)于Nutch中的用戶自行命名創(chuàng)建的文檔中。采用這種方式,我們直接獲得所需的一手資料,獲得屬于自己的數(shù)據(jù)庫,能極大程度地剔除廣告帶來的影響。這樣,就可以得到大量與醫(yī)療相關(guān)的網(wǎng)站。我們將其放在Nutch根目錄下自己新建的一個(gè)文本文檔中,命名為seed.txt。
在Cygwin下進(jìn)行相應(yīng)的命令操作:①利用cd命令進(jìn)入到Nutch的根目錄下。②利用bin/nutch crawl seed.txt-dir crawl-depth 1-topN 1000-threads 5命令進(jìn)行抓取,seed.txt是存放目標(biāo)抓取網(wǎng)站的文本文檔;dir后跟爬取到的數(shù)據(jù)所存放的文件夾;depth為爬取的深度,此處設(shè)置為1;topN為爬取的廣度,此處設(shè)置為1 000;threads為爬蟲設(shè)置線程數(shù),此處設(shè)置為5.至此,本文的垂直搜索引擎已搭建完成,借助于Sunny垂Ngrok,我們將本地服務(wù)器的端口與申請(qǐng)的域名綁定在一起,實(shí)現(xiàn)移動(dòng)端的搜索。
召回率[7],是衡量某一檢索系統(tǒng)從文獻(xiàn)集合中檢出相關(guān)文獻(xiàn)成功度的一項(xiàng)指標(biāo),即檢出的相關(guān)文獻(xiàn)與全部相關(guān)文獻(xiàn)的百分比。普遍表示為:召回率=(檢索出的相關(guān)信息量/系統(tǒng)中的相關(guān)信息總量)×100%.
在召回率的實(shí)驗(yàn)中,大量文獻(xiàn)表明,通用搜索引擎的召回率遠(yuǎn)低于垂直搜索引擎。由于百度、搜狗、Yahoo等通用搜索引擎基于其數(shù)據(jù)庫信息保密的需要,我們無法精確地具體得知這些通用搜索引擎系統(tǒng)中的相關(guān)信息總量,但是,可以通過大量查詢得知中國(guó)人民解放軍醫(yī)院北京地區(qū)總共有13家,在百度、搜狗、Yahoo這3個(gè)搜索引擎中,對(duì)于這13家醫(yī)院,筆者一一檢索均能進(jìn)入其網(wǎng)站或者掌握該醫(yī)院數(shù)據(jù)庫的網(wǎng)站,然而當(dāng)檢索的關(guān)鍵詞為北京軍隊(duì)醫(yī)院官網(wǎng)時(shí),檢索的相關(guān)信息量就很少了。同樣的,醫(yī)家搜索庫里放了11個(gè)解放軍醫(yī)院的官網(wǎng),檢索出來的網(wǎng)站為6,由此可以進(jìn)一步推斷,醫(yī)家搜索的查全率高于通用搜索引擎。檢索結(jié)果對(duì)比如表1所示。
表1 檢索結(jié)果查全率對(duì)比圖
在醫(yī)家搜索中輸入“北京軍隊(duì)醫(yī)院官網(wǎng)”,檢索結(jié)果如圖2所示。
圖2 “北京軍隊(duì)醫(yī)院官網(wǎng)”檢索結(jié)果圖
研究表明,用戶希望檢索結(jié)果能隨相關(guān)度降序排列[8]。因此,前幾頁的搜索結(jié)果往往是用戶最為關(guān)注的。搜索引擎用戶通常只瀏覽前2頁的檢索結(jié)果,而且前3個(gè)檢索結(jié)果最為重要,其次是接下來的7個(gè)檢索結(jié)果,而后是再接著的10個(gè)檢索結(jié)果[9]。
在搜索框內(nèi)輸入關(guān)鍵詞“心血管”,檢索結(jié)果如圖3所示。
圖3 關(guān)鍵詞“心血管”檢索結(jié)果圖
所以,實(shí)驗(yàn)選取“心血管”“消化”2個(gè)醫(yī)療領(lǐng)域的關(guān)鍵詞進(jìn)行檢索,統(tǒng)計(jì)前2頁的檢索結(jié)果中與醫(yī)療主題相關(guān)結(jié)果的個(gè)數(shù),計(jì)算檢準(zhǔn)率,并與主流通用搜索引擎進(jìn)行比較,得出結(jié)果如表2所示。
表2 檢查結(jié)果相關(guān)性及排序質(zhì)量分析
分析表2中的數(shù)據(jù)可知,本搜索引擎相對(duì)于通用搜索引擎,檢準(zhǔn)率平均高出30%.雖然通用搜索引擎檢索信息量大,但多為重復(fù)信息或不相關(guān)信息,對(duì)于用戶而言都是無用的。實(shí)驗(yàn)表明,在檢索醫(yī)療信息方面,本搜索引擎比通用搜索引擎更為準(zhǔn)確。
本文基于Nutch,為用戶提供了醫(yī)療方面的信息檢索服務(wù),相比于百度、雅虎等搜索引擎,它具有更高的召回率和檢準(zhǔn)率,且廣告等冗余信息大大減少。與此同時(shí),本文的搭建方法具有普適性,他人可以據(jù)此搭建其他領(lǐng)域的垂直搜索引擎。
但我們尚有不足:①信息的捕獲過于煩瑣,需要人工操作,并不適應(yīng)當(dāng)今社會(huì)信息的爆炸增長(zhǎng);②中文分詞的功能不夠強(qiáng)大,搜索的精準(zhǔn)度有待進(jìn)一步提高;③檢索的結(jié)果未能細(xì)化到某一科室,對(duì)用戶來講檢索效率比較低。
在大數(shù)據(jù)時(shí)代的背景下,關(guān)于垂直搜索引擎技術(shù)的探討一直在繼續(xù),相信我們的不足會(huì)被有效解決。
[1]CNNIC發(fā)布第39次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》[J].中國(guó)信息安全,2017(02):24.
[2]施儉,王恒山,肖仰華,等.面向主題的垂直搜索引擎系統(tǒng)的研究與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2011(7):1-4,8.
[3]百度百科“垂直搜索”詞條[EB/OL].[2017-11-23].https://baike.baidu.com/item.
[4]袁恩閣.基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)[D].烏魯木齊:新疆大學(xué),2014.
[5]胡濤,路紅英.基于Nutch的搜索引擎的研究[J].計(jì)算機(jī)時(shí)代,2007(1):57-59.
[6]程苗,陳華平.基于Hadoop的Web日志挖掘[J].計(jì)算機(jī)工程,2011(11):37-39.
[7]準(zhǔn)確率(Accuracy),精確率(Precision),召回率(Recall)和 F1-Measure[EB/OL].[2017-12-01].https://rc.mbd.baidu.com/gk77wmo.
[8]Cortes C,Mohri M,Rastogi A.An Alternative RankingProblem for Search Engines[C]//International Conference on Experimental Algorithms.Springer-Verlag,2007:1-22.
[9]Leighton,H.V.,&Srivastava,J.First 20 Precision Among World Wide Web Search Services(Search Engines)[J].Journal ofAmerican Society for Information Science,1999(10 ):870-881.