張立邦 關毅 楊錦峰
摘 要:電子病歷中包含大量有用的醫療知識,抽取這些知識對于構建臨床決策支持系統和個性化醫療健康信息服務具有重要意義。自動分詞是分析和挖掘中文電子病歷的關鍵基礎。為了克服獲取標注語料的困難,提出了一種基于無監督學習的中文電子病歷分詞方法。首先,使用通用領域的詞典對電子病歷進行初步的切分,為了更好地解決歧義問題,引入概率模型,并通過EM算法從生語料中估計詞的出現概率。然后,利用字串的左右分支信息熵構建良度,將未登錄詞識別轉化為最優化問題,并使用動態規劃算法進行求解。最后,在3000來自神經內科的中文電子病歷上進行實驗,證明了該方法的有效性。
摘關鍵詞:中文電子病歷;無監督分詞;EM算法;分支信息熵;動態規劃
中圖分類號: TP391 文獻標識碼: A 文章編號:2095-2163(2014)02-
An Unsupervised Approach to Word Segmentation in Chinese EMRs
ZHANG Libang,GUAN Yi,YANG Jinfeng
( School of Computer Science and Technology,Harbin Institute of Technology,Harbin 150001,China)
Abstract: Electronic medical records(EMR) contain a lot of useful medical knowledge. Extracting these knowledge are important for building clinical decision support system and personalized healthcare information service. Automatic word segmentation is a key precursor for analysis and mining of Chinese EMRs. In order to overcome the difficulties of obtaining labeled corpus, the paper proposes an unsupervised approach to word segmentation in Chinese EMRs. First, the paper uses a lexicon of general domain to generate an initial segmentation. To deal with the ambiguity problem, the paper also builds a probabilistic model. The probabilities of words are estimated by an EM procedure. Then the paper uses the left and right branching entropy to build goodness measure and regards the recognition of unknown words as an optimization problem which can be solved by dynamic programming. Finally, to prove the effectiveness of our approach, experiments are conducted on 3,000 copies of Chinese EMRs from the Department of Neurology.
Key words: Chinese EMRs; Unsupervised Segmentation; EM Algorithm; Branching Entropy; Dynamic Programming
0 引 言
電子病歷是指醫務人員在醫療活動過程中,使用醫療機構信息系統生成的面向患者個體的數字化醫療記錄[1]。近年來,隨著醫院信息化建設的發展,電子病歷的使用在臨床中已經逐漸普及。電子病歷包含了關于病人個體健康信息的全面、詳實、專業、即時、準確的描述,是一種非常寶貴的知識資源。通過分析和挖掘電子病歷,可以從中獲得大量的醫療知識[2],而這些知識可應用于臨床決策支持[3]和個性化醫療健康信息服務[4]等方面。電子病歷由結構化數據和非結構化數據組成。其中,自由文本形式的非結構化數據是電子病歷中最為重要的部分,包括主訴、現病史、病程記錄、病歷小結。因此,自然語言處理技術將在電子病歷的分析、挖掘中發揮重要的作用,而自動分詞則是中文電子病歷處理的基礎和關鍵一環。
基于詞典的方法和基于有監督機器學習的方法是目前中文分詞的主流方法。基于詞典的方法通常按照“分詞數目最少”的原則進行詞表匹配,如正向最大匹配算法[5],這類方法簡單實用,但過分依賴于詞典,無法自動識別文本中的未登錄詞。而大量的未登錄詞正是中文電子病歷分詞所面臨的最大挑戰。這些未登錄詞主要是醫療領域的專業術語和縮寫,如“啰音(癥狀)”、“拜新同(藥品)”、“頭CT(檢查)”、“降纖(‘降低纖維蛋白原的縮寫)”。而基于有監督機器學習的方法通常將分詞轉化為字的序列標注問題進行求解[6-7],可以較好地解決未登錄詞問題,但卻需要大規模人工標注語料作為訓練數據。只是,中文電子病歷是一個全新的知識資源,目前還沒有更具針對性的、完備的專業領域詞典或大規模標注語料。因此,如何通過未標注語料來產生盡可能好的分詞結果,即是本文研究的重點。
無監督學習是克服熟語料獲取困難的有效途徑之一。基于無監督學習的分詞方法也因此而受到學術界的持續且密切的關注。無監督分詞可以在極低的人工干預下產生分詞結果,但與有監督方法相比通常準確率較低。盡管如此,隨著自然語言處理的不斷發展,出現了越來越多的對分詞精度要求并不十分苛刻的應用,如信息檢索,信息抽取,文本聚類,自動文摘等,如何利用未標注語料訓練出滿足一定要求的分詞系統也因此而變得越發地重要[8]。
本文提出一種針對中文電子病歷的無監督分詞方法,并不需要人工構建的專業領域詞典或訓練語料。該方法主要分為兩個步驟。首先,使用通用詞典,根據詞的出現概率和最大似然原則對輸入句子進行初步切分。其中,詞的出現概率通過無監督的EM算法從未標注語料中學習得到。所有未登錄詞將被切分為若干個連續的片段。其次,將字串的左右分支信息熵[9]作為衡量其成詞可能性大小的良度(goodness),并將未登錄詞的識別轉化為最優化問題,再使用動態規劃算法進行求解。最后,通過實驗證明了該方法的有效性。
1 現有的無監督分詞方法及其缺陷
現有的無監督分詞方法通常根據語言學假設,利用字串在未標注語料中的統計信息構建良度(goodness)來衡量字串成詞可能性的大小,再以良度為基礎通過最優化算法得到最佳切分結果[10]。由此可見,良度是影響無監督分詞效果的最為關鍵因素。Zhao等[11]回顧了四種經典的良度方法,并針對其中的三種方法即描述長度增益(Description Length Gain),鄰接字變化數(Accessor Variety)和分支信息熵(Branching Entropy)進行了對比分析。Chen等[12]借鑒PageRank算法的思想,將詞類比成網頁,提出了一種新的良度方法WordRank,并與互信息(Mutual Information)配合使用。Wang等[10]利用字串頻率與分支信息熵聯合構建良度,再通過迭代的方式不斷優化分詞結果。Magistry等[13]則將標準化后的分支信息熵變化量(Normalized Variation of Branching Entropy)作為良度。這些無監督分詞方法均在通用語料上進行了實驗,并取得了不錯的效果。
然而,電子病歷文本的行文風格與通用領域文本迥然不同,其語言呈現出獨特的子語言(sublanguage)[14]特點。這些特點包括:
(1)醫療行業習慣用語大量出現(如“伴”、“行”、“無”、“示”);
(2)句子語法結構不完整且模式化較強(如描述癥狀是身體部位+描述(“右眼晶狀體高密度影”,“雙側眼球向左運動不能”),排除癥狀是“否認|無”+描述(“無水平眼震”));
(3)用半結構化的方式組織各部分內容,以達到表達清晰的目的。根據通用領域文本的語言規律所提出的良度方法并未完全適應電子病歷的語言特點,導致其可信度得到了一定程度的下降,進而影響分詞精度。
針對以上問題,本文擇取通用領域的詞典來彌補處理電子病歷時良度可信度降低所帶來的影響。首先,使用通用詞典對電子病歷進行初步的切分,再利用良度方法對切分結果進行調整,從而達到識別未登錄詞的目的。
2初步切分
在給定詞典的情況下,可以使用單純基于字面匹配的方法進行分詞,但這類方法不能很好地處理歧義問題,例如,在使用正向最大匹配算法[5]時,句子“無視物旋轉”會被切分成“無視 物 旋轉”。針對以上問題,引入概率模型來進行優化。給定一個字串 ,意圖將其切分成詞串 ,其中 是字串中的字數, 是切分結果中的詞數, 來自于詞典 。為了簡化計算,采用一元統計模型,即假設詞與詞之間是相互獨立的,兩個詞同時出現的概率僅其各自的出現概率有關。若已知詞的出現概率按 分布,則可以根據最大似然原則求出字串的最優切分。對于字串 的任意一種切分方式 ,其似然函數為:
(1)
本文的研究任務是找到一種切分方式 ,使得似然函數的值最大:
(2)
若已知詞的出現概率,則句子的最優切分可以使用動態規劃算法在多項式時間內求出。
如果預先經過人工切分的語料,那么詞的出現概率就可以根據詞在語料中的出現次數進行計算。然而,標注電子病歷需要專業的醫療知識,人工構建這樣的語料難度很大。因此,本文采用EM算法,從未標注語料中自動學習詞的出現概率。其基本思想為:如果已知分詞結果,就可以估計出詞的出現概率;反之,如果已知詞的出現概率,就可以對語料進行分詞處理,通過這兩個過程的相互迭代,可以使算法對詞的出現概率的估計越來越接近真實值。文獻[15-16]使用“軟計數”的方式來更新詞的頻次,即對于某個句子,首先計算得到所有可能的切分結果的概率,然后在統計詞頻時使用歸一化后的概率進行加權。該方法雖然在理論上可以獲得更好的結果,但實現起來卻比較復雜,而且當句子較長時,計算過程中常會遇到精度問題,實際效果也欠佳。因此,本文采用相對簡單的維特比訓練方法[17]。具體來說,初始時,使用正向最大匹配算法對語料進行切分,將切分結果中每個詞的相對頻率作為其初始概率。然后根據詞的概率,使用動態規劃算法,對語料進行重新切分。再一次地,根據切分結果,重新計算詞的相對頻率作為其出現概率。這一過程將循環進行,直到語料的切分結果不再變化或迭代次數達到了預先規定的上限才停止。
經過初步切分,所有的未登錄詞都會被切分成若干連續的片段(單個漢字或通用詞典中的詞)。例如, 句子“四肢肌張力正常”會被切分成“四肢 肌 張力 正常”, 句子“口服拜新同控制血壓”會被切分成“口服 拜 新 同 控制 血壓”,其中“拜新同”和“肌張力”是未登錄詞。
3 結果調整
給定一個初步切分的結果 ,需要通過合并操作將它調整為最終的分詞結果 ,其中 是最終切分結果中的詞數; , ,即 由一個或多個初步切分結果中的連續片段組成。對于“口服 拜 新 同 控制 血壓”的初步切分,“口服 拜新同 控制 血壓”、“口服拜 新 同 控制 血壓”和“口服 拜 新 同 控制血壓”分別是三種不同的調整結果。調整的目的,是實現對未登錄詞的識別。在此希望找到一種調整方式使得那些被切散的未登錄詞盡可能地合并還原,同時還要盡量避免錯誤的合并。例如“拜新同”是需要實現的正確合并,而“口服拜”和“控制血壓”則是錯誤的合并。文獻[18]提出一種歸納未登錄詞的通用規則,并使用自底向上的遞歸算法進行規則匹配,以此來合并被切散的未登錄詞。這種方法雖然具有較高的準確率,但卻需要事先從大規模標注語料中學習大量的規則,用來判定初步切分結果中的單個漢字是否可能屬于某個未登錄詞。本文主要以字串在大規模未標注語料中的統計特征為基礎來實現對未登錄詞的識別,從而盡可能地減少算法對人工干預的依賴。
3.1 左右分支信息熵
理論上,句子中的任何一個字串都可能是詞。找到一種可以衡量字串成詞可能性的統計標準即良度,則是實現無監督分詞的關鍵基礎。中文所涵括的詞作為一個有意義的字串常常會出現在不同的語言環境中[8]。也就是說,與那些不能成詞的字串相比,詞與其外部語言環境往往具有更高的獨立性。例如,在電子病歷中,名詞“拜新同”分別在“口服拜新同控制血壓”、“使用拜新同處置”、“口服良蒙諾、拜新同等藥控制”、“改用恩必普、拜新同、維爾亞”等多個句子中出現過,而非詞字串“服拜”僅在“口服拜新同”和“口服拜阿司匹靈”兩個句子中出現過。由此可見,一個字串在文本中得以運用的自由程度,就成為衡量該字串是否可能成詞的重要標準。本文采用左右分支信息熵[9]來衡量字串的在文本中的自由度,其形式化定義如下:
(3)
(4)
其中, 是當前的字串, 為文本中的字符集合, 是字串 左邊出現字符 的概率, 是字串 右邊出現字符 的概率, 和 分別是字串 的左右分支信息熵,分別反映了該字串與左右相鄰字符的搭配的不確定性。若一個字串的左右分支信息熵都比較高,則代表該字串可以在文本中靈活使用,此時就很可能是一個詞。因此,即將
(5)
定義為字串 在文本中的自由度,并將其作為衡量字串成詞可能性的良度。 越大,字串 成詞的可能性越高。經計算,前文所提到的藥品名稱“拜新同”在本文所采用的語料中的良度值為2.14,而非詞字串“服拜”的良度值僅為0.22。
3.2 未登錄詞識別
利用良度,即將未登錄詞識別轉化為最優化問題,即從所有對初步切分結果的可能調整中找到一種方式,而使目標函數值得到了最大。文中定義調整結果 評價函數為
(6)
其中, 是調整結果 中的詞數, 是對調整結果 中的每一個詞 的評價函數。研究的目標是求出使得評價函數 值最大的調整結果 ,并將其作為最終的分詞結果。在定義 時,需要考慮三個因素:
(1) 的良度值 ,良度越高,則 是一個正確詞的可能性越大;
(2) 的長度 ,長度較短的字串通常具有較高的良度值[8],但在分詞時,卻會更多地偏好較長的切分;
(3)規則,由于電子病歷中含有大量的醫療習慣用語,如“無”、“示”等,這些習慣用語又經常與醫療術語組合出現,如“無水平眼震”、“頭CT示”,這就導致由其所構成的非詞字串也往往具有較高的良度值。因此,需要引入針對性的規則來避免這些醫療習慣用語與其他詞語的合并。根據以上分析,得出 的具體定義如下:
(7)
其中, 為常數,用來平衡長度 和良度 兩個因素的效果; 是停用詞表,其中包括“伴”、“行”、“無”、“示”、“為”、“至”、“在”、 “約”、“于”等醫療習慣用語;式中的規則表示若 的前綴或后綴在停用詞表 中,則 ,否則 ,即禁止選擇醫療習慣用語作為開頭或結尾的合并操作。
由于函數 的特殊形式,其最大值可以使用動態規劃算法在多項式時間內快速求出。設 為初步切分結果 的前綴 所對應的最大函數值,則有如下遞推公式:
;
;
此時,最佳調整結果 所對應的函數值為 ,算法的時間復雜度為 。
4 實驗結果與分析
本文從哈醫大二院獲取了3 000份來自神經內科的電子病歷,并截取其中的出院小結和病程記錄作為實驗語料,共包含59 433行文本,每行可能包括多個句子,總大小為6.3M。由于長度超過6的詞在電子病歷中非常罕見,本文規定詞的最大長度為6,首先計算所有長度小于等于6的字串的左右分支信息熵,對于長度大于6的字串,可將其良度設定為0。在初步切分階段,通用詞典由網絡下載的常用詞詞庫組成,共包含65 114個常用詞,總大小為523K。限定EM算法的最大迭代次數為10次。在結果調整階段,經過調優,最終將參數 的值設定為1.7。為了驗證本文方法的有效性,將基于通用詞典的正向最大匹配算法作為基線實驗。另外,將Feng等[8]提出的基于鄰接字變化數的無監督分詞方法作為對比實驗。該方法通過鄰接字的變化數來構建良度,并使用動態規劃算法搜索最佳切分結果。選擇該方法作為對比實驗主要有兩個原因:首先,由于前人沒有針對中文電子病歷進行過實驗,為了對比,就需要重現其他文獻中的方法,而該方法實現起來相對簡單;其次,該方法的效果雖然并不是目前最好的,但相差不多[8],可以表現傳統無監督分詞的特性。從實驗語料中隨機抽取出1 000行作為測試語料,其大小為107K。將分詞系統切分的結果與人工切分結果進行對比,并使用準確率和召回率來評價分詞系統的效果。其中,準確率 為系統正確切分出的詞數與系統切分出的總詞數的比值,召回率 為系統正確切分出的詞數與人工切分出的總詞數的比值。具體實驗結果如表1所示。
表1 準確率和召回率
Tab.1 The precision rate and recall rate
P(%) R(%)
基線實驗 68.8 83.0
對比實驗 66.4 62.7
本文中的方法 87.1 89.3
由表1可以看出,本文中的分詞方法無論在準確率還是召回率上均遠高于基線實驗,這說明無監督分詞具有較強的未登錄詞識別能力。而對比實驗的分詞效果甚至不及基線實驗,再次說明傳統的無監督分詞方法難以適應中文電子病歷的語言特點,由于統計良度的失效,導致很多常規的詞語都無法被正確地切分出來,而本文利用通用領域的詞典則有效地彌補了良度可信度降低所帶來的影響。
5 結束語
本文提出了一種針對中文電子病歷的無監督分詞方法。為了解決傳統無監督分詞方法在處理電子病歷時良度失效的問題,首先使用通用詞典對電子病歷進行了初步切分,從而保證了大部分常規詞語的正確切分。然后再利用良度方法對初步切分的結果進行調整,以達到識別未登錄詞的目的。實驗證明,該方法具有自動識別未登錄詞的能力,并且在處理電子病歷時比傳統的無監督分詞方法具有更強的針對性,克服了獲取大規模標注語料的困難。然而,目前該系統的精度距離實用仍有一定差距,還有很多方面需要完善,包括:增加訓練數據的規模和多樣性,使用更多的、來自不同科室的電子病歷進行無監督學習;使用一些后處理技術,如規則,來實現系統精度的進一步提高。
參考文獻:
[1] 中華人民共和國衛生部. 電子病歷基本規范(試行), [Online], available: http://www.moh.gov.cn/publicfiles/business/htmlfiles/mohyzs/s3585/201003/46174.htm, 2010.
[2] WASSERMAN R C. Electronic medical records (EMRs), epidemiology, and epistemology: reflec-tions on EMRs and future pediatric clinical re-search[J]. Acad. Pediatr., 2011, 11(4): 280–287.
[3] DEMNER-FUSHMAN D, CHAPMAN W W, MCDONALD C J. What can natural language processing do for clinical decision support?[J]. Biomed. In-form., 2009, 42(5): 760–772.
[4] EYSENBACH G. Recent advances: Consumer health informatics[J]. BMJ, Jun. 2000, 320(7251): 1713–1716.
[5] CHEN K J, LIU S H. Word identification for Mandarin Chinese sentences[C] / / COLING '92: Proceedings of the 14th Conference on Computational Linguistics. New York: ACM Press,1992: 101-107.
[6] XUE N. Chinese word segmentation as character tagging[J]. Computational Linguistics and Chinese Language Processing, 2003, 8(1): 29-48.
[7] PENG F, FENG F, MCCALLUM A. Chinese segmentation and new word detection using conditional random fields[J]. 2004.
[8] FENG H, CHEN K, KIT C, et al. Unsupervised segmentation of Chinese corpus using accessor variety[M]//Natural Language Processing–IJCNLP 2004. Springer Berlin Heidelberg, 2005: 694-703.
[9] JIN Z, TANAKA-ISHII K. Unsupervised segmentation of Chinese text by use of branching entropy[C]//Proceedings of the COLING/ACL on Main conference poster sessions. Association for Computational Linguistics, 2006: 428-435.
[10] WANG H, ZHU J, TANG S, et al. A new unsupervised approach to word segmentation[J]. Computational Linguistics, 2011, 37(3): 421-454.
[11] ZHAO H, KIT C. An empirical comparison of goodness measures for unsupervised Chinese Word Segmentation with a unified framework[C]//IJCNLP. 2008: 9-16.
[12] CHEN S, XU Y, CHANG H. A simple and effective unsupervised Word Segmentation approach[C]//AAAI, 2011.
[13] MAGISTRY P, SAGOT B. Unsupervized word segmentation: the case for mandarin chinese[C]//Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics: Short Papers-Volume 2. Association for Computational Linguistics, 2012: 383-387.
[14] HIRSCHMAN L, SAGER N. Automatic In-formation Formatting of a Medical Sublanguage, in Sublanguage: Studies of Language in Restrict-ed Semantic Domains, R. Kittredge and J. Lehrberger, Eds. 1982:27–80.
[15] GE X, PRATT W, SMYTH P. Discovering Chinese words from unsegmented text (poster abstract)[C]//Proceedings of the 22nd annual international ACM SIGIR conference on Research and development in information retrieval. ACM, 1999: 271-272.
[16] PENG F, SCHUURMANS D. Self-supervised Chinese word segmentation[M]//Advances in Intelligent Data Analysis. Springer Berlin Heidelberg, 2001: 238-247.
[17] CHANG J S, SU K Y. An unsupervised iterative method for Chinese new lexicon extraction[J]. Computational Linguistics and Chinese Language Processing, 1997, 2(2): 97-148.
[18] MA W Y, CHEN K J. A bottom-up merging algorithm for Chinese unknown word extraction[C]//Proceedings of the second SIGHAN workshop on Chinese language processing-Volume 17. Association for Computational Linguistics, 2003: 31-38.