一種基于語言模型的醫案搜索方法
【專利摘要】本發明公開了一種基于語言模型的醫案搜索方法。步驟如下:1)通過OCR,文本結構化處理,從醫案書籍中提取結構化單篇醫案;2)使用中文分詞工具,對所有醫案進行包括分詞和去停用詞在內的預處理;3)用最大似然估計計算得到每篇醫案的unigram語言模型;4)針對所有醫案,統計各詞頻水平對應詞語的個數,并使用統計到的數據擬合曲線;5)使用Good?Turing估計方法來平滑每篇醫案的unigram語言模型;6)以所有醫案集作為整體建立一個所有醫案集的語言模型,并用于修正單篇醫案的unigram語言模型;7)使用修正后的語言模型實現醫案搜索。本發明實現了基于語言模型的信息檢索,使用N?gram針對每篇醫案建立各自的語言模型,使用語言模型生成文本的概率作為搜索結果排序依據。
【專利說明】
一種基于語言模型的醫案搜索方法
技術領域
[0001] 本發明涉及信息檢索領域,具體涉及一種基于語言模型的醫案搜索方法。
【背景技術】
[0002] 語言模型是一種基于概率來生成文本的模型。給定一句話,也就是一個詞語的序 列,語言模型可以得到這個序列,即P(W1,…,w n)的概率。它有非常多的應用場景,例如語音 識別、機器翻譯、詞性標注(POS tagging)、手寫字體識別、信息檢索等等。
[0003] N-gram模型是訓練快,計算生成文本概率高的語言模型,適用于實現信息檢索。N-gram中典型的是Unigram模型,一個句子,也就是一個詞語序列,Wi,…,w n的概率p(wi,…, wn),根據鏈式法則,應該等于p(wi) Xp(W2 |wi)…p(wn|wi,···,wn-1)。如果做一個最簡單的假 設,W 1,…,wn兩兩互相獨立,則可以將其簡化為p(Wl) Xp(W2) X…Xp(Wn)。而基于這個獨立 的假設,得到的語言模型就是unigram模型。在信息檢索應用中,unigram模型是需要經過平 滑處理來防止P(term) =0的情況。
[0004] 在實際操作中,訓練數據或測試數據中會出現一些模型詞典中不存在的詞,這是 很常見的,因為模型的詞典不太可能也不需要包括所有詞,在n-gram模型中,詞是用向量來 表示的,而向量的維度就是詞典的大小,如果詞典非常大,那么詞向量的維度就會非常高, 模型在訓練過程中就需要做更多的計算,增加了訓練時間。而且詞典越大并不能給模型的 效果帶來的提升,有些生僻詞在整個訓練數據集中也許只會出現一兩次,而這一兩次對于 它概率的估計是非常不準確的,往往都是過擬合。正是由于這個原因,η-gram模型往往需要 對詞的條件概率做一些平滑
【發明內容】
[0005] 目前比較通用的信息檢索框架大多基于TF-IDF,本質是一種優化版的關鍵詞匹 配,只能根據關鍵詞檢索,而中醫醫案有其獨特的語言特性。中醫歷史悠久,相應的,醫案的 時間跨度非常大,有文言文和現代文的醫案,文言文和現代文中同一個關鍵詞的含義有的 相差甚遠,基于關鍵詞的搜索效果并不理想。針對醫案數據的這種語言特性,本發明實現了 基于語言模型的信息檢索,使用N-gram針對每篇醫案建立各自的語言模型,使用語言模型 生成文本的概率作為搜索結果排序依據。
[0006] 在信息檢索中,用戶通常是根據感興趣的文章中很可能會存在的詞來構造搜索語 句。基于語言模型的信息檢索正是基于這個思想,如果一個搜索語句很有可能通過一篇文 章來生成,那么這篇文章就很有可能是與該搜索語句相關的。通常的步驟是,對于每篇文章 d,訓練一個語言模型Md,然后根據該語言模型生成搜索語句的概率排序。
[0007] 為實現上述目的,本發明采用如下技術方案:
[0008] 1.-種基于語言模型的醫案搜索方法,其特征在于包括以下步驟:
[0009] 1)通過OCR,文本結構化處理,從醫案書籍中提取結構化單篇醫案;
[0010] 2)使用中文分詞工具,對所有醫案進行包括分詞和去停用詞在內的預處理,并建 立詞典;
[0011 ] 3)用最大似然估計計算得到每篇醫案的un i gram語言模型;
[0012] 4)針對所有醫案,統計各詞頻水平對應詞語的個數Ntf,其中下標tf代表詞頻水平, 使用統計到的數據擬合曲線,擬合公式如下:
[0013]
[0014] 得到曲線參數Θ;
[0015] 5)根據步驟4)擬合的曲線計
七值;使用 Good-Turing估計方法來平滑每篇醫案的unigram語言模型,公式如下:
[0016]
[0017]式中:tf平滑后的詞頻水平;
[0018] 6)將所有醫案替代單篇醫案作為訓練文本,重復步驟2)到5),以所有醫案集作為 整體建立一個所有醫案集的語言模型,使用該語言模型通過加權加和法修正單篇醫案的 unigram語言模型,修正公式如下:
[0019] Psum(t I d) = ω XPd〇cument(t I d) + (l-t〇 ) XP corpus (t)
[0020]式中:Psum(t|d)為修正后的單篇醫案的uni gr am語言模型;ω為權重;Pd Qcument (11 d) 為平滑后的每篇醫案的unigram語言模型;P?rpus(t)為整個醫案集的語言模型;
[0021 ] 7)使用修正后的語言模型實現醫案搜索。:
[0022]所述的步驟7)搜素實現基于語言模型實現,其過程包括有具體為:
[0023] 7.1)對搜索語句文本進行預處理,且該預處理與所述的步驟2)中的預處理過程保 持一致,包括是否去停用詞,是否過濾低頻詞;
[0024] 7.2)依次計算每篇醫案生成搜索語句文本的概率,對每篇醫案的生成概率進行排 序,取最高的若干篇醫案作為結果返回。
[0025] 進一步的,所述的每篇醫案生成搜索語句文本的概率可采用對數概率,其計算公 式如下:
[0026]
[0027] 式中:Md為第d篇醫案;l〇g(pMd(q?iiery))為第d篇醫案生成搜索語句文本的概率為 對數概率;P(W i I Md)為第d篇醫案生成搜索語句文本中第i個詞的概率。上式中求積符號代表 對搜索語句文本中所有分詞的概率進行求積。
[0028] 所述的中文分詞工具包括Java的IKAnalyzer和Python的Jieba 〇
[0029] 本發明相對于現有技術的有益效果為:
[0030] 1)提高醫案搜索結果的相關度。
[0031] 2)可以使用語言模型預測用戶輸入的搜索語句,而起到簡化用戶操作的目的。
【附圖說明】
[0032]圖1為語言模型建立的整體流程。
[0033]圖2為語言模型搜索的實現邏輯。
[0034]圖3為醫案集Unigram的Ntf擬合曲線與真實數據對比。
[0035]圖4為一篇醫案的語言模型部分實例。
【具體實施方式】
[0036]以下結合附圖和具體實施例對本發明作進一步詳細說明。
[0037] 圖1為語言模型建立的流程,對應一下步驟1到6,圖2為基于語言模型搜索的實現 邏輯,對應步驟7。
[0038] 1.-種基于語言模型的醫案搜索方法,其特征在于包括以下步驟:
[0039] 1)通過0CR,文本結構化處理,從醫案書籍中提取結構化單篇醫案;
[0040] 2)使用開源的中文分詞工具,如Java的IKAnalyzer和Python的Jieba,,對所有醫 案進行包括分詞和去停用詞在內的預處理,并建立詞典;
[0041 ] 3)用最大似然估計計算得到每篇醫案的unigram語言模型;
[0042] 4)針對所有醫案,統計各詞頻水平對應詞語的個數Ntf,其中下標tf代表詞頻水平, 使用纟多彳+剄的撒抿龍丨公曲姥-龍丨公公式如下:
[0043]
[0044] 得到曲線參數Θ;
[0045] 5)根據步驟4)擬合的曲線計算^1,再通過直接估計出^比值;使用 Good-Turing估計方法來平滑每篇醫案的unigram語言模型,公式如下:
[0046]
[0047]式中:tf平滑后的詞頻水平;
[0048] 6)將所有醫案替代單篇醫案作為訓練文本,重復步驟2)到5),以所有醫案集作為 整體建立整個醫案集的語言模型,使用該語言模型通過加權加和法修正單篇醫案的 unigram語言模型,修正公式如下:
[0049] Psum(t I d) = ω XPd〇cument(t I d) + (l-t〇 ) XP corpus (t)
[0050]式中:Psum(t|d)為修正后的單篇醫案的uni gr am語言模型;ω為權重;Pd Qcument (11 d) 為平滑后的每篇醫案的unigram語言模型;P?rpus()為整個醫案集的語言模型;
[0051] 7)使用修正后的語言模型實現醫案搜索,具體為:
[0052] 7.1)對搜索語句文本進行預處理,且該預處理與所述的步驟2)中的預處理過程保 持一致,包括是否去停用詞,是否過濾低頻詞;
[0053] 7.2)依次計算每篇醫案生成搜索語句文本的概率,每篇醫案生成搜索語句文本的 概率為對數概率,其計算公式如下:
[0054]
[0055] 式中:l〇g(PMrf(t^ery))為第d篇醫案生成搜索語句文本的概率為對數概率;p(wi Md)為第d篇醫案生成搜索語句文本中第i個詞的概率。
[0056] 對每篇醫案的生成概率進行排序,取最高的若干篇醫案作為結果返回。
[0057]下面以實施例為基礎,對上述方法做進一步說明,實施例中省略的步驟均按照上 述方法進行實現。
[0058] 實施例
[0059] 醫案名稱:滋陰清熱祛瘀開竅法治愈幼兒半身不遂I患者:王某,女,2歲半。I初診: 1983年6月16日。主訴及病史(其父代訴):午后發熱,右側肢體活動障礙,左眼外斜視40天。 病始于1983年1月,持續高熱1周,體溫39~40°C,納呆,消瘦,經某醫院照胸片診為右側支氣 管淋巴結結核。住院接受鏈霉素、雷米封等治療。2個月后體溫逐漸恢復正常,胸片復查好 轉。但于1983年5月再次高燒,體溫40°C以上,伴有嗜睡、噴射性嘔吐、神志不清、陣陣抽搐。 經查:瞳孔等大等圓,對光反射遲鈍,項強,克尼格征陽性,右側巴賓斯基征陽性。化驗白細 胞數11200/mm-3,中性30%,淋巴69%,嗜酸1%,腰穿腦脊液壓力升高,化驗腦脊液細胞數 1150/mm-3,白細胞32%,蛋白微量,糖五管試驗弱陽性。診為結核性腦膜炎。搶救治療兩天, 神志蘇醒,體溫較前下降,但發現右側肢體癱軟無力,右下肢步履拖拉,行走需人攙扶,右上 肢上舉受限,右手呈握拳狀難伸,左眼向外斜視,精神遲鈍,言語不清,夜睡不安、盜汗,雖仍 繼續以抗結核藥物及"脈通液"等治療;但每日午后體溫仍持續在37~38°C,現已40余日。
[0060] 使用開源的中文分詞工具對所有醫案進行包括分詞和去停用詞在內的預處理,并 建立詞典,分詞結果如下:
[0061] 醫案I名稱I滋陰I清熱I祛瘀I開竅I法I治愈I幼兒I半身不遂I患者I王某I女|21歲 半I初診11983|年16|月116舊I。I主訴I及I病史|(|其父I代訴I) I午后I發熱I,I右側I肢 體I活動I障礙I左眼I外I斜視|4〇|天I病I始于119831年111月I,I持續I高熱|11周I體溫139 401 °C I納呆I消瘦I經某I醫院I照I胸片I診為I右側I支氣管I淋巴結結核I住院I接受I鏈霉 素 I雷米I封I等I治療|2|個I月I后I體溫I逐漸I恢復正常I胸片I復查I好轉I但于119831年 5|月I再次I高燒I體溫|4〇I °C I以上I伴有I嗜睡I噴射性I嘔吐I神志不清I陣陣I抽搐I經查 瞳孔I等I大I等I圓I對I光反射I遲鈍I項強I克I尼格I征I陽性I右側I巴賓斯I基征I陽性I化 驗I白細胞I數I腰I穿I腦脊液I壓力I升高I化驗I腦脊液I細胞I數I白細胞|321蛋白I微量 糖五管I試驗I弱陽性I診為I結核性腦膜炎I搶救I治療I兩天I神志I蘇醒I體溫I較前I下降 但I發現I右側I肢體I癱軟I無力I右I下肢I步履I拖拉I行走I需人I攙扶I右I上肢I上舉I受 限I右手I呈I握拳I狀難I伸I左眼I向外I斜視I精神I遲鈍I言語I不清I夜睡I不安I盜汗I雖 仍I繼續I以I抗結核I藥物I及I脈I通液I等I治療I但I每日I午后I體溫I仍I持續I在|37|~ 38|°C|現已|40|余日
[0062] (3)用最大似然估計計算得到每篇醫案的unigram語言模型。該語言模型主要有兩 個問題要解決,一是零頻次問題,醫案中未出現的詞最大似然估計概率都是零,不利于實現 搜索功能;二是單篇醫案統計量過小,需用醫案集的語言模型來修正單篇醫案的語言模型。
[0063] (4)根據整個醫案集統計各詞頻水平對應詞語的個數Ntf,其中tf代表詞頻水平,例 如見代表醫案中詞頻為1的詞語個數,使用統計到的數據擬合曲線:
[0064] Ntf=(l-0)logtf0
[0065] 得到曲線參數Qc3Ntf的擬合曲線如圖3所示。
[0066] (5)使用Good-Turing估計方法來平滑每篇醫案的語言模型:
[0067]
[0068] 由于單篇醫案統計量太小,使用最大似然估計E(Ntf)不準確,需要使用到根據步驟 (4)擬合的曲線來代替估計。根據(4)中的擬合曲線可以計算1 霞,而無需估計各
自的E(Ntf)。
[0069] (6)單篇醫案因為有大量未出現的詞語,而且出現的詞語也可能異常的分布,導致 其模型不夠穩定。用相同的Good-Turing估計,對整個醫案集建立一個語言模型。由于樣本 量大大增加,整個醫案的模型會相對穩定。而且它可以幫助分辨未出現詞語之間的區別。通 常有兩種方式組合不同的語言模型:加權加和法(或稱為插值法),以及加權乘積法。本發明 中使用加權加和法,其優點是,組合之后得到的概率仍然是歸一化的,即所有詞的概率加和 仍然是1。經過步驟(3)、(4)、(5)舉例的醫案得到語言模型部分如圖4所示。
[0070] (7)使用語言模型實現醫案搜索。計算文本生成概率的過程如下:1.對文本進行預 處理,且必須與建立N-gram模型的過程中的預處理相同,包括是否去停用詞,是否過濾低頻 詞;2.依次計算每篇醫案生成文本的概率。需要注意的是,實際計算的是對數概率,需要防 止浮點數下溢。
【主權項】
1. 一種基于語言模型的醫案捜索方法,其特征在于包括W下步驟: 1) 通過OCR,文本結構化處理,從醫案書籍中提取結構化單篇醫案; 2) 使用中文分詞工具,對所有醫案進行包括分詞和去停用詞在內的預處理,并建立詞 典; 3) 用最大似然估計計算得到每篇醫案的unigram語言模型; 4) 針對所有醫案,統計各詞頻水平對應詞語的個數Ntf,其中下標tf代表詞頻水平,使用 統計到的數據擬合曲線,擬合公式如下:得到曲線參數9; 5) 根據步驟4)擬合的曲線計算^^,再通過直接估計出比值;使用Good- 化r i ng估計方法來平滑每篇醫案的un i gram語言模型,公式如下:式中:tfhp滑后的詞頻水平; 6) 將所有醫案替代單篇醫案作為訓練文本,重復步驟2)到5),W所有醫案集作為整體 建立一個所有醫案集的語言模型,使用該語言模型通過加權加和法修正單篇醫案的 unigram語言模型,修正公式如下: Psum(t|d)= ω XPdocument(t I (1) + (?-ω ) XPcorpus(t) 式中:Psum(t I d)為修正后的單篇醫案的unigram語言模型;ω為權重;Pd〇cument(t I d)為平 滑后的每篇醫案的unigram語言模型;PGurpus(t)為整個醫案集的語言模型; 7) 使用修正后的語言模型實現醫案捜索。2. 如權利要求1所述的基于語言模型的醫案捜索方法,其特征在于所述的步驟7)具體 為: 7.1) 對捜索語句文本進行預處理,且該預處理與所述的步驟2)中的預處理過程保持一 致,包括是否去停用詞,是否過濾低頻詞; 7.2) 依次計算每篇醫案生成捜索語句文本的概率,對每篇醫案的生成概率進行排序, 取最高的若干篇醫案作為結果返回。3. 如權利要求2所述的基于語言模型的醫案捜索方法,其特征在于所述的每篇醫案生 成捜索語句文本的概率為對數概率,其計算公式如下:式中:bg(PMd(gwery))為第d篇醫案生成捜索語句文本的概率為對數概率;p(wi |Md)為 第d篇醫案生成捜索語句文本中第i個詞的概率。4. 如權利要求1所述的基于語言模型的醫案捜索方法,其特征在于所述的中文分詞工 具包括 Java的 IKAnalyzer和 FVthon的 Jieba。
【文檔編號】G06F17/27GK105843868SQ201610154543
【公開日】2016年8月10日
【申請日】2016年3月17日
【發明人】張引, 姜利成
【申請人】浙江大學