謝文彬
(同濟(jì)大學(xué)電子與信息工程學(xué)院,上?!?01804)
?
基于網(wǎng)絡(luò)爬蟲和文本挖掘的實(shí)體關(guān)系研究與實(shí)現(xiàn)
謝文彬
(同濟(jì)大學(xué)電子與信息工程學(xué)院,上海201804)
摘要:
關(guān)鍵詞:
隨著科技不斷進(jìn)步,越來越多的生物資源在網(wǎng)上發(fā)布,PubMed Central(PMC)[1]是一個免費(fèi)的生物和生命科學(xué)文本全文數(shù)據(jù)庫。但是作為國外數(shù)據(jù),數(shù)據(jù)下載速度慢,能夠下載的資料并不是完整的PMC數(shù)據(jù),而且,僅僅只是下載原文,并不能給許多生物學(xué)者提供很多有價(jià)值的信息?,F(xiàn)在PMC數(shù)據(jù)庫中總計(jì)大約擁有380萬篇全文數(shù)據(jù),但是能夠通過FTP下載的文章只占到一半不到。其次,PMC自帶的搜索引擎并不能提供很好的實(shí)體關(guān)系搜索,例如要研究疾病和基因之間的關(guān)系。所以我們急需一種快捷有效的方法把生物學(xué)者所需的研究數(shù)據(jù)從網(wǎng)頁上下載下來,經(jīng)過預(yù)處理,成為本地可以批量處理的數(shù)據(jù),再通過本地的服務(wù)器對數(shù)據(jù)進(jìn)行快速的搜索抽取工作。
文本挖掘的主要用途是從原本未經(jīng)處理的文本中提取出未知的知識,但是文本挖掘也是一項(xiàng)非常困難的工作,因?yàn)樗仨毺幚砟切┍緛砭湍:曳墙Y(jié)構(gòu)化的文本數(shù)據(jù),所以它是一個多學(xué)科混雜的領(lǐng)域,涵蓋了信息技術(shù)、文本分析等技術(shù),而且在網(wǎng)絡(luò)時代,原始數(shù)據(jù)的獲取主要通過網(wǎng)絡(luò)途徑,所以在實(shí)際挖掘過程中,系統(tǒng)分為4個大模塊:
1.1收集與實(shí)體相關(guān)的論文
在PMC中,有官方網(wǎng)頁提供的搜索引擎(http:// www.ncbi.nlm.nih.gov/pmc/),通過該搜索引擎,可以先做粗篩選。例如研究基因和疾病的關(guān)系,可以在搜索欄中輸入“Gene Disease”,結(jié)果搜索到大約74萬的論文,這樣可以去除數(shù)據(jù)庫中大部分與研究對象無關(guān)的論文,然后使用網(wǎng)站提供的下載功能抽出這些論文的編號,作為URL的部分地址。
1.2網(wǎng)絡(luò)爬蟲
將上一步收集的網(wǎng)頁編號,根據(jù)PMC論文自帶的論文URL地址,http://www.ncbi.nlm.nih.gov/pmc/articles/ PMC3578923/,其中“3578923”替換成任意待抓取的文章。批量抓取所需要研究的論文。
1.3數(shù)據(jù)處理與清洗
將從網(wǎng)頁上爬取的XML格式的文本數(shù)據(jù)進(jìn)行去標(biāo)記語言,識別論文所具有的編號、題目、摘要、論文主題、作者、引用等信息,存入本地用于文本挖掘。
1.4文本挖掘
在文本挖掘中,預(yù)先準(zhǔn)備好兩種實(shí)體的詞庫,例如基因詞庫,包括基因的編號,正式名字和同義名的信息。然后將論文切分成句子,搜索兩類實(shí)體是否同時出現(xiàn)在一個句子里,若有則抽取出來,并認(rèn)為兩個實(shí)體間很可能有關(guān)系,最后在進(jìn)行所需研究。
圖1 系統(tǒng)基本結(jié)構(gòu)和工作流程
2.1網(wǎng)絡(luò)爬蟲
網(wǎng)絡(luò)爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分。爬蟲的主要目的是將互聯(lián)網(wǎng)上的網(wǎng)頁下載到本地形成一個內(nèi)容的鏡像備份。該網(wǎng)絡(luò)爬蟲模塊以python為基礎(chǔ)語言,調(diào)用thread、urllib2和socket三個程序包,編寫網(wǎng)絡(luò)爬蟲。
其中thread包的多線程爬取加速爬取速度,并且加入異常處理模塊,以下為部分代碼:
2.2去標(biāo)記語言
使用正則表達(dá)式,去除無用標(biāo)記語言,并識別XML網(wǎng)頁文件中所需信息,以下為部分代碼:
2.3倒排索引
在文本挖掘中,詞庫以字典作為存儲形式,每個疾病對應(yīng)唯一編號和它的若干個疾病同義名。在查找句子中單詞所對應(yīng)的疾病時,為了加速搜索,使用倒排索引記錄疾病詞庫信息。如表1,字典編號使用疾病的名字,對應(yīng)的映射是疾病的編號。在檢索中,將字典按照名字排序,在使用二分查找對應(yīng)疾病名字是否存在字典中,并找出對應(yīng)編號。
表1 疾病倒排索引存儲形式
2.4停用詞表
停用詞表包含了文章中的常用詞。例如表示數(shù)量的詞語,語氣詞等。這些詞不僅可能和研究實(shí)體重名,導(dǎo)致嚴(yán)重的檢索錯誤,更會加重我們的檢索負(fù)擔(dān)。在實(shí)際檢索中,系統(tǒng)會先確定單詞是否屬于停用詞表,若屬于則不檢索該詞。
疾病詞庫從DiseaseOntology[2]中下載整理,總共8944個不同疾??;基因詞庫從NCBI(http://www.ncbi. nlm.nih.gov/gene/)中下載整理,總共29521個不同的基因,從PMC中抓取總共74萬多篇文獻(xiàn)。使用文本挖掘系統(tǒng)檢索,結(jié)果共有140813條句子同時包含基因和疾病名字。
隨著網(wǎng)絡(luò)資源的不斷膨脹,社會越來越需要各種自動化的技術(shù)來去除有用的信息,收集有價(jià)值的信息,并提取信息中的規(guī)律造福人類,例如某些基因?qū)е履撤N疾病的產(chǎn)生。本文基于網(wǎng)絡(luò)爬蟲和文本挖掘的常用技術(shù),為生物科學(xué)家對于實(shí)體間關(guān)系的研究,例如基因和疾病,疾病和藥物,藥物和蛋白質(zhì)等各種關(guān)系,提供了便利的文本抽取方法。
參考文獻(xiàn):
[1]Coordinators,N. R. "Database resources of the National Center for Biotechnology Information."[J]Nucleic Acids Res,2016 44(D1): D7-D19.
[2]Schriml,LM;Arze,C;Nadendla,S;Chang,YW;Mazaitis,M;Felix,V;Feng,G;Kibbe,WA . Disease Ontology: a Backbone for Disease Semantic Integration.[J]. Nucleic Acids Research 40(Database issue)2012: D940-6.
Research on Entity Relationship Based on Web Crawler and Text Mining
XIE Wen-bin
(School of Electronics and Information Engineering,Tongji University,Shanghai 201803)
Abstract:
Keywords:
隨著網(wǎng)絡(luò)資源的不斷膨脹,有關(guān)生物文獻(xiàn)資源越來越多,生物學(xué)家急需各種自動化的技術(shù)從海量文獻(xiàn)中抽取有價(jià)值的信息?;诰W(wǎng)絡(luò)爬蟲和文本挖掘的技術(shù),設(shè)計(jì)研發(fā)一個用于挖掘網(wǎng)絡(luò)上電子版論文中實(shí)體關(guān)系的系統(tǒng),并且使用該系統(tǒng),成功挖掘有關(guān)疾病和基因的關(guān)系。
網(wǎng)絡(luò)爬蟲;實(shí)體;文本挖掘;疾?。换?/p>
文章編號:1007-1423(2016)13-0019-03
DOI:10.3969/j.issn.1007-1423.2016.13.005
作者簡介:
謝文彬(1990-),男,江蘇蘇州人,碩士研究生,研究方向?yàn)槲谋就诰蚺c關(guān)系抽取
收稿日期:2016-03-15修稿日期:2016-04-16
With the continuous increase of web resource,more and more document resource emerges,biologists are urgent to get valuable information from huge document by using a variety of automatics technique. Based on the development of web crawler and text mining,designs a novel system to excavate the entity relationship among electronic papers on the internet and apply successfully such system to catch the relation between disease and gene.
Web Crawler;Entity;Text Mining;Disease;Gene