馬文昊,石涵予,黃 橋,黃 興,王永博,王詩淳,任相穎,施 悅,靳英輝,閻思宇
1. 武漢大學中南醫(yī)院循證與轉化醫(yī)學中心(武漢 430071)
2. 武漢大學第二臨床學院(武漢 430071)
3. 武漢大學弘毅學堂(武漢 430072)
4. 浙江大學醫(yī)學院附屬第一醫(yī)院泌尿外科(杭州 310003)
5. 武漢大學中南醫(yī)院信息中心(武漢 430071)
美國食品和藥物監(jiān)督管理局在《真實世界證據(jù)方案的框架》[1]中將真實世界數(shù)據(jù)(realworld data,RWD)定義為“與患者健康狀況有關的和(或)日常醫(yī)療過程中收集的各種來源的數(shù)據(jù)”。RWD 包括來源于衛(wèi)生信息系統(tǒng)、電子病歷(electronic medical record, EMR)、醫(yī)保系統(tǒng)的數(shù)據(jù)和來自移動設備端如可穿戴設備獲得的相關數(shù)據(jù)等。隨著診療數(shù)據(jù)的幾何級增長,基于EMR 數(shù)據(jù)開展的真實世界研究越來越受重視,如進行真實環(huán)境下干預措施效果和安全性的評價研究[2],但在實施時仍面臨一些挑戰(zhàn)。EMR 數(shù)據(jù)產生的初始目的不是用于臨床研究而是服務于臨床實踐,因此除結構化字段外,還包括大量半結構化、非結構化文本,并且各醫(yī)療機構之間數(shù)據(jù)的記錄與儲存尚缺乏統(tǒng)一標準,對于數(shù)據(jù)記錄方面的規(guī)范化培訓和質量控制不足,導致原始數(shù)據(jù)質量參差不齊,增大了研究者數(shù)據(jù)挖掘工作的難度。因此如何基于現(xiàn)有EMR 數(shù)據(jù)進行結構化信息抽取是一個不小的挑戰(zhàn)。
信息抽取作為自然語言處理的子領域,其方法主要包括基于人工編寫規(guī)則的信息抽取方法和基于統(tǒng)計學方法的信息抽取方法[3]。基于人工編寫規(guī)則的信息抽取方法相對簡單但高度依賴于人工編寫的規(guī)則集,適用于有一定結構規(guī)律的自然語言文本。正則表達式(regular expression, RE)是對字符串操作的一種邏輯公式,即是用事先定義好的一些特定字符及其組合,組成一個“規(guī)則字符串”,用以表達對字符串的一種過濾邏輯。RE 是一種文本模式,該模式描述了在搜索文本時要匹配的一個或多個字符串[4],可以作為一種過濾工具,實現(xiàn)對RWD 的結構化信息抽取。近些年來,RE 在醫(yī)學領域有著廣泛的應用。例如國外學者應用RE于神經外科手術登記表的構建,顯著減少了人工工作量并促進相關臨床研究[5];Flores 等[6]使用RE 從生物醫(yī)學文本中提取特征值,有較高的準確性,可為數(shù)據(jù)集進一步分析奠定基礎;在對醫(yī)學指南中事件句型進行相關匹配與抽取的研究中,RE 可高效準確地將醫(yī)學指南中的事件自動轉換成XML 結構化數(shù)據(jù)[7]。
考慮到EMR 數(shù)據(jù)中大部分目標字段具有一定的表達規(guī)律,故本研究以武漢大學中南醫(yī)院近7 年膀胱癌患者EMR 中的入院記錄、病理報告、手術記錄和影像記錄等非結構化文本數(shù)據(jù)為例,采用基于人工編寫規(guī)則并以RE 為編程基礎的信息抽取方法對膀胱癌自然語言文本數(shù)據(jù)進行結構化信息抽取。
以武漢大學中南醫(yī)院2015—2021 年出院診斷包含膀胱癌的患者EMR 數(shù)據(jù)中的入院記錄、病理記錄、手術記錄以及影像學記錄為研究數(shù)據(jù)源,其中病理記錄示例見表1。本研究已通過武漢大學中南醫(yī)院倫理委員會審核批準(批號:科倫[2022002K]),所有數(shù)據(jù)均已進行了去隱私化處理。
表1 病理記錄示例Table 1. Example of pathological record
在咨詢臨床、病理、流行病學等專家意見和查閱相關文獻后,結合膀胱癌RWD 的表達規(guī)律與結構特點,本研究確定需抽取的結構化字段包括32 個目標字段(表2)。其中“腫瘤浸潤深度”以膀胱壁的解剖結構層級為標準進行抽取,包括固有層、淺深肌層等;“區(qū)域淋巴結浸潤情況”的描述通常涵蓋了送檢淋巴結位置、送檢數(shù)量及陽性數(shù)量;“變異組織學”采用2016 年第4 版《WHO 泌尿系統(tǒng)及男性生殖器官腫瘤分類》[8]標準進行抽?。划敳±碛涗浳疵鞔_記錄T、N 分期時,依據(jù)美國癌癥聯(lián)合委員會2017 年制訂的第8版《膀胱癌TNM 分期手冊》[9],分別通過對“腫瘤浸潤深度”“是否有輸尿管殘端、輸精管斷端癌浸潤”“是否有精囊腺、前列腺組織、子宮、陰道癌浸潤”3 個字段和“區(qū)域淋巴結浸潤情況”字段的抽取結果推理得到T、N 分期?!癕 分期”也屬于推理字段,需要以影像學記錄中“腫瘤轉移情況”字段抽取結果并結合分期依據(jù)推理得到。
表2 抽取的結構化字段Table 2. Extracted structured fields
本研究是基于Python 環(huán)境下利用RE 進行文本信息的抽取。
1.2.1 正則概述
RE 提供對于基本字符、特殊字符、數(shù)量詞、邊界位置等文本的匹配。每一個字符代表不同的匹配規(guī)則,例如,字符“d”表示匹配數(shù)字字符;“*”“+”“?”分別表示匹配前一個字符零次或多次、一次或多次、零次或一次;{n, m}表示匹配至少n 次,最多m 次。完整RE 規(guī)則可參考相關文獻[10]。
1.2.2 數(shù)據(jù)集劃分及字段詞典編寫
使用隨機抽樣的方法,從入院記錄、病理記錄、手術記錄、影像學記錄四個表單中分別抽取300 條數(shù)據(jù)的樣本,其中200 條用于規(guī)則抽取集,100 條用于評測集。通過人工抽取規(guī)則抽取集中的結構化數(shù)據(jù),得到目標字段的不同描述,將其歸納總結為規(guī)則集,即字段詞典(示例見表3)。以字段詞典為規(guī)則撰寫RE。
表3 字段詞典示例Table 3. Example of field dictionary
1.2.3 正則抽取實現(xiàn)
在Python 編譯器中,主要通過Python 強大的庫和re 模塊實現(xiàn)正則抽取。本研究整體抽取方法流程圖見圖1。
圖1 抽取方法流程圖Figure 1. Flowchart of extraction method
步驟一,數(shù)據(jù)導入及遍歷行信息。使用pandas 庫中的dataframe,讀寫Excel 表格工作簿以及單元格信息,利用read_excel 對工作簿賦名及操作。本文以“病理記錄”工作簿(賦名為df)的處理情況示例。讀取“病理診斷”信息列(即目標字段所在列)信息后,對每一列分配出獨立的代碼塊,利用for i in range(len (df))完成對df 工作簿每一行的遍歷工作。
步驟二,判斷非空。某些信息列中存在信息缺失的情況,此時單元格的類型被判定為float 類型,而float 類型不支持有關字符串處理的內容。直接利用步驟一的方式遍歷會報錯,因此需要在進入遍歷后且參與if語句判斷之前,利用if type (df['病理診斷'] [i])!=float 對信息列是否空白進行判斷,非空白的行再進行下一步操作。
步驟三,判斷詞典是否有效并抽取結構化信息。包括以下幾種情況:(1)若詞典有效,可直接抽取出信息列中的字符串,如“分級”字段需要抽取出文本中的“高/中/低分化”“高/低級別”或“1/2/3 級”;或查找信息列中是否有特定的字符串,如“是否為膀胱標本”“是否包含肌層”等。(2)若詞典無效:在本研究中,主要有以下兩種情況:①需要“指定字符串后”處理的組合字段,如“區(qū)域淋巴結浸潤情況”需要抽取出淋巴結的位置及對應的送檢淋巴結與陽性淋巴結的數(shù)量,需要利用split 函數(shù)識別關鍵詞,由于該字段需抽取出不同位置淋巴結浸潤數(shù)量,因此將抽取出來的數(shù)量存儲到局部變量里,以便對不同區(qū)域的淋巴結進行描述。②需要“模糊字符串前后”處理的字段,通常無固定詞組搭配,如“膀胱腫瘤直徑”常在“新生物”周圍出現(xiàn),應抽取出“新生物”前后若干字符中含有的數(shù)字,即腫瘤的大小;或是在同一詞組后跟隨有干擾信息,如“入院記錄”中的“飲酒時間”字段常跟在“飲酒史(年)”后,但該字符串后不僅有飲酒時間,還有判斷是否飲酒的結果。利用RE 中的re 函數(shù)re. findall(pattern, string, flags=0),可將所有匹配內容以列表形式返回。可以定義任意pattern 為匹配模式,選擇所要匹配的內容。
步驟四,輸出規(guī)則抽取集結果計算準確率和召回率,計算相似度并完善詞典。使用上述代碼對規(guī)則抽取集進行字段抽取并輸出結果,將該結果與人工抽取結果進行比對并計算其準確率和召回率。準確率=正確抽取的數(shù)量/已抽取到的數(shù)量,反映查準率;召回率=正確抽取的數(shù)量/待抽取的數(shù)量,反映查全率。
在根據(jù)規(guī)則抽取集抽取結果對詞典進行完善以及后期根據(jù)新的語料補充詞典時,需要人工對RE 未能抽取出結果的文本進行抽取,該工作耗時耗力,故本研究利用自然語言處理方法,首先利用jieba 庫進行中文文本的分詞工作words=jieba. lcut(s),然后利用Word2Vec 模型對每一個分詞的結果轉化為向量(Vector)。
for word in words:
v+=model [word]
接著將所有的Vector 相加并求平均,得到整個句子的詞向量(Sentence Vector)。
v/=len(words)
將關鍵詞已經納入詞典的信息列與其余信息列比對,并對Sentence Vector 夾角的余弦值計算相似度,挑選相似度高(>0.85)且用RE 無法抽取出結果的語句,用這些語句進行詞典更新,可大大減少人工工作量。
審核規(guī)則抽取集準確率和召回率低于95%的字段,通過上述過程完善詞典。同一個變量中不同的描述字段均有一定的相似性,因此通過計算詞典中已有字段和詞典中沒有但信息列中存在字段的相似度,篩選出相似度較高的字段,由機器直接提取,錄入詞典;相似度不高的字段則通過人工再次提取的方式錄取詞典進行再提取。重復執(zhí)行以上步驟直到目標字段的召回率和準確率高于95%。
步驟五,采用評測集進行結果評估。使用經由人工抽取并加以完善后的詞典對評測集字段進行抽取,計算其準確率和召回率。由于EMR 數(shù)據(jù)存在稀疏性特點,部分字段只存在于個別患者的記錄中,目標字段的缺失率將對抽取結果有顯著影響。因此本研究設定了評測集目標字段缺失率的最大閾值為40%,若人工抽取的結果顯示該字段缺失率大于40%,則將從數(shù)據(jù)源中重新抽取數(shù)據(jù)對原評測集進行補充,直至該字段缺失率降低至40%以下,以此作為新的評測集,進行結果評估。
以“區(qū)域淋巴結浸潤情況(送檢淋巴結位置、數(shù)量及陽性數(shù)量)”和“飲酒史:時間(年)”字段抽取為示例進行代碼展示及解釋,詳見框1。
框1 部分目標字段抽取代碼示例Box 1. Code examples for some target fields extraction
(1)字段“區(qū)域淋巴結浸潤情況(送檢淋巴結位置、數(shù)量及陽性數(shù)量)”屬于詞典無效字段并且需抽取信息位于指定字符串后。這類字段有多種情況,此處選取一種送檢(左、右閉孔)情況進行說明,使用split 函數(shù)將“(左、右閉孔”后,“、”前的內容抽取出來,并存放在局部變量a 中,一般為左閉孔淋巴結的數(shù)量,再通過分割將第一個“枚”字后和第二個“枚”字前的內容抽取出來,一般為右閉孔淋巴結的數(shù)量,存放在另一個局部變量b 中,若有癌轉移,且a、b 變量中含有“/”時,前面的數(shù)字代表陽性淋巴結的數(shù)量,后面的數(shù)字代表送檢淋巴結數(shù)量,用split 函數(shù)將兩個數(shù)字分別分割出來,存放進不同的局部變量。
(2)入院記錄中的字段“飲酒史:時間(年)”屬于詞典無效字段并且需抽取信息位于模糊字符串后。為抽取“個人史”信息列中的飲酒年份,使用re. findall 函數(shù)查找,并用RE 規(guī)則d+,抽取出在“飲酒史(年)”后的所有數(shù)字以列表形式返回。
在對評測集中缺失率過高的字段進行補充抽樣后,本研究以“未刪除缺失數(shù)據(jù)集”“刪除缺失數(shù)據(jù)集”為評測集分別進行結果評估,若將缺失值認為是抽取結果之一,那么可得到包含所有正誤對比的完整結果,但無法直觀獲得準確率和召回率對于字段詞典的準確性、完整性以及RE抽取效果的不同體現(xiàn),因為已抽取到的數(shù)量即為待抽取的數(shù)量,準確率和召回率的結果相同。如果刪除缺失,即待抽取數(shù)量只包含有目標值的情況,區(qū)別于已抽取數(shù)量,將得到不一致的召回率和準確率從而對正則抽取效果進行評估,但是因為空值均被刪除,無法反映實際為空卻被RE 抽取到了錯誤值的情況,因此同時報告兩個數(shù)據(jù)集的結果,進行綜合評估。結果詳見表4。
未刪除缺失數(shù)據(jù)集的評估結果顯示,病理記錄中的大部分目標字段準確率和召回率均可達到80%以上,只有3~4 個目標字段準確率和召回率低于80%但水平仍可達到60%~80%之間;手術記錄中的“膀胱腫瘤是否單發(fā)”“膀胱腫瘤直徑”“膀胱腫瘤位置”和影像學記錄中“膀胱腫瘤直徑”字段的準確率和召回率相對較低,在60%左右,手術記錄和影像學記錄中其它目標字段的準確率和召回率均可達到95%以上;入院記錄的所有目標字段召回率與準確率均在90%左右。
刪除缺失數(shù)據(jù)集的評估結果顯示,大部分目標字段的準確率較未刪除前有顯著提升,可達到95%以上;但是召回率結果差異較大,病理記錄中目標字段平均召回率在75%左右,手術記錄中目標字段平均召回率約為63%,入院記錄中目標字段平均召回率為94%,而影像學記錄中除“膀胱腫瘤直徑”召回率為37%外,其余字段召回率均高于90%。
本研究結果顯示,總體上基于RE 方法抽取目標字段的準確率較高,說明人工總結的字段詞典的查準率較高、準確性較強,原因可能是基于RE方法的信息抽取可精準匹配特定的文本模式。但是基于RE 方法抽取目標字段的召回率相對較低且差異較大,反映出在部分字段上詞典的查全率相對較低,完整性相對較差。原因可能有兩種,一是由于規(guī)則抽取集不夠具有代表性,導致人工總結的詞典不夠完整,后續(xù)可通過增加規(guī)則抽取集、迭代完善詞典的方式解決;二是文本中目標字段對應的語言結構復雜、文本表述變化多樣,RE 方法難以歸納概括全部規(guī)律而導致漏抽,查全率低,需要盡量全面總結字段表達規(guī)律以改善抽取結果。需注意的是,對高缺失率目標字段補充抽樣時,受限于原數(shù)據(jù),個別目標字段如“是否浸潤神經”“戒煙時間(年)”等的補充抽樣仍不能達到缺失率小于40%的目標,其評估結果可能隨著包含目標值樣本量的增大而波動。
既往有研究者以層疊條件隨機場機器學習模型為基礎,對包含入院記錄、出院記錄、輔助檢查報告等非結構化文本的呼吸??谱≡篍MR 進行了信息抽取,結果顯示病歷中各類文本信息抽取準確率和召回率分別為92.12%、92.42%[11]。與本研究抽取結果對比發(fā)現(xiàn),一方面,基于RE的信息抽取方法其準確率較高,對于大部分變量可以達到98%甚至是100%的準確率,但是召回率就顯著遜色于基于機器學習的信息抽取方法,因為RE 無法抽取規(guī)則集之外的文本信息;其次,對于表述簡單的字段,如病理記錄中的“是否為膀胱標本”“是否為膀胱尿路上皮癌”等字段,或半結構化文本中的字段抽取,如入院記錄,RE規(guī)則集的編寫會相對簡單,其抽取效果優(yōu)于機器學習,可達到較高的準確率和召回率(98%以上)。但是對于像影像學記錄與手術記錄中的“膀胱腫瘤直徑”“膀胱腫瘤位置”等表述形式較為繁雜的非結構化文本,由于自由度過大、語法語義復雜,基于人工編寫規(guī)則的信息抽取方法就難以較好歸納概括其表達規(guī)律,導致規(guī)則的編寫過程耗時耗力,抽取的效果不佳。
本研究對于四類文本規(guī)則集歸納總結的時間耗時較久,側面說明RE 的人工依賴性較強。某些字段在文本中的出現(xiàn)頻次低,其固有稀疏性導致研究者難以充分總結表達規(guī)律,而文本中有時出現(xiàn)的不規(guī)范數(shù)據(jù)輸入情況也會直接影響規(guī)則集的總結和抽取結果的可靠性,并且在前期規(guī)則集的編寫過程中需要大量的人工參與,而人工制定規(guī)則集的質量由文本的結構化程度決定并直接影響最終信息抽取效果。例如吳歡等的研究表明,針對語義簡單、結構規(guī)范的文本,基于規(guī)則的模式匹配方法的信息抽取技術更簡單、快速、易實現(xiàn)[12];對于像冠狀動脈CT 血管成像及鈣化積分這類單病種且比較規(guī)范的報告,RE 是實現(xiàn)其結構化的最佳投入產出比方案,其制定的規(guī)則對于報告的結構和語言描述具有較高的依賴性[13]。RE 始終是基于人工制定的規(guī)則進行信息抽取,但是由于RWD 的多樣性,可能會出現(xiàn)字符一致但是語境不同而導致抽取錯誤的情況,需要人工對表達式進行完善,也可能會影響該方法的適用、推廣和維護。
需要注意的是,RE 規(guī)則集跨學科、跨單位、跨病種的可遷移性和可復用性較弱。在不同學科之間各類文本所涉及知識、術語、數(shù)據(jù)大相徑庭以及RE對于規(guī)則集準確性有著高要求的前提下,對于某一學科中某一文本構建的規(guī)則集難以進行跨學科遷移。因不同機構、系統(tǒng)或醫(yī)生記錄習慣的不同,可能會導致無法實現(xiàn)規(guī)則集的大規(guī)模跨機構使用。對于圍繞單一病種EMR 記錄構建的規(guī)則集,除入院記錄中部分信息不具有疾病特異性,大部分記錄如病理記錄、手術記錄、影像學記錄等均具有疾病特異性表達,其規(guī)則集難以跨病種。
在對規(guī)則抽取集的詞典進行革新迭代過程中,本研究采用了計算文本相似度的方法,通過計算無法抽取出信息或新納入的文本與已歸納總結出規(guī)則集文本的相似度進行比對,從而提高詞典更新的效率,一方面可減少人工工作量,提高信息抽取的召回率與準確率,另一方面則可更準確、高效地服務于新文本數(shù)據(jù)。該方法可以在一定程度上為上述RE 規(guī)則集可遷移性、可復用性弱以及人工依賴性強的問題提供解決思路。
近年來,越來越多的研究者將目標聚焦于醫(yī)療文本中結構化信息的抽取,相關的方法與算法優(yōu)化不斷涌現(xiàn)。例如安輝對RE 可視化編輯的實現(xiàn),以降低RE 的學習和使用難度[14];相關研究者提出的基于文本表示的RE 自動生成技術,可大大減少研究者概括規(guī)則集、撰寫RE 過程中耗費的時間以及人力資源成本[15];同時ChatGPT 類大型預訓練語言模型的出現(xiàn)和發(fā)展,也為文本挖掘、信息抽取領域開辟了新的途徑[16]。吳騁等積極探索新的多層次信息抽取模式,實現(xiàn)了對醫(yī)療文本中各種信息的多維解析與分類存儲[17]。抽取方法的不斷革新為醫(yī)療大數(shù)據(jù)的價值挖掘提供了有力抓手。
對于研究中發(fā)現(xiàn)的問題,可考慮以下解決方法:選擇基于統(tǒng)計學方法的信息抽取方法,如機器學習、深度學習等,以大量樣本數(shù)據(jù)為訓練集進行模型訓練從而實現(xiàn)對于非結構化數(shù)據(jù)的信息抽取[18]。已有研究者采用機器學習方法識別并抽取病歷中藥物濫用和藥物使用障礙等相關信息[19];從源頭解決數(shù)據(jù)質量差、結構化程度低的問題,加強醫(yī)院信息系統(tǒng)的頂層設計,樹立醫(yī)務人員對高質量數(shù)據(jù)價值的正確認識,規(guī)范醫(yī)務人員對EMR 等醫(yī)療數(shù)據(jù)的書寫和核對,提高數(shù)據(jù)的結構化程度和質量。
本研究以RE 為基礎,針對膀胱癌EMR 數(shù)據(jù)開展實踐應用,具有一定的應用價值,但該方法存在一定局限性,諸如人工依賴性較強,部分字段抽取的準確率與召回率偏低等問題。并且本研究并未對RE 規(guī)則集在跨病種、跨單位等的其他數(shù)據(jù)集上的抽取效果進行測試。后期研究團隊將使用基于Transformer 架構的深度學習模型對相同的數(shù)據(jù)進行信息抽取,并對比二者在操作流程、適用樣本、構建時間、構建難度、抽取效率、抽取效果等方面的優(yōu)劣,并納入其他單位以及其他病種的EMR 數(shù)據(jù),以此為基礎構建可視化平臺,為研究者提供參考。