廖開際,鄒珂欣,席運江
(華南理工大學工商管理學院,廣東廣州 510641)
自2012 年谷歌提出了“知識圖譜”的概念至今,知識圖譜這一領域一直是科學研究和科技應用的前沿熱點,其應用也涉及了從搜索到推薦等眾多領域。目前,醫學是知識圖譜應用最廣的垂直領域之一,也是國內外人工智能領域研究的熱點,在如疾病風險評估、智能輔助診療、醫療質量控制及醫療知識問答等智慧醫療領域都有著很好的發展前景[1]。構建醫療領域的知識圖譜可以分為3 個步驟:醫療實體識別、實體關系抽取、實體對齊與知識融合,其中醫療實體識別一直是構建知識圖譜過程中的重難點。
在醫療領域,隨著互聯網的快速普及,網絡技術的創新與發展已逐漸影響醫患雙方的行為方式,越來越多的病人在網上尋醫問藥,醫生和醫院也更加重視通過互聯網進行醫患之間的交流和溝通[2],例如尋醫問藥網等用戶規模較大的在線醫療社區中,已積累了大量醫患問答文本,若能通過這些問答文本進行醫療實體識別,便可以更準確且更加深層次地挖掘患者的需求,清晰地展現患者所關心的醫療問題,從而推動醫療行業進一步發展。然而,此類在線醫療社區問答文本不僅具有傳統社區類文本體量大、數據稀疏的特點,還具有醫療文本的專業性和復雜性,同時由于個人語言習慣不同,醫患問答文本中還有大量簡寫、略寫甚至模糊的表達,給醫療實體識別工作帶來了巨大的挑戰。
命名實體識別(named entity recognition,NER)是指識別文本中具有特定意義的實體。醫療實體識別,就是從文本中識別出具有醫學意義的實體,如疾病名稱、治療手段、檢查方法、藥物名稱等。對于醫療實體識別,目前采用較多的有基于詞典和規則的識別方法、基于淺層機器學習的識別方法以及基于深層神經網絡的識別方法。
早期的醫療實體識別,多采用基于詞典的方法。基于詞典的方法是原理比較簡單但也是最有效的方法之一,其基本思路是通過遍歷詞典進行字符串匹配而實現實體識別[3]。如,Kristina 等[4]結合來自UMLS、MeSH 等醫學平臺的信息,開發了用于識別文本中的小分子和藥物的詞典,并將其予以應用于識別醫療實體;寧時賢[5]通過生物醫學詞典識別了醫學實體,經過實驗驗證表明,詞典特征有助于生物醫學實體的識別。上述基于詞典的方法雖然能對醫學實體進行有效識別,但由于對醫學詞典和醫療知識庫的依賴程度較高,導致該方法的靈活程度較低。
近幾年,隨著人工智能與其相關技術的快速發展,“機器學習”這一概念逐漸進入人們的視野,基于淺層機器學習的實體識別方法也隨之得到快速發展。淺層機器學習方法主要包括條件隨機場(conditional random fields,CRF)模型、隱馬爾可夫模型(HMM)、最大熵 (ME)模型、支持向量機(SVM)等[6]。王若佳等[7]針對電子病歷分詞后的文本,采用條件隨機場機器學習算法進行實體識別,結果表示該算法對醫療實體中“檢查”和“疾病”兩類實體的識別效果較好。龔樂君等[8]基于領域詞典和條件隨機場模型,從中文電子病歷文本中識別出了4 類醫療實體,該模型在測試數據中的精確率達到了96.7%
2006 年Hinton 等[9]創建了一種多層次的神經網絡訓練方法,完成了神經網絡從淺層到深層的轉變,深度學習由此誕生。基于深度神經網絡的實體識別方法在近幾年成為了實體識別領域的熱點,如曹明宇等[10]使用雙向長短期記憶神經網絡模型(bi-directional long short-term memory,BiLSTM)對醫學藥物類實體進行了識別,結果明顯優于針對相同數據集所采用的其他識別方法;李綱等[11]采用BiLSTM-CRF 模型,針對全國知識圖譜與語義計算大會(China Conference on Knowledge Graph and Semantic Computing,CCKS)提供的中文電子病歷做醫療實體識別,結果表明該方法能夠顯著提升傳統CRF 方法的實體識別效果;李雙麗等[6]提出一種基于卷積神經網絡(convolutional neural networks,CNN)-長短期記憶神經網絡模型(long short-term memory,BLSTM)-CRF 的醫學實體識別方法,通過卷積神經網絡抽取英文的字符特征和單詞特征來進行實體識別,并在Biocreative ⅡGM 和JNLPBA2004生物醫學語料上驗證了該方法的有效性。
雖然采用上述方法均能有效識別有關文本中的醫療實體,但是以上識別方法大多是針對語言專業化和結構化程度較高的電子病歷文本或者醫學語料庫而進行的。相比于去實體醫院,目前越來越多的患者選擇直接在醫療社區平臺或者社交媒體上進行在線的專業咨詢和健康經驗分享[12],此類醫患問答文本數據是患者最真實、最直接的需求和想法反饋,但針對在線醫療社區中的患者編寫文本做醫療實體識別的研究仍然相對較少。因此,本研究將以在線醫療社區中的問答作為文本數據源進行醫療實體識別工作。由于在線醫療社區中的問答文本非結構化程度高、文字表達因個人語言習慣也有較大差異,因此本研究提出一種基于CNN 和BiLSTM 的醫療實體識別方法。
圖1 為本研究提出的實體識別方法的整體框架示意圖,模型整體可分為3 個模塊,分別為CNN 模塊、BiLSTM 模塊以及CRF 模塊。模型先利用字向量通過CNN 識別出中文單個字的漢字級特征,再采用BiLSTM 識別出結合上下文信息的特征,然后將以上兩種特征相結合放入CRF 模型中進行訓練,最后采用尋醫問藥網在線醫療社區中有關乳腺癌的醫患問答對方法的有效性進行驗證。
首先對文本數據進行清洗去重等預處理操作,之后選取處理好的部分數據,根據定義好的實體類別采用BIO 標注法對文本數據進行逐字標注,然后將標注好的數據分為訓練集和測試集,其中80%為訓練集,20%為測試集。接下來將訓練集中的數據分別放入CNN 和BiLSTM 模型中抽取漢字級別的特征以及結合上下文信息的特征,并將抽取得到的特征利用連接函數融合,放入CRF 模型中輸出預測結果,將標注好的測試集的數據對結果進行驗證,從預測結果的準確率、召回率和F值3 個指標評價模型的質量。經過對上述模型中的參數多次設置和調整,選取預測結果指標最優的模型作為最終的預測模型,最后將前期未被標注的文本數據放入已訓練好的預測模型中去,經過所選模型的計算,得到最終的實體識別結果。

圖1 醫療實體識別方法框架
20 世紀60 年代,科學家們在研究貓的腦皮層局部的神經元時發現,其獨特的網絡結構可以有效地降低反饋神經網絡的復雜性,從而提出了“卷積神經網絡”的概念。卷積神經網絡是一類包含卷積計算且具有深度結構的前饋神經網絡[13],是深度學習的代表算法之一。自提出以來,卷積神經網絡已大量應用于圖像、視頻等文件的處理領域中。2014年Kim[14]對CNN 的輸入層做了改進和調整,提出了適用于文本的處理的模型,自此CNN 也被廣泛應用于對文本的處理中。如,陶源等[15]結合門控線性單元和卷積神經網絡在中文數據集SIGHAN2006上進行了實體識別,識別準確率達到了91.05%;曹依依等[16]采用卷積神經網絡針對中文電子病歷進行了實體識別,識別結果F 值達到了90.31%。所以,本研究提出采用卷積神經網絡模型來識別文本中的特征進行醫療實體識別。由于醫患問答文本中可能由于個人語言習慣導致醫療實體間距離較遠,如“我最近嗓子疼,不光是吃東西的時候疼,有時候就連喝水的時候也覺得疼,吃了阿莫西林等消炎藥之后感覺好多了”這句話中,疾病實體“嗓子疼”就與藥物實體“阿莫西林”距離較遠,而且詞向量難以處理長距離的依賴關系,因此本研究采用字向量與卷積神經網絡結合的方式,首先對在線醫療社區中的問答文本進行特征抽取。
卷積的表達式用矩陣表示見式(1)。其中:s代表卷積函數;*表示卷積操作;X為輸入,A為卷積核,n代表詞的數量。

在卷積神經網絡中,若是二維的卷積則表示如式(2)所示。其中:i和j分別代表二維矩陣的長和寬。

卷積神經網絡可以分為輸入層、隱藏層和輸出層。在適用于文本的卷積神經網絡中,輸入層是句子中的詞對應的詞向量或字向量依次排列的矩陣,假設句子有n個詞(或字),向量的維數為k,那么輸入層的向量矩陣就是n×k。通常用戶圖像識別的卷積神經網絡使用的卷積核的寬度和高度是一樣的(見圖2),但在處理文本數據卷積神經網絡中,卷積核的寬度與詞向量或字向量的維度一致(見圖3),只有高度可以任意設置,輸入的每一行向量代表一個詞或字。

圖2 圖像識別的CNN 卷積核

圖3 文本處理的CNN 卷積核
本研究采用文本的字向量作為輸入層。數據通過輸入層后抵達卷積層,模型設置3 層卷積,卷積后的數據將會依次通過歸一化處理和ReLU 激活函數,后轉化形狀輸出。其中ReLU 函數的公式見式(3):

長短期記憶神經網絡模型是為了解決循環神經網絡中的長期依賴問題和梯度消失問題而衍生出來的模型,而雙向長短期記憶神經網絡模型包含了兩個方向的長短期記憶神經網絡模型,如圖4 所示。

圖4 BiLSTM 模型結構
在BiLST 模型中,每個細胞內部結構如圖5 所示。其中:ht為當前隱藏層狀態;xt為當前輸入;ct為當前細胞狀態;δ為Sigmoid 激活函數。從RNN 改進而來的長短期記憶模型利用門機制可以克服RNN 的缺點[17],這種門機制即通過遺忘門、輸入門和輸出門的引入,可以有效解決梯度消失等問題。

圖5 BiLSTM 的單元內部結構
由圖5 可見:
(1)遺忘門原理:上一階段的ht-1與當前的輸入xt級聯之后,經過 Sigmoid 函數后與ct-1相乘。若δ函數的輸出ft接近 0,則表示ct-1這個信息被忘掉了。ft的計算公式見式(4),其中W和b分別為模型的權重和偏置向量。

(2)輸入門原理:上一階段的ht-1與當前輸入xt級聯之后,經過Sigmoid 函數后與 tanh 的輸出相乘,并與之前的細胞狀ct-1×ft相加,得到ct。若it接近 0,則表示此輸入被丟棄。

(3)輸出門原理:上一階段的ht-1與當前的輸入xt級聯之后,經過Sigmoid 函數后與 tanh(ct)的輸出相乘,得到ht。其中O代表輸出。若Ot接近 0,則表示輸出細胞信息不會進入到隱藏層狀態中。

由于CRF 能更有效地限制輸出的序列位置,因此可以避免前期CNN 和BiLSTM 特征抽取輸出的結構錯誤,所以在實體識別模型的最后會將數據輸入線性CRF 中。2001 年Lafferty 等[18]首次提出一種判別式概率——條件隨機場模型,是在給定一組輸入序列條件下另一組輸出序列的條件概率分布模型,在自然語言處理中得到了廣泛應用。即給出輸入序列,便可以通過線性CRF 得到對應的序列的概率,即。其概率的計算公式見式(9),其中wk為權重值。

綜上,本研究提出的基于在線醫療社區問答文本的醫療實體識別方法的流程可表示為如圖6所示。

圖6 醫療實體識別方法流程結構
本研究的實驗采用Python 語言(版本3.7),在Pytorch 深度學習框架下進行。Pytorch 是Facebook 開源的神經網絡框架,相比于其他深度學習的編程框架而言,具有簡潔、高速、易用等特點。
爬取了尋醫問藥網問答模塊中關于乳腺癌的12 000 條患者提問及其對應的醫生回復,經過清洗去重等預處理操作后,保留了10 673 條有效問答文本(以下簡稱“樣本”)(即10 673 條提問和10 673 條回復)。為了使數據格式統一規范以及保證問答數據一一對應,將患者提問和對應的醫生回復拼接成一條數據,并將所有拼接后的文本數據作為實驗數據,文本拼接格式為“患者病情描述(Q)+醫生對應回復(A)”,如表1 所示。

表1 樣本實驗數據示例
根據ICD-10 和各百科網站對醫療實體的劃分,并參考楊錦鋒等[19]和楊文明等[20]對醫療實體的分類方式,將醫療實體分為疾病(disease)、癥狀(symptom)、藥物(medicine)、治療(treatment)和檢查(check)這5 項基礎類別。因患者在描述自身病情和癥狀時常會提及對應的身體部位,如“胸部有硬塊”“淋巴結那里疼”“手指也有明顯的腫脹”,若只將“硬塊”“疼”“腫脹”等詞標記為癥狀,則會遺漏部分信息或扭曲患者原有的描述意圖,所以增設身體部位(body)類別,以提高癥狀類別識別的精確度。實體細分類別如表2 所示。

表2 醫療實體細分類別
采用BIO 標注法對預處理好的數據進行實體標注,隨機選取了共計2 000 條數據進行標注。BIO標注是將每個文本中的每個字標注為“B-X”“I-X”或者“O”的形式[21]。其中:B 即Begin,表示開始;I 即Intermediate,表示實體的中間或結尾;O 即Other,表示其他;X 表示實體的名稱。則“B-X”所標注的字是X 類型并且是該實體的開頭,“I-X”所標注的字是X 類型并且是該實體的中間部分,“O”表示不屬于任何類型。如,對于“經過鉬靶照相確診了乳腺癌,現在在接受化療”這個短句,根據BIO 標注規則,其標注后的結果如表3 所示。其中“鉬靶照相”為檢查類的實體,“乳腺癌”為疾病類的實體,“化療”為治療類的實體,其余均不屬于任何實體類別。將標注后的2 000 條數據中的1 600 條作為訓練集、400 條作為測試集,供后續模型的訓練和檢驗使用。

表3 樣本BIO 標記結果示例
在本研究給出的醫療實體識別模型中,樣本的參數設置如表4 所示。

表4 樣本醫療實體識別模型參數設置
對實驗結果采用準確率、召回率和F值進行評價。其中:準確率又稱為查準率,它表示實體識別的正確程度;召回率也稱為查全率,它表示識別實體的覆蓋度;而F值則綜合考慮了準確率和召回率。上述3 個指標的計算公式分別如下:

為驗證模型中CNN 模塊的有效性,選取BiLSTM-CRF 實體識別模型作為對比,實驗結果如表5 所示。可以看出,基于CNN 和BiLSTM 的模型識別方法,總體和各個實體類別的指標結果準確率均優于BiLSTM-CRF 實體識別模型,其中疾病和治療類別的結果有較大提升,召回率和F值指標也有明顯提升,說明本研究提出的基于的CNN 的醫療實體識別方法在針對在線醫療社區問答文本的數據集上是有效的。

表5 樣本基于卷積神經網絡模塊的有效性驗證結果
為驗證模型中BiLSTM 模塊的有效性,選取CNN-CRF 實體識別模型作為對比,實驗結果如表6所示。可以看出,基于CNN 和BiLSTM 的模型識別方法,各指標結果均優于CNN-CRF 實體識別模型,說明本研究提出的基于的BiLSTM 的醫療實體識別方法針對在線醫療社區問答文本的數據集是有效的。

表6 樣本基于雙向長短期記憶神經網絡模塊的有效性驗證結果

表6 (續)
隨著互聯網不斷深入人們生活的方方面面,以及人們對于健康的重視度逐漸提高,互聯網醫療領域的研究也是當下的熱點,其中通過對文本中的醫療實體識別從而構建醫療領域的知識圖譜更是研究的熱門。目前,在線醫療社區為廣大患者提供了方便、及時的咨詢平臺,越來越多的人通過在線醫療社區尋醫問藥、查詢病情,其中的醫患問答對話反映了患者最真實、最直接需求,但此類文本結構化程度不高且融合了個人的語言習慣,分析較為困難,為此,本研究聚焦于此類問答文本數據,提出一種基于CNN 和BiLSTM 的醫療實體識別方法,致力于通過CNN 和BiLSTM 兩種深度學習算法,分別抽取文本特征并進行融合,多方位地獲取文本中的信息,以提高醫療實體識別的效果。
通過針對尋醫問藥網平臺上關于乳腺癌疾病問答文本進行實驗,結果表明本研究提出的模型方法優于BiLSTM-CRF 和CNN-CRF 方法,且總體識別準確率達到92.3%、召回率達到89.3%、F值達到90.8%,即表示此方法是有效的。雖然本模型方法取得了較好的識別結果,但研究數據所涉及的疾病僅包含乳腺癌,疾病類別比較單一,今后的研究將結合更多類型的疾病和醫療社區平臺進行。