對中文電子病歷中的否定術語進行檢測, 可以為非結構化的電子病歷文本的概念索引的建立提供依據。對于電子病歷中術語的提取, 在經典的正向最大匹配算法的基礎上, 結合互信息, 可以有效地避免覆蓋性歧義對提取結果的影響; 對于否定語義的確定, 在基于規則算法的基礎上, 結合詞共現率模型, 有效地降低了由于標點錄入錯誤而出現假陽性術語的概率。通過實驗表明, 本文提出的方法相對于傳統的基于規則的算法, 陰性結果的預測值提高了6.85%。
引用本文: 張遠鵬, 董建成, 錢旦敏, 蔣葵, 陳亞蘭, 王理. 中文電子病歷中否定術語檢出方法研究. 生物醫學工程學雜志, 2015, 32(1): 82-85. doi: 10.7507/1001-5515.20150015 復制
引言
眾多研究試通過結構化中文電子病歷來獲取臨床相關數據,但是結果表明,結構化的電子病歷不能夠準確表達臨床診斷,故在臨床應用上未得到廣泛推廣,目前電子病歷主要以半結構化或非結構化存在。如何在非結構化的病歷文本中獲取相關術語以及確定術語所表達的肯定或否定含義成為目前研究的焦點。
國內外對于相關領域的研究均有過相關報道。在國外,Mutalick等[1]構建了Negfinder算法,該方法的檢出否定術語的靈敏性95.7%,特異性91.8%;Chapman等[2]設計了一種比較簡單的以規則表達為基礎的否定檢出算法NegEX,該算法否定術語檢出的靈敏性為77.8%,陽性結果的預測值為84.5%,特異性為94.5%;在此之后,Huang等[3]結合上述兩種思想,將基于規則表達和語法解析結合,設計了一種新的否定檢出算法,其否定術語檢出的靈敏性為92.6%,陽性結果的預測值為98.6%,特異性為99.87%。Cruz díaz等[4]提出利用機器學習系統的否定性表達自動檢出算法,其否定術語檢出的靈敏性為97.3%,特異性為94.9%。
在國內,李昊旻等[5]提出了一種基于規則的否定詞和否定術語的檢出方法。該方法通過分析臨床醫生的書寫習慣,總結出常用否定詞與否定術語之間的結構關系,并將中文版的國際疾病分類集成到統一醫學語言系統中,實現了中文電子病歷中否定詞和否定術語的自動檢出。算法陽性結果的預測值均100%,陰性結果的預測值為98.99%。雖然李昊旻等提出的否定術語檢出算法獲得了比較滿意的結果,但是并未對標點書寫錯誤造成假陽性的結果做出處理,例如:“患者無胸悶,胸痛等不適”,若按照上述算法規則,“胸痛”會被作為陽性檢測,產生假陽性結果。
鑒于此,筆者在李昊旻等的方法基礎上,提出一種新的否定詞和否定術語的檢出算法,旨在降低由于標點符號書寫錯誤產生的假陽性檢出概率,提高陰性結果的預測值。
1 否定檢出預處理
1.1 中文電子病歷中常用否定詞
筆者以南通市居民電子健康檔案共享平臺中的電子病歷數據作為研究對象(平臺網址為:www.chinaehr.org,下述實驗數據均來自該平臺,數據截止日期為2013.12.31),從感染科、內分泌科、神經內科和心血管科4科室中各抽取10份電子病歷(約45 000字符)作為統計分析樣本,以人工方式進行否定詞語使用情況篩查,確定否定詞語數量共有1 500個。有些固定術語內部的否定詞語,如“無論”“不管”“無意識”等共有441個,其否定詞并不具備否定含義,需排除,剩下具有否定含義的詞共有1 059個。對其使用頻率進行分類,分類結果如表 1所示。

從表 1中可以看出,常用的否定詞共有6個,其中“無”“未”和“不”使用比較頻繁。故在下文的研究中,以該6個否定詞語作為檢出對象。
1.2 術語的提取
對于電子病歷文本中術語的提取,經典的正向最大匹配算法具有較高的靈敏性,但是由于覆蓋型歧義在電子病歷文本中廣泛存在,如“無意識障礙”“無意識”和“意識障礙”均可被當成術語來提取,故為了克服覆蓋型歧義對術語提取的影響,本文在最大匹配算法的基礎上引入互信息[6]來修正術語提取結果。
定義1:互信息的最初定義來源于信息論,其目的是用來度量相鄰詞語之間的緊密程度。假設有兩個隨機變量A和B,p(a)和p(b)分別為A與B的邊緣概率分布,p(a, b)為其聯合概率分布,那么A與B的互信息I(A,B)的定義如下:
$ I\left({a, b} \right)=\sum\limits_a {\sum\limits_b {p\left({a, b} \right){{\log }_2}\frac{{p\left({a, b} \right)}}{{p\left(a \right)p\left(b \right)}}} } $ |
若A與B為相互獨立或完全無關,I(a, b)為0,表示A與B不存在交集;若A與B的彼此相互依賴,則I(a, b)反映其依賴程度的大小。
綜上所述,設計如下的算法步驟,用于提取中文電子病歷中的術語,其中圖 1為算法的實例描述。

步驟1:本文研究的目的是提取否定詞和確定否定詞的作用范圍,為了減少匹配的次數,采用遞歸法進行分句,分出僅含有否定詞的句子。分句遵循以下三個原則:
(1)句子中包含否定詞;
(2)以“句號”、“回車符”和“分號”作為分句的界限;注意,在分句時,不能把“逗號”作為界限,否則會忽略標點錄入錯誤造成的影響。
步驟2:利用修正后的MM算法進行對步驟1產生的句子進行疾病和診斷術語的提取,算法使用的詞典為集成中文ICD-10術語的UMLS。
步驟3:利用擴充詞典的ICTCLAS分詞系統對步驟2所提取的術語進行詞性標注。
2 基于規則的否定術語檢出
受過訓練的臨床醫生在書寫電子病歷過程中,基本上會遵循一定的規則,通過對1.1節中的病歷樣本進行否定表達書寫方式的總結,可以歸納出如表 2所示的分類。

根據表 2中否定詞使用情況分類,為否定檢出算法設定如下的規則:
(1)如果疾病和癥狀為否定,那么肯定使用否定詞進行描述;
(2)否定詞的否定范圍肯定限于子句;
(3)電子病歷文本中的否定詞僅限于表 2所列, 且否定子句滿足表 2的分類。
上述檢測算法規則并未考慮標點符號錯誤引起的假陽性結果,例如“無惡心、嘔吐、腹瀉、腹痛、頭痛”,如果書寫成“無惡心,嘔吐,腹瀉,腹痛,頭痛”,按照否定檢測算法規則,“嘔吐,腹瀉,腹痛,頭痛”為陽性。因此,本文在規則的基礎上,提出一種基于詞共現頻率統計的方法,降低標點錄入錯誤造成的術語假陽性概率。
3 基于規則和詞共現模型的否定術語檢出
詞共現模型[7]是一種基于統計學的方法,在文本處理領域有著非常廣泛的應用。該模型認為:若兩個詞在同一句話或者同一段段落中出現的頻率較高,則認為這兩個詞在所表達的意義上存在關聯性,關聯程度和出現的頻率呈正相關。
定義2:假設wx與wy為文檔中任意兩個詞,則wx相對于wy的相對共現率R(wx|wy)的定義為
$ R\left({{w_x}\left| {{w_y}} \right.} \right)=\frac{{f\left({{w_x}, {w_y}} \right)}}{{f\left({{w_y}} \right)}}, $ |
其中f(wx, wy)表示上述兩詞在在同一文檔中共現的次數,f(wx)表示詞wy在文檔中出現的次數;同理可以得出R(wy|wx)的定義,這里不再贅述。
定義3:wx相對于wy的共現率定義即為R(wx|wy)和R(wy|wx)的算術平均值,記為C(wx, wy), 定義為:
$ C\left({{w_x}, {w_y}} \right)=\frac{{R\left({{w_x}\left| {{w_y}} \right.} \right)+R\left({{w_y}\left| {{w_x}} \right.} \right)}}{z} $ |
在本文中,以詞共現圖的形式來反映否定詞的作用范圍,即確定否定術語。詞共現圖的點集和邊集的確定算法描述如下:
步驟1:根據上述制定的規則,將符合規則的子句中的術語作為共現圖的結點集Tterms, 并按照離否定詞的遠近進行排列(T1 T2…Tk Tk+1…Tn);
步驟2:計算C(Tk,Tk+1),若共現率大于設定的閾值,則在Tk與Tk+1之間連邊;
步驟3:若Tk與Tk+1的共現率小于閾值,則共現圖不是單連通圖,則包含T1的連同分支中所有結點(術語)為否定術語,即為否定詞的作用范圍。
4 實驗分析
選擇感染科、內分泌科、神經內科和心血管科4個科室各50份電子病歷作為本算法的實驗樣本,共計150 865字符,利用修正后的正向最大匹配算法進行術語的提取,共提取術語3 978個。利用規則匹配,3 978個術語中共有1 875個具有否定意義的術語,人工核對后,否定意義完全正確。但是由于標點錄入錯誤,漏檢61例,共163個術語,除去和否定詞最近的術語,共有102個,如表 3所示。對于漏檢的字句,將同科室的所有病歷文檔設為一個窗口,統計詞之間的共現率。102個漏檢術語中,共有100個術語正確檢出。

在本文中,用陰性結果的預測值來評價最后的實驗結果,陰性結果的預測值的計算公式為:
$陰性結果的預測值=\frac{{檢測出的否定術語}}{{所有的否定術語}} $ |
綜合上面的實驗和分析,基于規則的否定術語檢出算法的陰性結果的預測值為92.00%,本文算法的陰性結果的預測值為98.85%,比原算法提高了6.85%。
5 結論
目前否定術語的檢出已經成為非結構化臨床文檔概念索引建立的重要依據之一,學者們認為基于概念的索引方式在醫學領域的信息獲取有著非常重要的應用。本文結合規則和詞共現模型,取得了較好的效果,但是在詞共現模型中,閾值的選取是人工方式定義,下一步的研究是優化詞共現模型,實現閾值的自動選取,提高算法的自適應性。
引言
眾多研究試通過結構化中文電子病歷來獲取臨床相關數據,但是結果表明,結構化的電子病歷不能夠準確表達臨床診斷,故在臨床應用上未得到廣泛推廣,目前電子病歷主要以半結構化或非結構化存在。如何在非結構化的病歷文本中獲取相關術語以及確定術語所表達的肯定或否定含義成為目前研究的焦點。
國內外對于相關領域的研究均有過相關報道。在國外,Mutalick等[1]構建了Negfinder算法,該方法的檢出否定術語的靈敏性95.7%,特異性91.8%;Chapman等[2]設計了一種比較簡單的以規則表達為基礎的否定檢出算法NegEX,該算法否定術語檢出的靈敏性為77.8%,陽性結果的預測值為84.5%,特異性為94.5%;在此之后,Huang等[3]結合上述兩種思想,將基于規則表達和語法解析結合,設計了一種新的否定檢出算法,其否定術語檢出的靈敏性為92.6%,陽性結果的預測值為98.6%,特異性為99.87%。Cruz díaz等[4]提出利用機器學習系統的否定性表達自動檢出算法,其否定術語檢出的靈敏性為97.3%,特異性為94.9%。
在國內,李昊旻等[5]提出了一種基于規則的否定詞和否定術語的檢出方法。該方法通過分析臨床醫生的書寫習慣,總結出常用否定詞與否定術語之間的結構關系,并將中文版的國際疾病分類集成到統一醫學語言系統中,實現了中文電子病歷中否定詞和否定術語的自動檢出。算法陽性結果的預測值均100%,陰性結果的預測值為98.99%。雖然李昊旻等提出的否定術語檢出算法獲得了比較滿意的結果,但是并未對標點書寫錯誤造成假陽性的結果做出處理,例如:“患者無胸悶,胸痛等不適”,若按照上述算法規則,“胸痛”會被作為陽性檢測,產生假陽性結果。
鑒于此,筆者在李昊旻等的方法基礎上,提出一種新的否定詞和否定術語的檢出算法,旨在降低由于標點符號書寫錯誤產生的假陽性檢出概率,提高陰性結果的預測值。
1 否定檢出預處理
1.1 中文電子病歷中常用否定詞
筆者以南通市居民電子健康檔案共享平臺中的電子病歷數據作為研究對象(平臺網址為:www.chinaehr.org,下述實驗數據均來自該平臺,數據截止日期為2013.12.31),從感染科、內分泌科、神經內科和心血管科4科室中各抽取10份電子病歷(約45 000字符)作為統計分析樣本,以人工方式進行否定詞語使用情況篩查,確定否定詞語數量共有1 500個。有些固定術語內部的否定詞語,如“無論”“不管”“無意識”等共有441個,其否定詞并不具備否定含義,需排除,剩下具有否定含義的詞共有1 059個。對其使用頻率進行分類,分類結果如表 1所示。

從表 1中可以看出,常用的否定詞共有6個,其中“無”“未”和“不”使用比較頻繁。故在下文的研究中,以該6個否定詞語作為檢出對象。
1.2 術語的提取
對于電子病歷文本中術語的提取,經典的正向最大匹配算法具有較高的靈敏性,但是由于覆蓋型歧義在電子病歷文本中廣泛存在,如“無意識障礙”“無意識”和“意識障礙”均可被當成術語來提取,故為了克服覆蓋型歧義對術語提取的影響,本文在最大匹配算法的基礎上引入互信息[6]來修正術語提取結果。
定義1:互信息的最初定義來源于信息論,其目的是用來度量相鄰詞語之間的緊密程度。假設有兩個隨機變量A和B,p(a)和p(b)分別為A與B的邊緣概率分布,p(a, b)為其聯合概率分布,那么A與B的互信息I(A,B)的定義如下:
$ I\left({a, b} \right)=\sum\limits_a {\sum\limits_b {p\left({a, b} \right){{\log }_2}\frac{{p\left({a, b} \right)}}{{p\left(a \right)p\left(b \right)}}} } $ |
若A與B為相互獨立或完全無關,I(a, b)為0,表示A與B不存在交集;若A與B的彼此相互依賴,則I(a, b)反映其依賴程度的大小。
綜上所述,設計如下的算法步驟,用于提取中文電子病歷中的術語,其中圖 1為算法的實例描述。

步驟1:本文研究的目的是提取否定詞和確定否定詞的作用范圍,為了減少匹配的次數,采用遞歸法進行分句,分出僅含有否定詞的句子。分句遵循以下三個原則:
(1)句子中包含否定詞;
(2)以“句號”、“回車符”和“分號”作為分句的界限;注意,在分句時,不能把“逗號”作為界限,否則會忽略標點錄入錯誤造成的影響。
步驟2:利用修正后的MM算法進行對步驟1產生的句子進行疾病和診斷術語的提取,算法使用的詞典為集成中文ICD-10術語的UMLS。
步驟3:利用擴充詞典的ICTCLAS分詞系統對步驟2所提取的術語進行詞性標注。
2 基于規則的否定術語檢出
受過訓練的臨床醫生在書寫電子病歷過程中,基本上會遵循一定的規則,通過對1.1節中的病歷樣本進行否定表達書寫方式的總結,可以歸納出如表 2所示的分類。

根據表 2中否定詞使用情況分類,為否定檢出算法設定如下的規則:
(1)如果疾病和癥狀為否定,那么肯定使用否定詞進行描述;
(2)否定詞的否定范圍肯定限于子句;
(3)電子病歷文本中的否定詞僅限于表 2所列, 且否定子句滿足表 2的分類。
上述檢測算法規則并未考慮標點符號錯誤引起的假陽性結果,例如“無惡心、嘔吐、腹瀉、腹痛、頭痛”,如果書寫成“無惡心,嘔吐,腹瀉,腹痛,頭痛”,按照否定檢測算法規則,“嘔吐,腹瀉,腹痛,頭痛”為陽性。因此,本文在規則的基礎上,提出一種基于詞共現頻率統計的方法,降低標點錄入錯誤造成的術語假陽性概率。
3 基于規則和詞共現模型的否定術語檢出
詞共現模型[7]是一種基于統計學的方法,在文本處理領域有著非常廣泛的應用。該模型認為:若兩個詞在同一句話或者同一段段落中出現的頻率較高,則認為這兩個詞在所表達的意義上存在關聯性,關聯程度和出現的頻率呈正相關。
定義2:假設wx與wy為文檔中任意兩個詞,則wx相對于wy的相對共現率R(wx|wy)的定義為
$ R\left({{w_x}\left| {{w_y}} \right.} \right)=\frac{{f\left({{w_x}, {w_y}} \right)}}{{f\left({{w_y}} \right)}}, $ |
其中f(wx, wy)表示上述兩詞在在同一文檔中共現的次數,f(wx)表示詞wy在文檔中出現的次數;同理可以得出R(wy|wx)的定義,這里不再贅述。
定義3:wx相對于wy的共現率定義即為R(wx|wy)和R(wy|wx)的算術平均值,記為C(wx, wy), 定義為:
$ C\left({{w_x}, {w_y}} \right)=\frac{{R\left({{w_x}\left| {{w_y}} \right.} \right)+R\left({{w_y}\left| {{w_x}} \right.} \right)}}{z} $ |
在本文中,以詞共現圖的形式來反映否定詞的作用范圍,即確定否定術語。詞共現圖的點集和邊集的確定算法描述如下:
步驟1:根據上述制定的規則,將符合規則的子句中的術語作為共現圖的結點集Tterms, 并按照離否定詞的遠近進行排列(T1 T2…Tk Tk+1…Tn);
步驟2:計算C(Tk,Tk+1),若共現率大于設定的閾值,則在Tk與Tk+1之間連邊;
步驟3:若Tk與Tk+1的共現率小于閾值,則共現圖不是單連通圖,則包含T1的連同分支中所有結點(術語)為否定術語,即為否定詞的作用范圍。
4 實驗分析
選擇感染科、內分泌科、神經內科和心血管科4個科室各50份電子病歷作為本算法的實驗樣本,共計150 865字符,利用修正后的正向最大匹配算法進行術語的提取,共提取術語3 978個。利用規則匹配,3 978個術語中共有1 875個具有否定意義的術語,人工核對后,否定意義完全正確。但是由于標點錄入錯誤,漏檢61例,共163個術語,除去和否定詞最近的術語,共有102個,如表 3所示。對于漏檢的字句,將同科室的所有病歷文檔設為一個窗口,統計詞之間的共現率。102個漏檢術語中,共有100個術語正確檢出。

在本文中,用陰性結果的預測值來評價最后的實驗結果,陰性結果的預測值的計算公式為:
$陰性結果的預測值=\frac{{檢測出的否定術語}}{{所有的否定術語}} $ |
綜合上面的實驗和分析,基于規則的否定術語檢出算法的陰性結果的預測值為92.00%,本文算法的陰性結果的預測值為98.85%,比原算法提高了6.85%。
5 結論
目前否定術語的檢出已經成為非結構化臨床文檔概念索引建立的重要依據之一,學者們認為基于概念的索引方式在醫學領域的信息獲取有著非常重要的應用。本文結合規則和詞共現模型,取得了較好的效果,但是在詞共現模型中,閾值的選取是人工方式定義,下一步的研究是優化詞共現模型,實現閾值的自動選取,提高算法的自適應性。