本發(fā)明屬于大數(shù)據(jù)醫(yī)療領域,具體涉及一種將體檢診斷數(shù)據(jù)轉化為疾病標簽的方法。
背景技術:
隨著人們生活水平的提高、保健意識的增強,健康體檢逐漸成為一種社會時尚,人們已經(jīng)改變了只有在得病時才去醫(yī)院的傳統(tǒng)觀念,定期體檢已經(jīng)被大多數(shù)人所接受。因此,醫(yī)院積累了海量的電子體檢數(shù)據(jù)。然而,原生的電子體檢數(shù)據(jù)中,存在大量的非結構化的文本體檢數(shù)據(jù)。這些文本數(shù)據(jù)往往無序雜亂冗余,出自各個水平各種習慣的醫(yī)生之手,有著很大的局限性,無法被很好的利用起來。
大數(shù)據(jù)醫(yī)療是當前的一個熱點,是指通過大數(shù)據(jù)相關技術,分析醫(yī)療領域的數(shù)據(jù)并挖掘其中的知識從而大幅度提高醫(yī)療服務。在過去的幾十年中,大數(shù)據(jù)已經(jīng)深深地影響了每一個企業(yè),包括醫(yī)療保健行業(yè)。如今,大量的數(shù)據(jù)可以讓醫(yī)療保健更加高效,更加個性化。自然語言處理是大數(shù)據(jù)密切相關的技術。在大數(shù)據(jù)的輔助下,自然語言處理也依托于大數(shù)據(jù)有了更多的發(fā)展,出現(xiàn)了如word2vec、LDA等新技術。
目前,在每次體檢結束后,獲取的體檢診斷數(shù)據(jù)是有復雜形式的醫(yī)生診斷文本,并未將診斷結果轉換為概要的疾病名稱,難以被用戶快速理解并且難以被后續(xù)大數(shù)據(jù)醫(yī)療應用用以分析醫(yī)療數(shù)據(jù)。因此,在可以獲得完整原始的體檢診斷數(shù)據(jù)的基礎上,提出對醫(yī)生診斷結果進行分析的方法,進而分類生成疾病類目樹并進行數(shù)字編碼化,再在實際的數(shù)據(jù)上反饋出體檢診斷結果的疾病標簽,是具有其切實的研究意義和應用前景的。
技術實現(xiàn)要素:
鑒于上述,本發(fā)明提出了一種將體檢診斷數(shù)據(jù)轉化為疾病標簽的方法,主要采用多種自然語言處理技術挖掘體檢診斷數(shù)據(jù)中疾病結果,提取其中疾病分類結構并進行編碼數(shù)字化,為體檢記錄提供標準疾病名稱標簽,從而更直接的描述體檢的結果并可以為其他大數(shù)據(jù)醫(yī)療服務。
本發(fā)明的目的是分析體檢數(shù)據(jù)中醫(yī)生對病人體檢數(shù)據(jù)的診斷結果,找出其中的疾病名稱,并進行聚類查找,建立疾病的類目樹,從而提供一個將原始的診斷結果轉換成疾病標簽的方法。
一種將體檢診斷數(shù)據(jù)轉化為疾病標簽的方法,包括如下步驟:
(1)對體檢診斷數(shù)據(jù)進行文本分詞和新詞發(fā)現(xiàn)處理,得到詞序列;
(2)在詞序列中,提取所需要的疾病詞匯,得到疾病名稱;
(3)對疾病名稱中的同義詞進行歸并,得到歸并的疾病名稱;
(4)對疾病進行聚類,建立疾病類目樹;
(5)根據(jù)歸并的疾病名稱和疾病類目樹進行疾病標記,得到疾病標簽。
步驟(1)的具體步驟為:
(1-1)對體檢診斷數(shù)據(jù)中原生的診斷結果進行分詞,得到文本詞序列;
(1-2)根據(jù)文本詞序列中詞語之間的關系進行詞語合并,得到新詞匯;
(1-3)對新詞匯再進行分詞,得到詞序列。
在步驟(1-1)中,對于體檢診斷數(shù)據(jù)中原生的診斷結果,首先,使用字典生成的Trie樹進行分詞匹配,然后,對其分詞匹配的結果做進一步地索引和統(tǒng)計,得到最大概率分詞結果,稱為文本詞序列。
利用Trie樹進行分詞匹配時,對于同一個字符串時??梢杂卸喾N分詞方式,作為優(yōu)選,采用動態(tài)規(guī)劃求解字符串的最大概率分詞結果。
在步驟(1-2)中,在體檢診斷數(shù)據(jù)中,由于體檢診斷文本的特殊性,難以在第一次分詞即可得到最佳的效果,很多疾病相關的詞匯可能會被誤拆,因此,根據(jù)分詞結果中詞語之間的關系進行詞語合并,得到新詞匯,便于后續(xù)的使用。作為優(yōu)選,通過統(tǒng)計點互信息指標來判斷詞語之間的關系。點互信息(Point-wise Mutual Information,PMI)是衡量兩個事物(例如兩個詞)之間的相關性的指標,廣泛應用于機器學習領域,其原理如以下公式所示:
在概率論中,如果x跟y不相關,則p(x,y)=p(x)p(y)。二者相關性越大,則p(x,y)與p(x)p(y)的差值就越大。同樣,在y出現(xiàn)的情況下x出現(xiàn)的條件概率p(x|y)除以x本身出現(xiàn)的概率p(x)也表示x跟y的相關程度。對于相鄰的詞,例如:出現(xiàn)P(甲狀腺結節(jié))的概率遠大于P(甲狀腺)P(結節(jié))的概率時,認為甲狀腺結節(jié)是一個語料庫中的新詞。
在步驟(2)中,采用統(tǒng)計方法TF-IDF提取詞序列中的關鍵詞(疾病名稱),并結合停用詞庫,基本獲得體檢診斷結果文本的標簽,即為疾病名稱。統(tǒng)計方法TF-IDF(term frequency–inverse document frequency)用以評估一字詞對于一個文本集或一個語料庫中的其中一份文本的重要程度。字詞的重要性隨著它在文本中出現(xiàn)的次數(shù)成正比增加,但同時會隨著它在語料庫中出現(xiàn)的頻率成反比下降。詞頻(term frequency,TF)是指某一個給定的詞語在該文本中出現(xiàn)的次數(shù)。逆文本頻率(inverse document frequency,IDF)由總文本數(shù)目除以包含該詞語之文本的數(shù)目,再將得到的商取對數(shù)得到。
在步驟(3)中,獲取的所有疾病詞匯中存在大量的同義詞,如后發(fā)性白內障擁有別名繼發(fā)性白內障和繼發(fā)性內障,他們都需要被歸并到一個疾病。這里為了發(fā)現(xiàn)各個疾病詞匯的同義詞,采用word2vec算法將各個疾病名稱抽象成數(shù)學向量,再使用數(shù)學向量的距離計算同義詞。
在步驟(4)中,為了更多地理解各個疾病之間的關系,在所有疾病名稱都提取完畢之后,對疾病名稱進行聚類,獲取疾病之間的類目關系。本發(fā)明采用了隱含狄利克雷分布(Latent Dirichlet Allocation,LDA)進行疾病聚類。LDA是一種文檔主題生成模型,也稱為一個三層貝葉斯概率模型,包含詞、主題和文檔三層結構。
本發(fā)明方法主要是分析體檢數(shù)據(jù)中醫(yī)生對病人體檢數(shù)據(jù)的診斷結果,找出其中的疾病名稱,并進行聚類查找,建立疾病的類目樹,從而將原始的診斷結果轉換成疾病標簽。該方法具有的優(yōu)點為:
(1)使用PMI對醫(yī)療體檢診斷結果進行新詞發(fā)現(xiàn),可以發(fā)現(xiàn)許多未發(fā)現(xiàn)的新疾病詞匯。
(2)對于大量疾病詞匯,使用word2vec算法發(fā)現(xiàn)其中的同義詞,在規(guī)范化疾病名稱的同時也減少了冗余的詞語。
(3)使用LDA進行疾病的聚類,可以方便地獲得各個類別的疾病之間的聯(lián)系。
附圖說明
圖1為基于體檢診斷數(shù)據(jù)的疾病標簽系統(tǒng)結構圖;
圖2為同義詞發(fā)現(xiàn)算法word2vec示意圖;
圖3為局部疾病標簽類目樹示例圖。
具體實施方式
為了更為具體地描述本發(fā)明,下面結合附圖及具體實施方式對本發(fā)明的技術方案進行詳細說明。
如圖1所示,本發(fā)明將體檢診斷數(shù)據(jù)轉化為疾病標簽的方法包括以下步驟:
步驟1,文本分詞:對體檢診斷數(shù)據(jù)中原生的診斷結果進行分詞,得到文本詞序列。
文本分詞需要詞典以獲得較高的準確率,這里選用的是從外部語料庫收集得到的基礎詞典結合相關的醫(yī)療詞典。對于體檢數(shù)據(jù)中原生的診斷結果,使用字典生成的Trie樹進行分詞匹配,對其分詞匹配的結果做進一步地索引和統(tǒng)計,得到最大概率分詞結果,稱為文本詞序列。
Trie樹又稱單詞查找樹,是一種樹形結構,用于保存大量的字符串。它的優(yōu)點是:利用字符串的公共前綴來節(jié)約存儲空間。利用Trie樹分詞可以大幅度提高分詞的速度。對于同一個字符串時??梢杂卸喾N分詞方式,這里使用動態(tài)規(guī)劃求解字符串的最大概率分詞結果。
步驟2,新詞發(fā)現(xiàn):根據(jù)文本詞序列中詞語之間的關系進行詞語合并,得到新詞匯。
在這個步驟中,根據(jù)步驟1分詞結束后的各個統(tǒng)計信息,重點對相鄰的詞進行分析。采用PMI指標來判斷詞語之間的關系,對于相鄰的詞,如出現(xiàn)P(甲狀腺結節(jié))的概率遠大于P(甲狀腺)P(結節(jié))的概率時,認為甲狀腺結節(jié)是一個語料庫中的新詞。
步驟3,文本分詞:對新詞匯再進行分詞,得到詞序列。
此步驟進行分詞的方法與步驟1中的分詞方法相同,都是采用字典生成的Trie樹進行分詞匹配,采用動態(tài)規(guī)劃求解字符串的最大概率分詞結果。
步驟4,疾病提?。涸谠~序列中提取所需要的疾病詞匯,得到疾病名稱。
這里使用統(tǒng)計方法TF-IDF提取詞序列中的疾病名稱,并結合停用詞庫,基本獲得體檢診斷結果文本的標簽,即為疾病名稱。對于每個診斷文本數(shù)據(jù),TF-IDF都可以找出其中出現(xiàn)較多而在其他診斷文本數(shù)據(jù)里面出現(xiàn)并不多的詞語。
步驟5,同義詞歸并:對疾病名稱中的同義詞進行歸并,得到歸并的疾病名稱;
此處,采用word2vec算法將各個疾病名稱抽象成數(shù)學的向量,再使用數(shù)學向量的距離計算同義詞。如圖2所示,CBOW和Skip-gram是word2vec算法的兩種實現(xiàn),其中,w(t)是指任意位置的一個詞,而w(t-1)則為其對應位置的前一個詞,w(t+1)為其對應位置的后一個詞,CBOW算法是根據(jù)一個詞的前后兩個詞可以推斷出當前詞,而Skip-gram算法為根據(jù)一個詞,可以推斷出它上下文的可能環(huán)境。word2vec算法的基本思想是通過訓練將每個詞映射成K維實數(shù)向量(K為模型中的超參數(shù)),通過詞之間的距離(比如cosine相似度、歐氏距離等)來判斷它們之間的語義相似度。它采用一個三層的神經(jīng)網(wǎng)絡,輸入層-隱層-輸出層,這個三層神經(jīng)網(wǎng)絡本身是對語言模型進行建模,但也同時獲得一種單詞在向量空間上的表示,而這個副作用才是Word2vec的真正目標。當獲得每個詞的詞向量后,可以根據(jù)詞向量之間的距離來尋找一個詞的同義詞。
步驟6,疾病聚類:對疾病進行聚類,建立疾病類目樹;
此步驟中采用LDA進行疾病聚類,以獲取疾病之間的類目關系,建立類目樹,圖3為建立好的類目樹的局部圖。對于語料庫中的每篇文檔,LDA定義了如下生成過程:
(1)對每一篇文檔,從主題分布中抽取一個主題;
(2)從上述被抽到的主題所對應的單詞分布中抽取一個單詞;
(3)重復上述過程,直至遍歷文檔中的每一個單詞。
在假設這樣的文檔生成方式后,求取這個模型的各個參數(shù),從而求出每個主題及主題內部的詞分布。對于體檢診斷數(shù)據(jù)庫而言,每個主題內部的詞都是疾病的名稱,而每個主題就是一個類別的疾病。
步驟7,標簽提?。焊鶕?jù)歸并的疾病名稱和疾病類目樹進行疾病標記,得到每個體檢文本唯一的疾病標簽。
以上所述的具體實施方式對本發(fā)明的技術方案和有益效果進行了詳細說明,應理解的是以上所述僅為本發(fā)明的最優(yōu)選實施例,并不用于限制本發(fā)明,凡在本發(fā)明的原則范圍內所做的任何修改、補充和等同替換等,均應包含在本發(fā)明的保護范圍之內。