叶 枫 陈莺莺 周根贵* 李昊旻 李 莹(浙江工业大学经贸管理学院,杭州 3003)
2(浙江大学生物医学工程与仪器科学学院,杭州 310027)
面对信息爆炸带来的严重挑战,人们迫切需要一些自动化的工具帮助他们快速寻找到真正重要的信息。信息抽取(information extraction,IE)可以从文本中抽取出特定的信息并形成结构化数据,帮助人们对信息内容进行整理和分析[1],于是信息抽取技术应运而生。命名实体识别(named entity recognition,NER)是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等,它作为信息抽取的第一步起着关键性的作用。
在国外,各个研究领域都对命名实体识别展开了大量研究,尤其是在生物医学领域,已经进行了深入研究[2-5]。我国对命名实体识别的研究相对起步较晚,主要集中在人名、地名、机构名等实体的识别[6]。近年来,我国学者开始对生物医学领域内的专有名词进行智能识别,与国外一样,其研究内容主要集中在蛋白质、基因、核糖核酸等实体的识别[7-10]。
随着临床信息化的发展,电子病历开始在临床中逐渐普及,如何智能地利用其中的信息也越来越受到关注,不少临床决策支持系统(clinical decision support system,CDSS)都将电子病历作为重要的知识来源[11-12]。然而,以自然语言形式存在的病历信息成为信息智能利用的障碍,如何让计算机自动汇总患者信息,构建和挖掘大型临床数据库以服务于临床决策,成为临床信息化所亟需解决的问题。
在病历中,命名实体的类别繁多,除了时间、人名、组织机构等常见的实体类别外,还有疾病、症状、手术操作、病因、病理、药品等特有的实体类别。本研究面向病历中最常见的3类实体(疾病、临床症状、手术操作),利用条件随机场(conditional random field,CRF)方法进行自动识别,取得了良好的效果。
目前,命名实体的识别方法主要有3种:基于词典的方法、基于规则的方法、基于机器学习的方法[5]。基于词典的方法,需要建立具有广泛覆盖性的命名实体词典,并添加相应的个类,如缩写、同义词,变形词甚至通常错误词等注释内容,配合相应的匹配算法来实现对于文本中命名实体的识别,其缺陷是对于出现的新命名实体缺乏兼容能力,往往存在覆盖率不足的问题,特别是在医学领域,术语量非常庞大,国内尚缺乏能够有效支撑自然语言处理能力的中文医学术语词典。基于规则的方法,虽然在一定程度上弥补了基于词典方法不能识别未收录词的缺陷,但是对于特定领域需要专业知识的工程师和专家来说,建立针对性的识别规则库,规则的制定不仅需要消耗大量的时间和人力,而且所制定的规则可移植性差。相对于前两种方法,基于机器学习的方法具有更好的实用性,通常基于标注过的语料进行训练,然后基于训练结果来智能完成对于命名实体的识别。因此,该方法具有很好的移植性,目前已经广泛应用于包括命名实体识别在内的许多自然语言处理任务中。
在实体命名识别研究中,常用的机器学习模型包括支持向量机(support vector machine,SVM)、隐马尔可夫(hidden Markov model,HMM)、最大熵马尔可夫(maximum entropy Markov model,MEMM)、条件随机场(CRF)等[9,13-14]。
1)支持向量机:将识别问题看作是一个分类问题,通过构造一个超平面,以超平面间的距离作为最大边缘来把训练实例分割为两类,因此主要处理二元分类。但是,VM的识别效率低,需要大量的数据进行训练,单独使用效果不佳。
2)隐马尔可夫:是一种被应用得较早的模型,在语音识别中获得广泛应用,在生物医学领域的实体识别研究中也有使用[10]。由于其输出独立性假设,导致其不能考虑上下文的特征,在一定程度上限制了特征的选择。
3)最大熵马尔可夫:是一种较早就被应用并对NER系统有较大促进的指数线性模型,它解决了隐马尔可夫的问题,可以任意选择特征,但由于其在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标记偏见的问题,凡是训练语料中未出现的情况全都忽略。
4)条件随机场:只需要考虑当前已经出现的观测状态特征,没有独立性的严格要求,并很好地解决了MEMM的标注偏见问题。它并不在每一个节点进行归一化,而是对所有特征进行全局归一化,因此可以求得全局的最优值。此外,在小规模的训练数据上,它也获得了理想的效果。
在生物医学领域,有许多相关研究证明了该模型的有效性。Tsai等利用CRF对GENIA V3.02中的5类实体进行识别,其中蛋白质的F值达70.2%[7],彭春艳等在相似的实验中达到了73.7%的F值,这两个实验都证明CRF优于其他机器学习模型[10]。Leaman等对生物医学文献中的多类实体进行识别,总体F值达81.96%,其中疾病的F值仅为54.84%[4]。而在其随后针对Arizona疾病语料库(Arizona Disease Corpus,AZDC)的研究中,疾病的F值提升到了77.9%[5]。同样,基于AZDC语料库,Faisal等则采用了一系列针对疾病量身定制的特征,达到了81.8%的F值[15]。在中医学领域,王世昆等在数据清洗和特征空间降维的基础上,对中医病案中的病症和发病机理进行智能识别,达到87.16%的F值,而同实验中SVM的F值仅为81.92%[16]。综上所述,在各种机器学习模型中,CRF具有诸多优于其他识别模型的特点,对各类实体都具有很好的识别效果。
CRF是一种较新的无向图模型,最早由Lafferty和McCallum在2001年提出[17],以给定的输入节点值为条件来预测输出节点值的概率。其中,最简单也是最常用的为线性链式结构,如图1所示。
图1 CRF线性链式结构Fig.1 CRF linear chain structure
命名实体识别过程可以看成序列标注过程,即:将每一自然句看成一个观察序列,把句中的每一个字或词看成是一个符号,再给每一个符号赋予一个标记(或状态)。对于观察序列x=(x1,x2,…,xn)和状态序列y=(y1,y2,…,yn),可以定义一个CRF模型,形式为
式中,fk(yi-1,yi,x)为观察序列x位置为i和i-1的输出节点的特征函数,gk(yi,x)为位置为i的输出和输入节点的特征函数,λk和μk是相应特征函数的权重。Z(x)为所有状态序列的归一化因子,有
通过对训练集进行训练,可以获得满足条件概率(见式(1))最大化的参数λk和μk。在此基础上,与HMM类似,CRF也可以使用Viterbi解码以获得最佳的状态序列,即:
由于特征的选择对CRF的训练效果具有很大的影响,因此除了要选择合适的机器学习方法,也需要选择一个有效的特征集合,以获得理想的准确率和召回率。理论上CRF允许使用任意的特征,使得模型可以获得丰富的信息。鉴于病历中实体的特殊性,本研究对病历进行了分析,采用了以下特征。
1)语言符号特征:在中文命名实体中,常用的语言符号主要有基于字和词两种。字是汉语中最基本的组成,一般是指单个汉字,而本研究所指的“字”还包括标点符号、外文字母、数字等。由于中文文本缺乏像英语那样的天然分词标记,因此,当选用词作为特征时,首先要进行分词工作。中文领域已经存在一些较为实用的分词软件,研究中选用中科院的ICTCLAS作为分词工具。由于它不是专门面向医学领域的分词工具,缺乏领域词汇,因此对其字典进行了扩展,将ICD-10(The International Classification of Disease,10thRevision)和ICD-9-CM(The International Classification of Diseases,9th Revision,Clinical Modification)中的术语添入其用户字典中。
2)词性特征:该特征对于识别命名实体的边界有很大帮助,如在病历中“患”、“诊断”等动词指出了疾病等实体的左边界。由于ICTCLAS分词工具可以在分词的同时进行词性标注,本研究的词性标注工作也将借助于它来完成。
3)构词模式特征:对ICD-10和ICD-9-CM中的术语进行统计分析可以发现,疾病名通常可以由修饰部分、人名/地名、身体部位或组成、基本疾病名等几部分组合而成,如“孤立性气管结核”可以拆分为“孤立性”、“气管”、“结核”3部分;手术操作通常由疾病名、身体部位和组成、核心词等几部分组合而成,如“脑室引流术”可以拆分为“脑室”、“引流”、“术”。本研究依据ICD-10和ICD-9-CM,通过人工收集,构建了4个外部字典,如表1所示。
4)词边界特征:对于病历中出现的命名实体和外部字典中的字词都采用了BIEO标记,B表示标记块的开始,I表示标记块的内部,E表示标记块的结尾,O表示不属于标记块。
5)上下文特征:在由连续出现的多个字词所构成的“上下文窗口”中,字词间的各种特征存在内在的规律和特点,也常被用于命名实体识别。文本选用两种不同的窗口长度(3和5),并将其所属范围内的各种字词特征进行组合,以构成新的联合特征。
表1 外部字典Tab.1 External dictionaries
如前所述,只关注表2所示的3类命名实体。为了实现自动识别,建立了3个处理流程:首先利用相关的医学语言处理技术准备CRF训练语料,然后依据实体的命名规律以及所选的特征设计CRF学习模板,最后使用学习模板通过训练获得CRF模型,基于生成的CRF模型对实体类型进行自动标注。下面结合所做实验,对实体自动识别流程进行详细介绍,并对实验结果进行分析。
表2 命名实体类别Tab.2 Named entity types
由于目前还没有大规模的中文病历的语料库,因此本研究组织了适当的人力,标注了小规模的病历语料库,以备实验所用。随机抽取来自临床医院各个科室的250份电子病历,涵盖了肿瘤、消化系统疾病、神经性疾病等25个疾病大类。由于全病历内容复杂且所研究的实体主要集中出现在现病史和既往史中,因此本语料库只包含这两块内容。对于不同的病历,现病史中出现重复语句的情况较少,而既往史中却常出现完全相同的语句,因此本研究保留了所有病历的现病史内容,而针对既往史,每个疾病大类只随机保留10份中的3份。同时,为避免既往史的内容训练和测试不足,另从600份病历中,摘取包含命名实体且不完全相同的语句,共432句。最终,构建了一个包含以上3个部分的语料库,共计71 766个字符。
随后,依据ICD-10、ICD-9-CM以及上述的4个外部字典,采用高精度的反向最大匹配算法进行自动标注。考虑到词典的覆盖率问题,对自动标注后的语料库进行了人工核对,以保证标注的正确性。部分标注集如下:
5年前因<D<BP胆囊><BN息肉>>行<M<BP胆囊><KW切除><KW术>>。否认有过<D<BP肝><BN炎>>、<D<BP肺><BN结核>>。1月余前,患者出现<S恶心>、<S呕吐>,在绍兴市第二医院住院治疗。
选用CRF++[18]作为条件随机场算法的执行工具。CRF++对于训练集和测试集有严格的格式要求:每行数据为一个标记(token),每个语句由多行标记组成,中间用空行隔开以区分句子的边界;每个token可以用多个被空格间断的列来表示多种特征,但必须包含相同的列数,且最后列为类别标签。类别标签,即前述的“状态”,用于表示每个token的正确分类。本研究通过自行编写的格式转换工具,将语料库转换成如图2所示的两种格式。其中,首列为语言符号特征(L),第二列为词性特征(P),第三列为构词特征(S),第四列为类别标签。与词边界特征一样,类别标签也采用了BIEO标记,用以标识实体的边界。
图2 采用不同语言符号的标注集。(a)基于字;(b)基于词Fig.2 Marked set with different linguistic symbol.(a)based on character;(b)based on word
CRF++利用用户设定的模板文件(template file)对以上标注语料进行训练学习。在模板文件中,每行代表一个特征模板,用于确定输入数据中的一个token。一维特征模板的基本格式为%x[row,col],其中,row确定与当前token的相对行数,col用于确定绝对列数。类似地,“%x[row1,col1]/%x[row2,col2]/…/%x[rown,coln]”为多维特征模板,通过定义不同维度的特征模板,就能组合使用多种特征。本研究将语言符号特征视为基础特征,而将其他特征视为备选组合特征,通过选用不同的特征模板来分析各种特征对实验结果的影响。
为了更简洁地表述各模板文件,将一维特征模板简化表达为“英文字母+数字”,如L0、P-2、S1。其中字母L、P、S分别对应于标注集中的前三列(详见本文3.1节),数字0表示当前token,1、-2等非零数字表示与当前token的相对行数。同时,将多维特征模板表述为P-1/P0/P1等形式,表示该特征模板由当前token的词性特征与前后相对位置为1的token的词性特征组合而成。表3给出了实验所设的4个模板文件,用T1~T4加以区分。其中:T1的上下文窗口长度为3,T2~T4的上下文窗口长度均为5;T1和T2只考虑语言符号和词性特征;T3只考虑语言符号和构词特征;T4同时考虑3列特征。
表3 模板文件Tab.3 Template files
将先前所建的两种格式的语料库大致按照2:1分为训练集和测试集两部分,分别用于CRF模型学习和测试。首先对训练集进行特征学习,将学习结果以模型文件(model file)形式输出,再利用生成的模型文件,自动在每行测试数据的最后给出相应的类别标签,从而实现对病历文本中实体类型的自动标注。实验最后,使用评测程序conlleval.pl[19]比较测试集中最后两列的差异,对实验结果进行自动测评。
为了逐步分析不同的特征或特征组合对于CRF自动识别的影响、寻求相对最佳的模板设置,本研究有选择地进行了3次对照实验,后两次实验将参照前面的实验结果进行设置,其中实验结果通过正确率(P)、召回率(R)以及F值3类指标进行评价。实验1和实验2分别用于分析上下文、语言符号这两种特征在采用不同形式时对实验效果的影响,依据实验结果提出特征或模板选择的一些基本规则;在实验1和实验2的基础上,实验3用于分析语言符号、词性、构词模式等多种特征的不同组合对实验效果的影响,在结果中寻找其中的最佳模板设置。3次对照实验的具体实验设置如表4所示。
表4 实验说明Tab.4 Experiment description
在实验1中,通过采用T1和T2两种模板,将提取特征的上下文窗口长度由3扩大到5。为了更直观地进行比较,表5中直接给出了两组实验结果的差值(T2-T1),其中符号+和-分别用于表示实验效果的提升和降低。从数据上可以看出,当上下文窗口大小从3扩大到5时,实验效果大体上是提高了,因此后续实验均采用了长度为5的上下文窗口。但是,对于不同类型的命名实体,其效果不同:提高了疾病和手术操作的识别效果,却降低了临床症状的识别效果。究其原因,发现了一个有趣的规律。通过对实验语料中3类实体的平均长度进行统计计算,可得3类实体的平均字符长度为:手术操作(5.23)>疾病名称(4.07)>临床症状(2.85);而从提高效果上看:手术和操作>疾病名称>临床症状,两者一致。由此说明,实体识别效果与选取的上下文窗口长度有很大的关联。当上下文窗口长度与实体长度相近时,实验识别效果较好;当上下文窗口长度过长时,可能存在特征过度提取的现象,在一定程度上降低了识别效果。因此,实验在选择上下文窗口的长度时,应考虑实体本身的长度,不宜过长或过短。
表5 上下文窗口扩大对实验的影响Tab.5 Influence of context window expanding on results
在随后的实验2中,通过模板和语言符号的两两组合,共形成4个实验组。为了便于比较,本研究仅选择3个指标中的综合性指标(F值),对不同实验组的识别效果进行评价,结果如图3所示。不难发现,无论模板为T2还是T3,采用字形时的效果明显优于采用词形时的效果,其中以手术操作的效果差距最大。于是,对识别效果最差的实验组2进行了结果统计,发现有9.5%的手术操作术语存在错误分割和词性标注的现象,而ICTCLAS的分词精度一般情况下可达97%以上。通过对这9.5%的术语做更进一步的分析,发现其中有59%未被正确识别,占了未正确识别总数的20%。笔者认为,这是由于目前的分词工具主要是针对新闻领域的,即使向分词工具中添加了医学领域的词汇,但这些词汇在分词工具的字典中属于低频词汇,仍然会存在较多错误分词和词性标注的情况,在一定程度上影响了实验效果。因此,在缺乏专业分词工具的情况下,语言符号采用字形比采用词形更为恰当。
图3 采用不同语言符号的结果比较Fig.3 Compare the results of different linguistic symbols
实验3在实验2的基础上进行改进,保留了实验2中采用字形的实验组1和实验组3,并新添了一个实验组,其语言符号同样为字形,而模板采用T4。在3个实验组中,新添的实验组得到了最佳的实验结果,如表6所示。比较图3和表6中各类命名实体的F值可知,在语言符号均采用字形的前提下,本研究的最佳模板为T4,说明组合3列特征时的效果要优于只组合2列特征时的效果,因此选择相对丰富的特征集将有助于命名实体的识别。在生物医学领域的其他实体识别研究中,F值一般为70%~85%[7],而从表6的数据上看,各类实体的F值都达到90%以上,说明实验取得了良好的效果。
表6 最优实验结果Tab.6 The best results
本实验取得了相对较好的结果,笔者认为主要有以下几个原因:首先,中文病历中的医学用语相对比较规范,由于病历可以分为多个相对独立的部分,且每部分的用语具有一定的相似性和重复性,所以这些病历自身的特点决定了其非常适合采用机器学习的方法进行实体识别;其次,采用了适当的机器学习模型(CRF),该模型具有其他机器学习模型所没有的诸多优点,可以在全局范围内得到最优值;最后,结合了语言符号、词性、构词特征等多种特征,使模型能较好地将普通词与实体区分开。实验不足的是训练集和测试集的规模较小,且来自于同一家临床医院,没有进行开放性测试。因此,如何构建更大规模的语料库进行训练和测试,是今后所需致力解决的问题。
总之,病历中命名实体的良好识别,能够为病历信息的智能抽取打下良好的基础,为汇总患者信息、构建临床数据库提供基础技术的支持。
[1]Doan A,Naughton JF,Ramakrishnan R,et al.Information extraction challenges in managing unstructured data[J].ACM SIGMOD Record,2008,37(4):14-20.
[2]Vlachos A,Gasperin C.Bootstrapping and evaluating named entity recognition in the biomedical domain[C]∥Proceedings of the HLT-NAACL BioNLP Workshop on Linking Natural Language and Biology.New York:Association for Computational Linguistics Morristown,2006:138-145.
[3]Bundschus M,Dejori M,Stetter M,et al.Extraction of semantic biomedical relations from text using conditional random fields[J].BMC Bioinformatics,2008,9:207.
[4]Leaman R,Gonzalez GR.BANNER:An executable survey of advances in biomedical named entity recognition[C]∥Proceedings of Pacific Symposium on Biocomputing.Hawaii:World Scientific Publishing Co.Pte.Ltd,2008:652-663.
[5]Leaman R,Miller C,Gonzalez G.Enabling recognition of diseases in biomedical text with machine learning:Corpus and benchmark[C]∥Proceedings of the 3rd International Symposium on Lagauges in Biology and Medicine.Seogwipo-si:LBM,2009:82-89.
[6]俞鸿魁,张华平,刘群.基于层叠隐马尔可夫模型的中文命名实体识别[J].通信学报,2006,27(2):87-93.
[7]Tsai Tzong-han,Chou Wen-Chi,Wu Shih-Hung,etal.Integrating Linguistic Knowledge into a Conditional Random Field Framework to Identify Biomedical Named Entities[J].Expert Systems with Applications,2006,30(1):117-128.
[8]Sun ChengJie,Guan Yi,Wang XiaoLong,et al.Biomedical named entities recognition using conditional random fields model[J].Lecture notes in computer science,2006,4223:1279-1288.
[9]郑强,刘齐军,王正华,等.生物医学命名实体识别的研究与进展[J].计算机应用研究,2010,27(3):811-815.
[10]彭春艳,张晖,包玲玉,等.基于条件随机域的生物命名实体识别[J].计算机工程,2009,35(22):197-199.
[11]Salem ABM.Casebased reasoning technology for medical diagnosis[J].World Academy of Science,Engineering and Technology,2007,25:9-13.
[12]Rossille D,Laurentc JF,Burgun A.Modelling a decisionsupport system for oncology using rule-based and case-based reasoning methodologies[J].International Journal of Medical Informatics,2005,74:299-306.
[13]Lee KJ,HwangYS,Rim HC.Two-phase biomedical NE recognition based on SVMs[C]//Proceedings of the ACL 2003 Workshop on Natural Language Processing in Biomedicine.Morristown:Association for Computational Linguistics,2003:33-40.
[14]Zhang Jie,Shen Dan,Zhou Guodong,et al.Enhancing HMM-based biomedical named entity recognition by studying special phenomena[J].Journal of Biomedical Informatics,2004,37:411-422.
[15]FaisalMD,Chowdhury M,LavelliA.Disease Mention Recognition with Specific Feature[C]∥Proceedings of the 2010 Workshop on Biomedical Natural Language Processing.Uppsala:ACL,2010:83-90.
[16]王世昆,李绍滋,陈彤生.基于条件随机场的中医命名实体识别[J].厦门大学学报,2009,48(3):360-364.
[17]Lafferty J,McCallum A,Pereira F.Conditional random fields:Probabilistic models for segmenting and labeling sequence data//Proceedings of the 18th international Conference on Machine Learning.San Francisco:Morgan Kaufmann,2001:282-289.
[18]CRF++:Yet another CRF toolkit[EB/OL].http://crfpp.sourceforge.net/,2009-05-06/2010-09-12.
[19]Output example conlleval[EB/OL].http://www.cnts.ua.ac.be/conll2000/chunking/output.html,2003-8-23/2010-09-12.