劉一瑋 姚翠莉
摘 要:生物醫(yī)學(xué)關(guān)系抽取是自然語(yǔ)言處理的一個(gè)分支,很多對(duì)于關(guān)系抽取的研究都應(yīng)用了深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的方法。這些領(lǐng)域的理論及周邊知識(shí)在本科學(xué)習(xí)中是接觸不到的,這給本科生進(jìn)行科研活動(dòng)制造了一些困難。本文以DDI為例,解決語(yǔ)料的格式轉(zhuǎn)換問(wèn)題,旨在探索如何把常見(jiàn)的問(wèn)題模塊化,加快本科生的科研進(jìn)程。
關(guān)鍵詞:關(guān)系抽取 json xml
一、研究背景及意義
藥物-藥物相互作用(DDI)的定義被廣泛地描述為一種藥物的作用因另一種藥物的存在而改變。DDIs的檢測(cè)是患者安全性的一個(gè)重要研究領(lǐng)域,因?yàn)檫@些相互作用會(huì)變得非常危險(xiǎn)并增加醫(yī)療成本。在臨床實(shí)踐或臨床試驗(yàn)中患者有可能同時(shí)服用多種藥物,此時(shí)藥物會(huì)產(chǎn)生相互作用,報(bào)道顯示10% ~ 20%的不良反應(yīng)都由藥物相互作用( drugdruginteraction,DDI) 引起[1],嚴(yán)重情況下,藥物循環(huán)體系濃度可以增加10 倍以上,若不進(jìn)行劑量調(diào)整則可能引起致命不良反應(yīng)。2013年的DDIExtraction任務(wù)涉及生物醫(yī)學(xué)文獻(xiàn)中出現(xiàn)的藥物識(shí)別和藥物-藥物相互作用的提取,很多學(xué)者、博士和碩士在這個(gè)任務(wù)上進(jìn)行大量的科研工作,如M. Faisal 等使用支持向量機(jī)(svm[2]),Zeng等人使用卷積神經(jīng)網(wǎng)絡(luò)[3] 進(jìn)行了相關(guān)研究,但是由于相當(dāng)多的領(lǐng)域知識(shí)短時(shí)間內(nèi)根本無(wú)法來(lái)得及沉淀到本科教學(xué)中,一方面本科生對(duì)進(jìn)行科研活動(dòng)有這強(qiáng)烈的興趣;另一方面本科生有基礎(chǔ)薄弱、時(shí)間較少,如果科研反饋的周期過(guò)長(zhǎng)會(huì)導(dǎo)致興趣減弱甚至退出。DDIExtraction任務(wù)本身提供的語(yǔ)料是xml格式,而使用python的科研常用的格式是json,從xml到j(luò)son的轉(zhuǎn)換對(duì)本科生來(lái)說(shuō)設(shè)置了一道門(mén)檻,本文提供了從xml到j(luò)son的轉(zhuǎn)換方法,可以有效降低本科生參與科研活動(dòng)的難度,讓學(xué)生把更多的精力集中在模型搭建的核心問(wèn)題上。
二、Xml解析代碼介紹
import xml.etree.ElementTree as ET
from xml.parsers import expat
from lxml import etree
import json
f=open(filename, “w”)
parser=ET.XMLParser(encoding=”UTF-8”)
tree = ET.parse(d+/+fname, parser=parser)
root = tree.getroot()
for sent in root:
sent_id = sent.attrib[‘id]
for c in sent:
d_type = c.attrib[‘type]
首先是導(dǎo)入xml.etree.ElementTree,它是python處理xml文件的標(biāo)準(zhǔn)庫(kù),ET.parse()函數(shù)用來(lái)分析指定的xml文件,tree.getroot()獲得第一標(biāo)簽,sent.attrib['id'],獲得具體屬性。使用以上的關(guān)鍵函數(shù)可以解析xml文件,把對(duì)應(yīng)的屬性存儲(chǔ)到python對(duì)象中,然后存入到j(luò)son文件中。
三、JSON文件處理
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,使用的時(shí)候首先要導(dǎo)入json庫(kù)(),import json。json.dumps()函數(shù)用于將 Python 對(duì)象如字典、列表等編碼成 JSON 字符串,json.loads()函數(shù)則將json字符串解碼成字典、列表。json.dump()函數(shù)將python對(duì)象寫(xiě)入指定文件,json.load()函數(shù)將文件中的字符串轉(zhuǎn)換為python對(duì)象。
結(jié)語(yǔ):
本文以DDI2013中的語(yǔ)料處理為例,模塊化本科生在研究過(guò)程中所遇到的問(wèn)題,使本科生能夠更快的進(jìn)入的科研活動(dòng)中。經(jīng)過(guò)實(shí)踐證明對(duì)本科生進(jìn)行相應(yīng)科研工作有一定的幫助。
參考文獻(xiàn)
[1]Kannan B,Nagella AB,Sathia PA,et al. Incidence of potential drug-drug interactions in a limited and stereotyped prescription setting-comparison of two free online pharmacopoeias[J]. Cureus,2016,8 ( 11 ) :e886.
[2] M. Faisal , Fbk-irst: a multi-phase kernel based approach for drug-drug interaction detection and classification that exploits linguistic information, in: International Workshop on Semantic Evaluation, 2013, pp. 351–355 .
[3]D. Zeng , K. Liu , S. Lai , G. Zhou , J. Zhao , Relation classification via convolutional deep neural network, in: COLING, 2014, pp. 2335–2344 .