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