王運(yùn)乾,王以松,2,陳攀峰,鄒 龍
(1.貴州大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025;2.公共大數(shù)據(jù)國家重點(diǎn)實(shí)驗(yàn)室(貴州大學(xué)),貴州 貴陽 550025)
隨著信息時(shí)代的發(fā)展,大數(shù)據(jù)的快速增長使得搜索引擎不斷更新?lián)Q代。自1989年Berners-Lee發(fā)明萬維網(wǎng)到“語義網(wǎng)(semantic Web)”的提出[1],實(shí)現(xiàn)了從超文本鏈接到語義鏈接的跨越。隨后,鏈接數(shù)據(jù)概念的提出強(qiáng)調(diào)語義網(wǎng)的本質(zhì)是要建立開放數(shù)據(jù)之間的鏈接。2012年,由谷歌提出知識(shí)圖譜[2](knowledge graph)的概念并發(fā)布基于知識(shí)圖譜的搜索引擎產(chǎn)品。隨后,有關(guān)知識(shí)圖譜的研究逐漸成為熱點(diǎn),并有大量的知識(shí)圖譜被構(gòu)建。原因在于知識(shí)圖譜在智能問答、語義搜索、專家系統(tǒng)和推薦系統(tǒng)等各類智能應(yīng)用中發(fā)揮著重要作用。
在各行業(yè)信息化不斷發(fā)展的背景下,人工智能+精準(zhǔn)醫(yī)療等概念被提出。知識(shí)圖譜作為醫(yī)療信息資源轉(zhuǎn)化為結(jié)構(gòu)化知識(shí)的載體,對促進(jìn)智慧醫(yī)療的發(fā)展具有重要意義。當(dāng)前,新冠肺炎疫情肆虐全球,我國疫情得到很好的控制,其中中醫(yī)藥發(fā)揮了重要作用,對中醫(yī)藥的研究成為當(dāng)下的熱門,人們對中醫(yī)藥用植物的分布、治療疾病、種屬關(guān)系等信息有迫切需求。然而,目前從互聯(lián)網(wǎng)獲取這些藥用植物信息大部分依賴于搜索引擎,要想獲取進(jìn)一步的相關(guān)知識(shí),需要再次閱讀和篩選,信息檢索的效率低下。人們迫切需要一個(gè)輸入藥用植物相關(guān)的自然語言問題并能精準(zhǔn)回答對應(yīng)問題的問答系統(tǒng)。因此,構(gòu)建藥用植物知識(shí)庫對實(shí)現(xiàn)智能問答有重要的研究意義和應(yīng)用價(jià)值。
命名實(shí)體識(shí)別[3](Named Entity Recognition, NER)作為信息抽取的基礎(chǔ)步驟,對于知識(shí)圖譜的構(gòu)建發(fā)揮著重要作用。它的主要任務(wù)是識(shí)別文本中的人名、地名等專有名稱和有意義的時(shí)間、日期等數(shù)量短語并加以歸類[4]。命名實(shí)體識(shí)別任務(wù)主要的方法一般分為3類:一類是基于規(guī)則的方法,通過人工構(gòu)建匹配規(guī)則模板從文本中獲取符合規(guī)則的實(shí)體,這類方法規(guī)則定義繁瑣復(fù)雜并依賴行業(yè)專家。另一類是基于統(tǒng)計(jì)機(jī)器學(xué)習(xí)的方法。典型的機(jī)器學(xué)習(xí)模型有隱馬爾可夫模型[5](Hidden Markov Model, HMM)、支持向量機(jī)[6](Support Vector Machine, SVM)、CRF[7](Conditional Random Fields)等。此類方法需要構(gòu)建復(fù)雜的特征工程。還有一類是基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)方法,此類方法由數(shù)據(jù)驅(qū)動(dòng)并具有較好的泛化性,尤其是使用詞向量表示詞語的方法的出現(xiàn),促使命名實(shí)體識(shí)別得到進(jìn)一步的發(fā)展?;谏疃葘W(xué)習(xí)的NLP任務(wù),近期Devlin等[8]提出了基于雙向Transformer的大規(guī)模預(yù)訓(xùn)練語言模型BERT,刷新了11項(xiàng)NLP任務(wù)的最優(yōu)性能記錄。而后Yang等[9]提出了一種泛化的自回歸預(yù)訓(xùn)練模型XLNet,該模型在20個(gè)任務(wù)上超過了BERT的表現(xiàn),并在18個(gè)任務(wù)上取得了當(dāng)前最佳效果。隨著命名實(shí)體識(shí)別技術(shù)的發(fā)展,在特定領(lǐng)域下的命名實(shí)體識(shí)別研究引起了學(xué)者們的重視,對領(lǐng)域命名實(shí)體識(shí)別的研究逐漸深入,如軍事領(lǐng)域[10]、農(nóng)業(yè)領(lǐng)域[11]、商品領(lǐng)域[12]等。應(yīng)用序列到序列的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[13],如LSTM-CNN[14]用于學(xué)習(xí)字級(jí)別和詞級(jí)別的特征,并且對部分詞典匹配詞進(jìn)行編碼。Xia等[15]針對嵌套的和不重疊的命名實(shí)體提出了一種集成不同粒度的實(shí)體位置檢測和基于注意力的實(shí)體分類框架。Xu等[16]在臨床醫(yī)學(xué)命名實(shí)體識(shí)別研究中,驗(yàn)證了BiLSTM模型在沒有特征工程和較少的標(biāo)注數(shù)據(jù)的情況下效果優(yōu)于CRF算法。Huang等[17]提出了雙向長短期記憶神經(jīng)網(wǎng)絡(luò)結(jié)合條件隨機(jī)場(BiLSTM-CRF)模型做序列標(biāo)注,并與多個(gè)基礎(chǔ)神經(jīng)網(wǎng)絡(luò)模型做對比試驗(yàn),BiLSTM-CRF模型取得了較好的效果。Zhou等[18]提出了一種基于詞級(jí)別注意力機(jī)制的BiLSTM模型,在有監(jiān)督的關(guān)系分類任務(wù)數(shù)據(jù)集上取得了很好的效果。楊紅梅等[19]采用BiLSTM結(jié)合CRF模型進(jìn)行命名實(shí)體識(shí)別,建立了目前規(guī)模最大的中文肝癌??普Z料庫。栗冬冬[20]將BiLSTM和CNN結(jié)合作為命名實(shí)體識(shí)別模型,利用卷積神經(jīng)網(wǎng)絡(luò)CNN模型提取更重要的詞語特征,有效提高了識(shí)別效果。李冬梅等[21]提出了一種針對植物屬性文本的命名實(shí)體識(shí)別方法,該方法基于雙向長短時(shí)記憶網(wǎng)絡(luò)BiLSTM、卷積神經(jīng)網(wǎng)絡(luò)CNN和條件隨機(jī)場CRF模型在植物屬性文本的命名實(shí)體識(shí)別任務(wù)上有很好的表現(xiàn),然而由于其模型復(fù)雜度和參數(shù)規(guī)模的限制,該方法整體的效率不高,同時(shí)沒有考慮不同字和詞在句子中重要性不同,識(shí)別效果還有進(jìn)一步提升的空間。
本文針對傳統(tǒng)命名實(shí)體識(shí)別模型在藥用植物屬性文本疾病命名實(shí)體識(shí)別任務(wù)中存在長序列語義消失的問題,提出一種基于注意力機(jī)制的雙向長短時(shí)記憶網(wǎng)絡(luò)BiLSTM和條件隨機(jī)場CRF模型相結(jié)合的BAC方法,從藥用植物屬性文本中識(shí)別出疾病命名實(shí)體,利用注意力機(jī)制把重點(diǎn)關(guān)注有效信息而忽略次要信息,有效提升F1值從而獲得更好的識(shí)別效果。利用該方法訓(xùn)練好的模型從藥用植物屬性文本中抽取出藥用植物治療疾病的關(guān)系三元組數(shù)據(jù),構(gòu)建藥用植物知識(shí)庫。
BAC方法充分利用BiLSTM模型獲取藥用植物屬性文本的上下文信息,并通過注意力機(jī)制對BiLSTM模型的輸出特征向量進(jìn)行選擇性的學(xué)習(xí),得到一個(gè)歸一化向量,并與BiLSTM模型的輸出進(jìn)行加權(quán)求和,學(xué)習(xí)到藥用植物屬性文本更多的隱含特征,然后經(jīng)過CRF模型計(jì)算前后標(biāo)簽的轉(zhuǎn)移概率,得到最優(yōu)的標(biāo)簽序列,從而可以較為準(zhǔn)確地識(shí)別出疾病實(shí)體。該方法的流程如圖1所示。
圖1 BAC方法流程圖
本文以從中國植物志網(wǎng)(http://www.iplant.cn/frps)爬取的藥用植物屬性文本來構(gòu)建數(shù)據(jù)集,用于藥用植物文本疾病命名實(shí)體識(shí)別。中國植物志藥用植物屬性文本示例如圖2所示,首先通過數(shù)據(jù)清洗去除噪音并從中篩選出描述藥用植物治療疾病的段落作為候選數(shù)據(jù)集。然后對段落以句號(hào)、分號(hào)等句子結(jié)束符進(jìn)行分句,并在句子開頭加入該段落所描述的藥用植物名稱。最后利用分詞工具結(jié)合疾病詞典(由國際疾病分類ICD-10中獲取疾病名稱構(gòu)建而成)對句子進(jìn)行分詞、半自動(dòng)化標(biāo)注,最終構(gòu)建了藥用植物疾病命名實(shí)體識(shí)別數(shù)據(jù)集。以“楓香槲寄生”的藥用屬性描述文本為例說明半自動(dòng)化標(biāo)注語料的過程?!皸飨汩渭纳钡乃幱脤傩悦枋鑫谋緸椋骸叭耆胨帲物L(fēng)濕性關(guān)節(jié)疼痛、腰肌勞損,民間以寄生于楓香樹上的為佳;云南思茅民間則以本種用于治急性膀胱炎?!笔紫葘⒃撐谋景捶痔?hào)分為2個(gè)句子,由于藥用植物屬性文本中的疾病實(shí)體具有較強(qiáng)的專業(yè)性,使用開放領(lǐng)域常用的分詞工具比如Jieba分詞、LTP分詞工具、清華Thulac等并不能滿足藥用植物文本中特定語義的分詞。例如:“風(fēng)濕性關(guān)節(jié)疼痛”是一個(gè)疾病實(shí)體,使用分詞工具會(huì)被分詞為“風(fēng)濕性/關(guān)節(jié)/疼痛”,從而使分詞效果并不理想。為了解決這個(gè)問題,通過收集現(xiàn)有的藥用植物領(lǐng)域疾病實(shí)體作為疾病詞典,結(jié)合疾病詞典進(jìn)行分詞,然后按照BMESO對分詞結(jié)果進(jìn)行標(biāo)注。標(biāo)記為B-Disease、M-Disease、E-Disease、S-Disease、O,分別表示疾病實(shí)體的首部、疾病實(shí)體的中部、疾病實(shí)體的尾部、單個(gè)疾病實(shí)體、非疾病詞。
圖2 藥用植物屬性文本示例
表1為“楓香槲寄生”的藥用屬性文本采用BMESO標(biāo)記疾病實(shí)體的一個(gè)實(shí)例。
表1 BMESO標(biāo)記疾病實(shí)體實(shí)例
中國植物志中的藥用植物屬性文本描述方式多樣化,句子長度參差不齊,通常對不同特征的描述分段表示,且疾病實(shí)體長短不一,比如“癰”、“癰疽瘡腫”、“晚期血吸蟲病肝脾腫大”等都屬于疾病實(shí)體。本文提出的BAC方法針對藥用植物屬性文本中疾病實(shí)體的這些結(jié)構(gòu)特點(diǎn)采用BMESO標(biāo)注法對疾病實(shí)體進(jìn)行標(biāo)注,融合注意力機(jī)制對BiLSTM隱藏層輸出進(jìn)行選擇性學(xué)習(xí),把重點(diǎn)放在需要關(guān)注的目標(biāo)信息,進(jìn)而忽略次要信息,可以有效解決長序列語義稀疏的問題。首先利用LTP工具對藥用植物屬性文本進(jìn)行分句、分詞,結(jié)合疾病詞典對語料進(jìn)行半自動(dòng)化標(biāo)注,語料標(biāo)注完成之后,將語料分為訓(xùn)練集和測試集。隨后,采用Word2vec對訓(xùn)練集和測試集訓(xùn)練得到數(shù)據(jù)集的特征向量,對語料進(jìn)行基于詞的向量化表示。將特征向量輸入BiLSTM+ATT模塊得到基于注意力機(jī)制的隱含狀態(tài)表示h={h1,h2,…,hn},接下來將狀態(tài)h作為輸入傳輸?shù)紺RF模塊,計(jì)算在狀態(tài)h的條件下,語料中的詞屬于各個(gè)標(biāo)簽的概率,并得到得分最高的標(biāo)簽序列。然后計(jì)算模型預(yù)測的標(biāo)簽序列與實(shí)際標(biāo)注結(jié)果之間的損失,利用損失函數(shù)對神經(jīng)元之間的鏈接權(quán)重進(jìn)行更新。隨后計(jì)算全局損失,當(dāng)模型達(dá)到要求精度,則保存模型。最后利用訓(xùn)練好的模型,輸入驗(yàn)證語料,得到最佳的標(biāo)簽序列,進(jìn)而從驗(yàn)證語料中識(shí)別出疾病實(shí)體。以楓香槲寄生為例,由表1的標(biāo)注結(jié)果可知,從文本中識(shí)別出了“風(fēng)濕性關(guān)節(jié)疼痛”、“腰肌勞損”、“急性膀胱炎”這3個(gè)疾病實(shí)體。從而抽取到3個(gè)三元組數(shù)據(jù)為:<楓香槲寄生,治療,風(fēng)濕性關(guān)節(jié)疼痛>、<楓香槲寄生,治療,腰肌勞損>、<楓香槲寄生,治療,急性膀胱炎>。
對于BiLSTM模型輸出的語義向量無法準(zhǔn)確表示長序列句子信息的問題,本文在藥用植物屬性文本識(shí)別疾病實(shí)體任務(wù)中引入注意力機(jī)制,將注意力重點(diǎn)放在更有價(jià)值的信息上,從而得到更好的識(shí)別效果?;谧⒁饬C(jī)制的BiLSTM網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 基于注意力機(jī)制的BiLSTM網(wǎng)絡(luò)結(jié)構(gòu)
圖3中,BiLSTM層包含左右序列上下文表示的2個(gè)子網(wǎng)絡(luò),將前向和后向傳遞網(wǎng)絡(luò)結(jié)合來捕獲文本的前后信息特征。BiLSTM層第i個(gè)字的輸出可以表示為:
(1)
設(shè)H是BiLSTM層輸出向量組成的矩陣[h1,h2,…,hT],其中T為句子長度。Attention層的句子權(quán)重矩陣γ由這些輸出向量的加權(quán)和構(gòu)成:
M=tanh(H)
(2)
α= softmax(ωTM)
(3)
γ=HαT
(4)
其中,H∈Rdω×T,dω表示詞向量的維數(shù),ω是一個(gè)訓(xùn)練的參數(shù)向量,ωT是ω的轉(zhuǎn)置向量。ω、α、γ的維數(shù)分別為dω、T、dω。基于注意力機(jī)制BiLSTM最終輸出可以表示為:
h*=tanh(γ)
(5)
基于注意力機(jī)制[22]的BiLSTM模塊[23]雖然很好地學(xué)習(xí)到了文本的上下文特征,但是其輸出序列是相互獨(dú)立的。因此,還需要對最優(yōu)標(biāo)注序列進(jìn)行預(yù)測。CRF充分考慮領(lǐng)域內(nèi)標(biāo)簽之間的相關(guān)性,將同一個(gè)特征在不同位置求和,進(jìn)行全局歸一化處理,從而得到全局最優(yōu)解,避免了標(biāo)簽偏置問題。設(shè)x={x1,x2,…,xn}表示藥用植物屬性文本輸入句子的特征向量,其中xi是第i個(gè)字的特征向量。設(shè)y={y1,y2,…,yn}表示x的標(biāo)簽序列。Y(x)表示x的可能標(biāo)簽序列的集合。CRF的概率模型定義了在特征x下,模型輸出標(biāo)簽為y的條件概率,其形式如下:
(6)
本文提出的藥用植物屬性文本命名實(shí)體識(shí)別方法BAC的模型框架如圖4所示。首先,將藥用植物屬性文本采用Word2vec模型進(jìn)行預(yù)訓(xùn)練,得到包含特定含義的詞向量(本文預(yù)訓(xùn)練詞向量的維度為100)。然后將預(yù)訓(xùn)練好的詞向量輸入雙向LSTM,提取文本序列的上下文特征,其中前向和后向LSTM分別獲取當(dāng)前詞的未來和過去時(shí)刻的信息,并將該時(shí)刻2個(gè)方向的特征向量進(jìn)行拼接得到雙向LSTM最終輸出矩陣H。接下來,將BiLSTM層得到的輸出矩陣H送入Attention層,對權(quán)重參數(shù)ω進(jìn)行訓(xùn)練優(yōu)化得到權(quán)重矩陣α,并與矩陣H進(jìn)行加權(quán)求和得到Attention層的輸出結(jié)果h*。最后,將h*輸入CRF層,計(jì)算文本句子序列的轉(zhuǎn)移概率,得到轉(zhuǎn)移概率最大的即為最優(yōu)的標(biāo)簽序列作為結(jié)果輸出,從而完成藥用植物屬性文本中疾病命名實(shí)體識(shí)別任務(wù)。
圖4 BAC方法模型框架
本文通過爬蟲經(jīng)過數(shù)據(jù)過濾、清洗、解析,從中國植物志爬取到1680條關(guān)于藥用植物的屬性文本句子。為了得到穩(wěn)定可靠的模型,采用十折交叉驗(yàn)證進(jìn)行實(shí)驗(yàn),即隨機(jī)選擇其中900條句子進(jìn)行標(biāo)注,輪流將其中810條作為訓(xùn)練集,90條作為測試集,并將10次實(shí)驗(yàn)結(jié)果的均值作為最終的模型評價(jià)指標(biāo)結(jié)果。實(shí)驗(yàn)采用準(zhǔn)確率(Precision,P)、召回率(Recall,R)、F值(F-measure)作為評估模型的評價(jià)指標(biāo)。具體定義如下:
實(shí)驗(yàn)環(huán)境為Intel(R)Core(TM)i7-8700的CPU,8 GB內(nèi)存,1 TB硬盤。編譯平臺(tái)為IntelliJ IDEA ULTIMATE 2018.1,Python3.6,TensorFlow1.13.1。實(shí)驗(yàn)參數(shù)設(shè)置如表2所示。為驗(yàn)證BAC方法的效果,實(shí)驗(yàn)選擇BiLSTM、BiLSTM-CRF、ATT+BiLSTM模型做對比。實(shí)驗(yàn)結(jié)果如表3所示。
表2 實(shí)驗(yàn)參數(shù)設(shè)置
表3 疾病實(shí)體識(shí)別模型比較
通過對比實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),BiLSTM-CRF模型比BiLSTM模型的準(zhǔn)確率、召回率和F值分別提升2.73%、5.16%、3.96%,說明加入CRF模型獲取最優(yōu)的標(biāo)簽序列,可以有效提高模型的召回率Recall值,其原因在于CRF模型通過計(jì)算標(biāo)簽序列的轉(zhuǎn)移概率并選擇最優(yōu)的標(biāo)簽序列作為最終輸出,從而有效避免標(biāo)簽的不合法性,例如M或E標(biāo)簽被標(biāo)注成實(shí)體頭或單字實(shí)體為不合法標(biāo)簽,CRF模型能有效避免此類標(biāo)簽序列,從而使模型獲得更好的識(shí)別效果。ATT+BiLSTM模型與BiLSTM模型的實(shí)驗(yàn)結(jié)果比較,準(zhǔn)確率、召回率和F值分別提升了3.22%、1.66%和5.46%。說明BiLSTM模型引入注意力機(jī)制,可以有效提高模型的準(zhǔn)確率,原因在于注意力機(jī)制能有效去除噪聲,將重點(diǎn)放在更有價(jià)值的信息上,從而提高識(shí)別效果。由表3可知,采用BAC方法得到的結(jié)果相較于傳統(tǒng)的BiLSTM模型,在準(zhǔn)確率、召回率以及F值都有明顯的提升,與ATT+BiLSTM和BiLSTM-CRF模型相比,BAC方法也有更好的表現(xiàn)。說明在BiLSTM-CRF模型中引入注意力機(jī)制的BAC方法可以有效解決藥用植物屬性文本存在長序列語義稀疏的問題,從而提高疾病命名實(shí)體識(shí)別效果。
鑒于BAC方法在藥用植物屬性文本的疾病實(shí)體識(shí)別任務(wù)中取得了比較好的效果,利用該方法訓(xùn)練好的模型從1680條非結(jié)構(gòu)化文本句子中抽取疾病實(shí)體,共抽取出1422個(gè)疾病實(shí)體。與藥用植物名稱進(jìn)行匹配,共抽取出4316個(gè)藥用植物治療疾病關(guān)系的三元組數(shù)據(jù),從而構(gòu)建了藥用植物知識(shí)庫。藥用植物知識(shí)示例如圖5所示。
圖5 藥用植物知識(shí)示例
本文針對傳統(tǒng)命名實(shí)體識(shí)別模型在藥用植物屬性文本中的疾病命名實(shí)體識(shí)別任務(wù)中存在長序列語義消失的問題,提出了融合注意力機(jī)制的BiLSTM結(jié)合CRF的BAC方法對疾病實(shí)體進(jìn)行識(shí)別和提取,并通過匹配藥用植物名稱從藥用植物文本中抽取出藥用植物知識(shí)。實(shí)驗(yàn)結(jié)果表明,BAC方法比傳統(tǒng)的BiLSTM、BiLSTM-CRF模型以及ATT+BiLSTM模型在準(zhǔn)確率、召回率和F值上都有明顯的提升,能夠有效地用于藥用植物屬性文本中疾病實(shí)體識(shí)別任務(wù)。然而,本文提出的方法相對于通用命名實(shí)體識(shí)別方法,其識(shí)別效果還有提升的空間。在未來的研究中,可以探索將通用命名實(shí)體識(shí)別模型遷移到領(lǐng)域語料,根據(jù)領(lǐng)域語料的特點(diǎn)從多個(gè)維度考慮文本的語法特征、句法結(jié)構(gòu)特征等,從而提高命名實(shí)體識(shí)別效果。