丘文峰 胡金芳 陳梅麗 鄧少嫦
(1.廣東醫(yī)科大學(xué)信息工程學(xué)院,東莞 523808)(2.廣東省實(shí)驗(yàn)動(dòng)物監(jiān)測(cè)所,廣東省實(shí)驗(yàn)動(dòng)物重點(diǎn)實(shí)驗(yàn)室,廣州 510663)
隨著互聯(lián)網(wǎng)的逐步社會(huì)化,各行各業(yè)的數(shù)據(jù)生產(chǎn)能力達(dá)到前所未有的高度,大數(shù)據(jù)(Big Data)概念在這一背景下被提了出來,并且吸引了越來越多的關(guān)注。疾病動(dòng)物模型是開展醫(yī)學(xué)研究及藥物研發(fā)的重要支撐工具[1]。利用疾病動(dòng)物模型開展研究,可以避免人體實(shí)驗(yàn)造成的風(fēng)險(xiǎn)和倫理問題,并可嚴(yán)格控制實(shí)驗(yàn)條件,排除復(fù)雜因素,增強(qiáng)實(shí)驗(yàn)材料的可比性,有助于全面地揭示疾病的本質(zhì)和發(fā)展規(guī)律,傳統(tǒng)模型檢索存在共享困難、重復(fù)研究和擴(kuò)展性差等問題[2-3]。目前,國(guó)外主要相關(guān)的數(shù)據(jù)庫有:美國(guó)NIH國(guó)立研究資源中心的LAMHDI網(wǎng)站連接的小鼠基因組信息學(xué)數(shù)據(jù)庫 MGI,大鼠基因組數(shù)據(jù)庫RGD,斑馬魚模型數(shù)據(jù)庫ZFIN,酵母菌基因組數(shù)據(jù)庫SGD等。國(guó)內(nèi)主要相關(guān)的數(shù)據(jù)庫有:中國(guó)實(shí)驗(yàn)動(dòng)物信息網(wǎng)絡(luò)中心(國(guó)家實(shí)驗(yàn)動(dòng)物數(shù)據(jù)資源中心)、國(guó)家遺傳工程小鼠資源庫等。這些數(shù)據(jù)庫主要以關(guān)系數(shù)據(jù)庫為基礎(chǔ),提供各類常規(guī)實(shí)驗(yàn)動(dòng)物生物學(xué)數(shù)據(jù)和基因工程實(shí)驗(yàn)動(dòng)物的特性研究數(shù)據(jù)。如何從數(shù)據(jù)庫的海量數(shù)據(jù)中快速、高效地檢索、智能挖掘出有用的動(dòng)物模型信息是目前疾病動(dòng)物模型檢索的一大難題。
近年來,開源搜索引擎不斷發(fā)展,Lucene、Sphinx、Xapian等代表性開源平臺(tái)已成為站內(nèi)搜索的新架構(gòu)[4]。本文結(jié)合基于Lucene 的ElasticSearch技術(shù),提出一種可伸縮的疾病動(dòng)物模型檢索技術(shù)。
對(duì)網(wǎng)絡(luò)開源的數(shù)據(jù)采集都是采用通用爬蟲技術(shù)。但在特定領(lǐng)域,僅需要采集專門主題數(shù)據(jù)。此時(shí),通用爬蟲技術(shù)通常會(huì)采集到大量的不相關(guān)信息,極大地浪費(fèi)硬件和網(wǎng)絡(luò)資源,這些不相關(guān)信息也不利于后續(xù)數(shù)據(jù)分析與檢索。為此,在現(xiàn)有主題爬蟲技術(shù)的基礎(chǔ)上,提出了一種適應(yīng)疾病動(dòng)物模型文獻(xiàn)采集的爬蟲技術(shù)。
文獻(xiàn)數(shù)據(jù)的調(diào)查與收集階段,檢索的中文文獻(xiàn)資源主要取自中國(guó)知網(wǎng)、萬方數(shù)據(jù)庫,外文文獻(xiàn)以NCBI數(shù)據(jù)平臺(tái)的pubmed和PMC數(shù)據(jù)庫為主[5-6]。通過對(duì)動(dòng)物模型制作與應(yīng)用方面的文獻(xiàn)結(jié)構(gòu)特征和特定的搜索引擎檢索模式的整理,并結(jié)合《人類疾病動(dòng)物模型復(fù)制方法學(xué)》《人類疾病動(dòng)物模型》以及《現(xiàn)代腫瘤學(xué)》等出版書籍中涉及的分類方法學(xué)的應(yīng)用,對(duì)文獻(xiàn)的檢索工作進(jìn)行分級(jí),通過分級(jí)檢索機(jī)制來實(shí)現(xiàn)文獻(xiàn)的分類。
通過用戶來定制上述指定資源中的檢索關(guān)鍵詞,再根據(jù)網(wǎng)站信息更新的頻率,設(shè)定定時(shí)器,周期性爬蟲這些網(wǎng)站或頻道中的數(shù)據(jù),并進(jìn)行解析和主題分析。本文設(shè)計(jì)的針對(duì)疾病動(dòng)物模型文獻(xiàn)采集的爬蟲軟件結(jié)構(gòu)如圖1所示。用戶可以對(duì)需要檢索的動(dòng)物模型主題提供關(guān)鍵詞,并選擇文獻(xiàn)數(shù)據(jù)源。采集程序根據(jù)文獻(xiàn)數(shù)據(jù)源信息更新頻率定時(shí)爬取。分類器根據(jù)用戶提供的動(dòng)物模型進(jìn)行文獻(xiàn)分類和內(nèi)容篩選,最后存入基礎(chǔ)數(shù)據(jù)庫中。
圖1 針對(duì)疾病動(dòng)物模型文獻(xiàn)采集的爬蟲軟件結(jié)構(gòu)Fig.1 Structure of reptile software for literature collection of animal model of disease
項(xiàng)目中動(dòng)物模型的確定是通過動(dòng)物模型相關(guān)綜述類文獻(xiàn)的統(tǒng)計(jì)獲得,主要涉及的實(shí)驗(yàn)動(dòng)物包括:鼠、兔、犬、猴、豬、雞、斑馬魚、樹鼩、旱獺和羊。平臺(tái)中涉及的疾病分類信息是利用近幾年的癌癥流行趨勢(shì)調(diào)查結(jié)果和癌癥/腫瘤分類學(xué)專業(yè)書籍等資料的整理篩選出來,主要分為頭頸部腫瘤(6種)、胸部腫瘤(3種)、腹腔腫瘤(4種)、泌尿及男性生殖系統(tǒng)腫瘤(3種)、婦科腫瘤(3種)、淋巴造血系統(tǒng)(2種)、皮膚軟組織及骨腫瘤(2種)。在腫瘤動(dòng)物模型制作方法的分類方面,主要采納了傳統(tǒng)的分類方法,即自發(fā)性動(dòng)物模型、誘發(fā)型動(dòng)物模型、移植型動(dòng)物模型和基因工程動(dòng)物模型四類。
采集程序的算法設(shè)計(jì)如圖2所示。其中,最核心的問題是如何提取文獻(xiàn)來源中感興趣信息。項(xiàng)目中嘗試采用兩種方式,一種是通過獲取網(wǎng)頁內(nèi)容,以DOM接口方式獲取感興趣信息;另一種是通過XPATH方式獲取感興趣信息。通過實(shí)驗(yàn)對(duì)比,最終采用XPATH方式提取文獻(xiàn)信息。相關(guān)實(shí)驗(yàn)對(duì)比結(jié)果見表1。
圖2 采集程序的算法流程Fig.2 Algorithm flow chart of acquisition program
表1 基于的DOM感興趣提取與基于XPATH的感興趣提取實(shí)驗(yàn)對(duì)比結(jié)果Table 1 Comparison of interest extractions based on DOM and XPATH
項(xiàng)目使用開源關(guān)系數(shù)據(jù)庫MYSQL存儲(chǔ)由采集程序獲取的基礎(chǔ)數(shù)據(jù)。MYSQL最早由瑞典MYSQL AB公司開發(fā),后經(jīng)Oracle收購(gòu)。MYSQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,而 AMP(Appache、MYSQL、PHP)是最流行的開源WEB開發(fā)框架。采集程序可以使用任何一種數(shù)據(jù)庫存儲(chǔ),最終選擇MYSQL主要是在系統(tǒng)整體設(shè)計(jì)中,MYSQL是一個(gè)最穩(wěn)定,開發(fā)最高效的搭配?;A(chǔ)數(shù)據(jù)庫包含采集數(shù)據(jù)的動(dòng)物模型信息,文獻(xiàn)標(biāo)題、摘要、作者、基金項(xiàng)目、文獻(xiàn)號(hào)、圖文信息、關(guān)鍵詞及動(dòng)物模型分類等。
項(xiàng)目使用 ElasticSearch作為搜索引擎核心。ElasticSearch由美國(guó)ElasticSearch BV公司開發(fā),是一個(gè)基于Lucene的開源分布式實(shí)時(shí)搜索與分析引擎[7]。它能提供高效全文搜索、專門的查詢語言、基于上下文的搜索建議、自動(dòng)完成以及搜索片段(Snippet)的能力,同時(shí)能夠方便生成 RESTful接口方便第三方應(yīng)用動(dòng)物模型數(shù)據(jù)庫。它致力于使開發(fā)者能夠使用盡量少的開發(fā)成本快速實(shí)現(xiàn)一個(gè)功能完整的檢索系統(tǒng),主要特點(diǎn)如下:①提供完整的RESTful API。所有的操作,包括搜索、統(tǒng)計(jì)分析、管理、監(jiān)控都能夠使用發(fā)送基于JSON的http請(qǐng)求實(shí)現(xiàn)。②分布式存儲(chǔ)的非關(guān)系數(shù)據(jù)庫,適應(yīng)不斷動(dòng)態(tài)增長(zhǎng)的大數(shù)據(jù)文獻(xiàn)檢索。這是ElasticSearch優(yōu)于傳統(tǒng)搜索引擎解決方案的地方。
由于基礎(chǔ)數(shù)據(jù)采用MYSQL存儲(chǔ),因此需要把采集的 MYSQL數(shù)據(jù)同步至 ElasticSearch。這里需要解決兩個(gè)技術(shù)難題:①數(shù)據(jù)的冗余性問題;②增量式更新。ElasticSearch本身不提供不同數(shù)據(jù)庫之間的同步。存在不同的同步數(shù)據(jù)工具,如ElasticSearch-JDBC、python-MYSQL-rep lication、go-MYSQL-ElasticSearch、mysqlbinlog等。其中 Logstash是最穩(wěn)定且易用的方案。
Logstash借助 Logstash-JDBC插件可以對(duì)任何支持JDBC數(shù)據(jù)接口的數(shù)據(jù)庫進(jìn)行讀取。使用Logstash完成MYSQL與ElasticSearch同步的技術(shù)路線見圖3。
圖3 使用Logstash完成M YSQL與ElasticSearch同步Fig.3 Synchronization of mysql and elasticsearch using logstash
同步根據(jù)Logstash腳本配置完成。項(xiàng)目中同步的示例代碼見圖4。
其中,document_id指示唯一ID,用于解決同步過程中的冗余問題。為了解決文獻(xiàn)數(shù)據(jù)持續(xù)增量更新問題,可以在上述腳本中增加“scheduler”屬性,指示腳本周期性自動(dòng)執(zhí)行同步。此外,MYSQL查詢時(shí)以“sql_last_value”為條件,只查詢同步以后新加入的數(shù)據(jù)。
基于ElasticSearch的疾病動(dòng)物檢索平臺(tái),借助開源SNS系統(tǒng)UCHOME,通過二次開發(fā)文獻(xiàn)檢索插件為用戶提供文獻(xiàn)檢索服務(wù),見圖5。用戶數(shù)據(jù)存儲(chǔ)在應(yīng)用數(shù)據(jù)庫中,包含用戶信息,用戶積分體系、活動(dòng)、群組及分享信息。而文獻(xiàn)檢索功能通過ElasticSearch提供的RESTful API完成。實(shí)驗(yàn)表明,該方案能夠推廣應(yīng)用于其他第三方應(yīng)用平臺(tái),如移動(dòng)應(yīng)用。
圖4 Logstash同步腳本Fig.4 Logstash synchronization scrip t
圖5 基于ElasticSearch的疾病動(dòng)物檢索平臺(tái)的用戶交互界面Fig.5 User Interface of Disease Animal Retrieval platform based on elasticsearch
綜上所述,基于 ElasticSearch的疾病動(dòng)物檢索平臺(tái)使用MYSQL,Appache服務(wù)器,服務(wù)器端采用W indows NT/2008 Server操作系統(tǒng),編程語言為Java。文獻(xiàn)搜索功能的實(shí)現(xiàn)采用的是ElasticSearch,即實(shí)時(shí)分布式搜索和分析引擎。這種彈性搜索模式主要用于全文搜索、結(jié)構(gòu)化搜索和分析,是一種基于Apache Lucene(TM)的開源搜索引擎。文獻(xiàn)自動(dòng)分類利用分級(jí)檢索機(jī)制將文獻(xiàn)檢索分為兩個(gè)步驟:①以“動(dòng)物分類+疾病分類”的檢索組合方式,針對(duì)文獻(xiàn)的“題目和摘要”進(jìn)行一級(jí)檢索,并下載全文。②利用建立好的標(biāo)準(zhǔn)字典與數(shù)據(jù)字典,以“模型制作方法分類”為相關(guān)的檢索詞,針對(duì)文獻(xiàn)的“材料與方法”進(jìn)行二級(jí)檢索。這種分級(jí)檢索機(jī)制在實(shí)現(xiàn)文獻(xiàn)分類的同時(shí),還可以系統(tǒng)自動(dòng)剔除無關(guān)文獻(xiàn),保證檢索獲得的文獻(xiàn)具有很高的相關(guān)性。基于ElasticSearch的疾病動(dòng)物檢索平臺(tái)的系統(tǒng)結(jié)構(gòu)見圖6。
圖6 基于ElasticSearch的疾病動(dòng)物檢索平臺(tái)的系統(tǒng)結(jié)構(gòu)Fig.6 System structure Diagram of Disease Animal Retrieval platform based on Elasticsearch
本文從構(gòu)建疾病動(dòng)物檢索平臺(tái)采集服務(wù)、基礎(chǔ)數(shù)據(jù)庫、彈性檢索和應(yīng)用數(shù)據(jù)庫四方面進(jìn)行討論。采集服務(wù)中針對(duì)兩種不同的爬蟲策略展開討論,并給出技術(shù)實(shí)施建議。彈性檢索是系統(tǒng)構(gòu)建核心,研究中采用兩種不同的異構(gòu)數(shù)據(jù)庫系統(tǒng),難點(diǎn)在于如何實(shí)現(xiàn)數(shù)據(jù)的持續(xù)增量更新和解決冗余方案,本文給出研究中的解決方案。
二次開發(fā)在社區(qū)平臺(tái)的基礎(chǔ)上集成文獻(xiàn)分類檢索功能,并給出完整的系統(tǒng)架構(gòu)。本研究開發(fā)的文獻(xiàn)分類檢索平臺(tái),可實(shí)現(xiàn)腫瘤疾病動(dòng)物模型文獻(xiàn)數(shù)據(jù)資源的整合,解決目前腫瘤動(dòng)物模型資源數(shù)據(jù)信息無序分散的問題,并能動(dòng)態(tài)地為研究者提供動(dòng)物模型的最新研究進(jìn)展,為科研工作者提供一個(gè)方便、實(shí)時(shí)、高效、專業(yè)的網(wǎng)絡(luò)信息平臺(tái)工具。同時(shí),本研究將為進(jìn)一步開展腫瘤動(dòng)物模型文獻(xiàn)數(shù)據(jù)挖掘工作奠定基礎(chǔ),逐步為行業(yè)提供模型制備的數(shù)據(jù)分析服務(wù),并增值開發(fā)相關(guān)的特色數(shù)據(jù)庫。
該文獻(xiàn)分類檢索系統(tǒng)的開發(fā),是實(shí)現(xiàn)動(dòng)物模型文獻(xiàn)資源挖掘的第一步,是建設(shè)疾病動(dòng)物模型資源共享平臺(tái)的基礎(chǔ),是進(jìn)一步挖掘文獻(xiàn)數(shù)據(jù)資源、開發(fā)增值功能軟件、建立特色數(shù)據(jù)庫的關(guān)鍵。