沈同平, 俞 磊
(安徽中醫藥大學 醫藥信息工程學院,合肥 230012)
實體識別是自然語言處理技術的一個重要研究方向,自1995年在第六屆信息抽取會議上提出實體識別評測任務后,文本命名識別研究在國內外迅速發展,聚焦于金融、新聞媒體、醫學文本處理等方面,并取得了豐碩的成果。命名實體的研究方法主要有基于規則和詞典的方法[1-2]、傳統的機器學習方法[3-4]、深度學習方法[5]、注意力機制模型和遷移學習方法[6-7]等。隨著國家醫療信息化進程地加快,電子病歷數據量迅速增加,電子病歷中包含了大量的隱性醫學知識。相關研究表明,電子病歷是知識密集型文本,醫學實體分布的密集程度高于通用領域文本,具有非常重要的研究價值。和通用領域文本相比,電子病歷中的文本的實體類型主要有癥狀、疾病名稱、檢查手段和方式等。這些實體數量眾多、類型豐富,且實體長度變化多樣,實體結構存在別名、縮寫詞等問題,造成電子病歷文本中實體識別效果不佳。
針對這些問題,有些學者采用構建詞典的方式來提升模型的效果。吳金星等[8]提出CRF和詞典相結合的方式,對蒙古文地名進行識別研究,準確率達到94.68%。龔樂君等[9]通過對外部資源的統計分析構建醫療領域詞典,再結合條件隨機場,進行了兩次不同粒度的標注,將領域詞典識別的準確性和機器學習的自動性融為一體,從中文電子病歷文本中識別出疾病、癥狀、藥品、操作四類醫療實體,取得良好的效果。任雪菁等[10]采取了詞典和 CRF 算法相結合的方法,來提升模型整體的識別精度,并采用Python等工具構建中文生物醫學實體自動標注平臺。珠杰等[11]利用條件隨機場的方法,研究觸發詞、虛詞、人名詞典和指人名詞后綴為特征的不同特征組合與優化,取得一定的模型效果。晏雷等[12]根據老撾語機構名構詞特點,將前綴詞提取構造成一個機構名稱特征詞典, 基于詞典與SVM模型確定老撾機構名稱前界,再使用融合多特征的CRF模型識別機構名稱,取得了較好的識別效果。
相對于通用領域文本,對特殊領域文本如醫學文本、少數民族語言以及小語種來說,單獨的CRF模型效果一般不盡人意,可以通過構建相應的領域詞典來提高CRF模型的識別效果。采用兩種不同類型數據集,通用領域文本(簡歷數據集)和特殊領域文本(CCKS2017電子病歷)進行對比分析和驗證,從而提升CRF模型在中文文本中實體識別效果。
條件隨機場(CRF)是典型的無向概率圖模型,2001年由Lafferty等專家提出,結合了大熵模型(MEMM)和隱馬爾可夫模型(HMM)的優點,利用豐富的內部及上下文特征信息,充分考慮了輸出序列的聯合概率分布,在詞性標注、實體識別等自然語言處理任務中取得了不錯的成績。CRF模型屬于判別式模型,使用最多的是線性鏈條件隨機場,x=(x1,…,xn)表示觀察數據序列,y=(y1,…,yn)表示狀態序列,需要計算的條件概率如下式所示:
P(y1,…,yn|x1,…,xn)=P(y1,…,yn|x),x=(x1,…,xn),
(1)
CRF模型與HMM等模型相比,可以定義數量更多、種類更豐富的特征函數,同時,特征函數的權重沒有任何限制。我們可以為每個特征函數賦予一個權值,用以表達我們對這個特征函數的信任度。假設tk的權重系數是λk,sl的權重系數是μl,則CRF由我們所有的tk,λk,sl,μl共同決定。
(2)
其中,Z(x)為規范化因子:
(3)
CRF模型的重要任務就是在訓練數據中使用最大似然估計算法,計算不同特征權重λ。在模型訓練時,通過函數L的計算,使得P(s|o,L)對數值最大為1的估計值。
(4)
函數L計算出來后,采用動態規劃的最短路徑求解方法維特比(Viterbi)算法,求解最可能的狀態序列并輸出。定義了兩個局部狀態進行遞推。首先,計算在時刻t隱藏狀態為i的所有可能的狀態轉移路徑i1,i2,...it中的概率最大值,記為δt(i):
(5)
由δt(i)的定義可以得到δ的一般遞推公式:
(6)
在前一個局部狀態的基礎上進行第二個局部狀態計算,求得在時刻t隱藏狀態為i的所有單個狀態轉移路徑(i1,i2,...,it-1,i)中概率最大的轉移路徑中第t-1個節點的隱藏狀態為Ψt(i),計算公式為
(7)
通用文本和醫學文本的特征和用詞方式都存在很大差異,為了提升CRF模型在醫學文本中的實體識別效果,需要構建專業的醫學詞典。構建的步驟:利用爬蟲從丁香醫生、百度百科等網站上爬取相關醫學知識。對爬取的醫學文本進行中文分詞、去除噪音以及人工標注等操作,形成專業醫學詞典。實驗數據集采用CCKS2017電子病歷文件,因此醫學詞典的標注按照身體部位(Body)、檢查手段(CHeck)、疾病名稱(Disease)、癥狀(Signs)和治療手段(Treatment)五種實體類型進行標注,規范如下:
(1)身體部位:患者全身的各個部位,比如“咽部”、“雙肺”、“四肢”和“頭顱”等,描述患者各種不適的身體部位。
(2)疾病名稱:醫生根據檢查手段以及臨床經驗,診斷出患者所患疾病,一般以“病”或“癥”“炎”作為實體的最后一個詞。比如“支氣管肺炎”和“糖尿病”等。
(3)癥狀:患者因疾病導致的各種不適或異常表現或者患者在描述自身情況的介紹,比如“頭痛頭暈”“麻木無力”和“嘔吐”等。
(4)檢查手段:根據患者的癥狀描述以及身體部位情況,采用一定的檢查項目進行疾病判斷。比如“跟膝腱反射”“雙側巴氏征”和“腸鳴音”等。
(5)治療手段:結合檢查手段,針對具體疾病給予具體的治療方式和手段,比如“胰島素”、“降壓藥物”和“阿托伐他汀”等。
采用兩個公開的數據集對模型進行評測,分別是CCKS2017電子病歷數據集和簡歷(Resume)數據集,CCKS2017電子病歷數據集主要是從電子病歷的角度進行專業醫學實體識別。因此采用模型驗證的數據集具有一定的擴展性,既有常規的文本,又有專業的醫學文本。
CCKS2017電子病歷數據集包括7種實體名稱,分別是身體部位(Body)、檢查手段(Check)、疾病名稱(Disease)、癥狀(Signs)和治療手段(Treatment)。訓練集中各實體的數量如表1所示。

表1 CCKS2017數據集訓練集各實體數量
簡歷數據集(Resume)包含7種實體名稱,分別是國籍(CONT)、姓名(NAME)、學歷(EDU)、職稱(TITLE)、公司(ORG)、民族(RACE)、專業(PRO)和籍貫(LOC)。訓練集中各實體的數量如表2所示。

表2 Resume數據集訓練集各實體數量
文本中的實體識別,通常需要對數據集進行序列標注,進而實現不同的實體識別。數據集主要采用BMES標注體系。在CCKS2017數據集中,以實體Treatment為例,“B- Treatment”表示治療手段實體的首字符,“M- Treatment”表示治療手段的中間字符,“E- Treatment”表示治療手段實體的最后一個字符,“S- Treatment”表示單獨的治療手段實體,“O”表示5個實體外的其他字符。在簡歷數據集(Resume)中,以實體LOC為例,“B- LOC”表示籍貫實體的首字符,“M- LOC”表示籍貫實體的中間字符,“E- LOC”表示籍貫實體的最后一個字符,“S- LOC”表示單獨的籍貫實體,“O”表示8個實體外的其他字符。
采用通過精確率(Precision)、召回率(Recall)、F1值和精確率(Accuracy)對模型評價,驗證本文模型的有效性。
(11)
(12)
(13)
Acc=(Tp+Tn)/(Tp+Fn+Tn+Fp),
(14)
其中,Tp表示真正例,Fp表示假正例,Tn表示正負例,Fn表示假負例。
采用Pytorch平臺搭建實驗環境,具體配置如表3所示。

表3 模型實驗配置環境

續表3
為了對提出的模型進行評價,分別對簡歷數據集(Resume)和CCKS2017電子病歷數據集進行評測,其中針對Resume數據集,采用CRF模型進行評測,CCKS2017電子病歷數據集分別采用CRF模型和CRF模型+詞典進行評測,結果如表4和表5所示。

表4 簡歷數據集(Resume)測評結果

表5 CCKS2017電子病歷數據集測評結果
從表4可以看出,CRF模型對簡歷數據集(Resume)取得了不錯的效果,準確率為93.71%,召回值93.01,F值達到93.38。簡歷數據集中的文本類型是普通文本,CRF模型能取得較不錯的評測效果。國籍(CONT)和民族(RACE)兩個實體,F值達到100,因為這兩個實體字段比較固定,不容易產生歧義,模型能夠高效的進行區分和識別。但對公司(ORG)和專業(PRO)這兩個實體識別效果相對較差,因為專業和公司名稱眾多,同時容易產生混淆,比如專業名稱“臨床醫學專業”、“中醫臨床醫學專業”和“中西醫臨床醫學專業”等。
從表5可以看出,在CCKS2017電子病歷數據集中,實體Disease和Treatment在訓練集中的數量分別是515個和813個,而Signs、Body和Check的數量分別為6 486個、8 942個和7 987個。實體Disease和Treatment的評測效果相對降低,召回值只有70.06和72.26,表明訓練集中實體數量多少直接影響模型的測評性能。
相對于簡歷數據集(Resume),CCKS2017電子病歷數據集模型評測效果相對較差,準確率、召回值和F值分別為89.32、88.00和88.54。這是因為醫學文本中的醫學實體長度不定、結構復雜和專業術語較多等原因導致CRF模型在醫學文本上識別效果較低。為了提高CRF在醫學文本中的識別效果,文章提出將醫學詞典結合CRF模型進行評測,評測效果取得了一定程度地提升,CCKS2017電子病歷數據集模型的準確率、召回值和F值分別為94.04、94.18和94.06,表明本文提出的模型結構的有效性。
在對中文實體識別分析的基礎上,對比分析CRF模型在通用文本和醫學文本中實體識別的效果。實證結果表明,CRF模型在通用文本中取得了較為理想的測評效果,但由于醫學文本中的醫學實體長度不定、結構復雜和專業術語較多, CRF模型在醫學文本上識別效果較低。為了提升在醫學文本上的識別效果,構建了專業的醫學詞典,實驗結果表明,CRF+詞典的模型能夠有效提升在醫學文本中各類醫學實體的識別效果。本次實驗的數據集采用的是BMES標注體系,后續還需要對BIO標注體系和BIEOS等標注體系進行對比研究。