中文分词技术在电子病历系统中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中文分词技术在电子病历系统中的应用
二〇一二年十月
摘要
电子病历(Electronic Medical Record,EMR)是医疗机构医务人员对门诊、住院患者临床诊疗和指导干预的、使用信息系统生成的文字、符号、图表、图形、数据、影像等数字化的医疗服务工作记录,是居民个人在医疗机构历次就诊过程中产生和被记录的完整、详细的临床信息资源,它可在医疗卫生服务中作为主要的信息源,取代纸张病历,医院通过电子病历以电子化方式记录患者就诊的信息,包括:首页、病程记录、检查检验结果、医嘱、手术记录、护理记录等等,其中既有结构化信息,也有非结构化的自由文本,还有图形图象信息,在医疗中作为主要的信息源,提供超越纸张病历的服务,满足医疗、法律和管理需求。
电子病历系统(Electronic Medical Record System, EMRs)是针对基于计算机和信息网络的电子病历进行采集、储存、传输、展现、检索、质量控制、统计和利用的系统。
为了进一步推进以电子病历为核心的医院信息化建设工作,提高医院信息化管理水平,截止2012年1月底,卫生部先后制定下发了《电子病历基本规范(试行)》、《电子病历系统功能规范(试行)》、《电子病历系统功能应用水平分级评价方法及标准》、《电子病历基本数据集(征求意见稿)》等法规和规范性文件。
在《电子病历系统功能规范(试行)》中明确了对电子病历书写需要将自然语言方式录入的医疗文书按照医学信息学的要求进行结构化以及对结构化数据的检索和统计进行了要求。
在《电子病历基本数据集(征求意见稿)》中进一步确定了电子病历数据进行数据交换的基本数据集模型。
由此可见电子病历的“结构化”是电子病历系统设计和实施的重点和难点。
本文将阐述如何通过在目前新版电子病历系统中引入中文分词技术,解决目前电子病历系统中电子病历数据的“结构化”难题,实现电子病历用户在实际应用中通过自然语言进行自由文本方式的输入的同时,能够通过计算机的辅助进行病历内容的结构化,为日后的查询、统计、数据交换提供基础。
本文阐述的主要内容如下:
(1)目前电子病历系统的结构化问题;
(2)中文分词技术概述;
(3)中文分词技术在电子病历系统结构化中的具体应用;
(4)中文分词技术应用的分析总结及展望。
关键词:中文分词、电子病历系统、结构化
第一章电子病历的结构化
1.1为什么要结构化
电子病历相对于传统手写病历的优点是显而易见的,并且随着IT技术的发展,以及医疗信息化建设的利益加强,电子病历的发展是必然的趋势。
而且顺应以电子病历为核心的医院信息化建设工作的推进,电子病历已经成为医疗信息化的重要组成部分。
国内电子病历开始于2000年左右,在此之前所开发的电子病历只能称之为病历电子文档化,基本上都是基于Word或写字板的功能,目前这种电子文档化病历目前仍然在一些医院正在使用。
国内较早的一些结构化电子病历采用全结构化的书写方式,比如南京海泰基于WEB架构的表格式电子病历,东软的自定义报表式电子病历。
所谓的电子病历的“结构化”是指从医学信息学的角度将以自然语言方式录入的医疗文书按照医学术语的要求进行结构化分析,并将这些语义结构最终以关系型结构的方式保存到数据库中。
例如:
如果描述一个“腹部疼痛2日,伴呕吐”的病症,按照词语的类别,把它划分为“腹部”(名词)、“疼痛”(动词)、“2”(数词)和“日”(单位名词),“伴呕吐”(动词)5个部分。
如果按照医学术语进行结构化分类分析,“腹部”是这一句话中描述“身体部位“的元素,”疼痛“是描述“症状“的元素,”2“是“数值”元素,“日”是“时间单位”元素。
这样电子病历的内容就成了结构化的描述,上述的结构不仅在编辑过程中使用,在保存时依然可以保持这些结构以便后续的利用。
电子病历结构化的优势表现在于以下几个方面:
1.降低了病历出错的概率,多层次的结构化病历通过数据量化标准模式,
把文字录入式的描述降低到最少,操作简单,同时避免了书写病历过程
中用词的随意性,为今后的数据收集,研究提供了方便;
2.优化了电子病历通过结构化中的元数据信息进行查询和统计分析;
3.实现了共享和交换,电子病历和医院中其它系统的数据交换是必然的。
这意味着,只有遵循国标所规定的全结构化的病历文档结构才是自由交
换数据的前提。
4.更适合临床信息化的需要,通过结构化电子病历,才能将病历中的病史、
临床检查检验结果、诊断治疗信息进行提取和关联,并分析出最科学的
临床路径。
1.2结构化的挑战
结构化电子病历相对于传统的电子文档化病历有很多现实性的意义和优势,在实际应用中,结构化电子病历在教学、科研方面的优势也得到了大家一致认可。
但是,电子病历不应该为结构化而结构化,比如,前文所提到的一些早期的一些结构化电子病历产品,就是强制的将病历划分成几个条目或者区域,要医生逐条逐项的去输入,不仅输入起来很不方便,而且灵活性也很差。
而且,结构电子病历虽然从某种程度上减轻了医生的工作量,提高了书写效率,改善了病历正规化,但是也存在一些弊端,一是医生可以对电子化内容进行复制粘贴,影响了医生的思维过程,虽然节约了书写的时间,使得病历本身的内容失去了科研循证的价值和病历质量;二是医生依赖于电子病历的结构化辅助输入,不能起到业务训练的效果和目的,所以,现在有些医院要求实习医师、试用期医务人员不允许采用结构化电子病历模板进行病历书写,而且为了防止实习医师、试用期医务人员依赖范文,减少差错,还要求注册医生对病历进行审阅,并保留双签名。
从结构化电子病历的各个优势比较来看,电子病历的存储结构的“结构化”的需求更甚于电子病历输入方式的“结构化”的需求,所以,电子病历更应该是“可结构化”的电子病历,即电子病历在存储结构上应当是“可结构化”的。
这里的“可结构化”的含义是,在占有合理的存储空间和高效的性能的基础上能够根据医疗工作中不同情况的实际需求实现病历数据的结构化、非结构化和半结构化存储。
这就是说,当仅仅为了记录医疗经过,不需要快速查询的情况下,病历应当是非结构化的。
当需要快速检索和结构化查询的情况下,病历应当时结构化的。
要在同一病历中同时出现上述两种情况复合存在的时候,病历应当是半结构化的。
电子病历系统在实际临床环境的运用情况是,医生希望书写病历时采用自由文本录入的方式录入,能够对病历内容的进行复制、粘贴操作,同时通过病历记
录(范文)和内容片断两级模板的辅助输入,通过数据共享快捷输入,迅速检索,调用处理各种诊疗信息,减轻书写强度,提高工作效率。
结构化电子病历那种元数据输入方式在有些科室用起来可能比较顺畅,比如耳鼻喉科;因为具体的业务的关系,这些科室的结构化电子病历原型或模板比较适合结构化定义,而在有些科室,因为实际业务的关系会存在不好进行结构化定义和结构化输入不方便这两个问题,所以,他们更倾向于采用非结构病历。
正因为如此,电子病历系统必须考虑结构化和非结构化模式并存,而且应该考虑所有病历文件应该都是“可结构化”的。
从技术的角度来看,电子病历文本的“结构化”的实现过程就是将非结构化的自由文本按结构化的要求进行结构化分析出语义结构并转换成结构化需要的关系型模型结构的过程。
图示如下:
这里的结构化处理,就将运用下面将要介绍的中文分词技术。
第二章 中文分词技术
2.1 中文分词技术概述
什么是分词?分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
在英文为代表的印欧语系中,句子是以词为单位,词与词之间是通过空格隔开,而以中文为代表的汉藏语系中,句子由字构成,句子中所有的字连起来才能够表达一个完整的意思。
例如:英文中典型的主系表的句子,“I ’m a student ”,翻译成中文为“我是一个学生”,在英文中通过句子中的空格可以很容易的区分student 是一个单词,意思是学生,在中文中“学”,“生”假如分
开来,就无法理解正确的意思,必须将它们合在一起才能表示出准确的意思。
在上面的例子中可以看出,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段可以通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,但是在词这一层上,中文比之英文要复杂的多、困难的多。
所以在印欧语系中将句子中的单词重新组合成词序列,基本上不存在任何问题,但是将中文的句子中的汉字序列切分成有意义的词就相当困难了。
比如:“南京市长江大桥欢迎你“,可以划分成”南京市/长江/大桥/欢迎/你”,也可以划分成“南京/市长/江大桥/欢迎/你”,所以如果是在一定的语境下,人是可以很容易的得到确切的意思的,但是,如果交给计算机来做,是相当的困难的。
所谓的中文分词,就是把中文的汉字序列切分成有意义的词的序列的过程。
中文分词主要应用于信息检索、人机交互、信息提取、文本挖掘、中外文对译、中文校对、自动摘要、自动分类等很多方面。
在互联网信息量飞速增长的今天,使得搜索引擎成为人们高效获取有效信息的首要途径,目前主流的搜索引擎,比如Google,Baidu,都是基于关键字来匹配搜索结果的,评价一个搜索引擎的优劣,最直接的标准就是信息检索的效率,搜索引擎怎么才能快速检索到关键字呢?这就得依赖搜索引擎的数据存储机制-倒排索引。
这里的倒排索引类似于数据库中的索引,搜索引擎在外边扒完网站内容后,要将所有的内容中的关键字预先进行编目,形成一个结果和关键字的对应表,这
个对应表就是所谓的倒排索引,搜索引擎在建立倒排索引时,就需要用到中文分词技术,并且分词的过程发生在用户输入查询内容时和服务器建立索引时。
例如:Baidu 搜索引擎搜索用户查询词“中国民歌钢琴曲”
2.2 中文分词算法
现有的中文分词算法大体可以分为三大类:基于字符串匹配的分词方法、基于统计的分词方法、基于理解的分词方法;下面就这三大类中文分词算法分别做一个简要的描述。
2.2.1 基于字符串匹配的分词方法
这种算法是目前搜索引擎广泛采用的一种分词方法,也称之为基于词典的分词法或机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。
比如,匹配“中联信息”,在词典里面能够匹配的有:中、联、信、息、中联、信息、中联信息…。
如何选择其中最佳的匹配就需要依然定义的策略,比如,这里可以定义策略为长度最大的最佳匹配。
常用的匹配规则有:
正向最大匹配算法
正向最大匹配即方向为从左往右正向匹配,例如:“我有意见分歧”,词典中有如下词条:我、有、意见、有意、分歧,按正向最大匹配算法进行匹配,得到的结果就是“我/有意/见/分歧”,这里明显就错了,那是因为“有意”在词典中推广结果第1条普通结果
第3条普通结果
用户查询词1
2
3
4
优先被匹配出来了。
●逆向最大匹配算法
逆向最大匹配即方向为从右往左逆向匹配,上例经过逆向最大匹配算法进行匹配,得到的结果就是“我/有/意见/分歧”,这样就正确了,统计结果表明:单纯使用正向最大匹配的错误率为1/169,单纯使用反向最大匹配的错误率为1/245。
逆向匹配的切分精度略高于正向匹配。
●MMSEG算法
MMSEG算法相对上面两种算法来说比较复杂,是一种带4个歧义消解规则的正向匹配算法,因为其正确率比较高所以被普遍采用。
上述各种基于字符串匹配的算法都不是完美的,总会有出错的时候。
2.2.2基于统计的分词方法
这种分词方法的基本思想是,从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。
因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。
可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。
定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。
互现信息体现了汉字之间结合关系的紧密程度。
当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。
这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。
但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。
实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
另外一类是基于统计机器学习的方法。
首先给出大量已经分词的文本,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。
2.2.3基于理解的分词方法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。
其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。
句法分析过程如下图所示:
盛餐ATT 定中关系DE “的”字结构 MT 语态结构OBJ 宾语QUN 数量关系SBJ 主语语法分析过程
对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。
2.3 中文分词面临的问题
当前中文分词主要面临两个问题:
1. 歧义消除
2. 新词发现
其中歧义消除主要是在中文分词过程中存在两种歧义:交叉歧义和组合歧义;比如:“研究生命”,可以分成“研究生/命”和“研究/生命”,这里的两个词,“研究生”和“生命”,存在一个“生”这个交集。
这就形成了交叉歧义。
再如:“学生会组织义演活动”可以分成“学生/会/组织/义演/活动”或者“学生会/组织/义演/活动”,因为这里“学生”和“会”可以既可以组成“学生会”整个词也可以拆分成“学生”和“会”两个词独立存在。
另外,新词发现是指优先识别已知词还是未知词,比如:“内塔尼亚/胡说”和“内塔尼亚胡/说”,新词发现很多是因为姓名拆分造成的歧义。
第三章 中文分词技术在结构化病历中的应用
3.1 当前电子病历系统结构化综述
目前新版电子病历编辑器支持多层次的结构化输入方式,同时存储完全采用的XML 结构。
电子病历的内容的结构化是通过文档结构模型上关系对象分类实现的,具体的模型示意图如下:
从上图可以看出,电子病历编辑器的内容是由基本的元素对象组成,电子病历中的文本内容由自由文本和普通文本元素组成,而普通文本元素根据输入的需要而扩展成枚举、列表、树形元素。
电子病历的结构化其实就是简单的将自由文本和能够标记数据的文本元素或者元素进行区分就可以了。
这些可以标记的元素,在卫生部推荐标准《电子病历基本架构与数据标准(试行)》中被定义为数据元,并给数据元给出了5类17项数据元素属性的描述,而这些所定义的数据元在病历文档中存在的最基本形式就是文本元素,而这些文本元素在文档中的两个作用,一个是显示文本,一个存储数据。
下图是一个结构化文档原型的表现样式:
其中文档中黄色背景部分的文本被区分为一个元素,例如:“病史陈述者”是一个枚举元素,“健康状况”是一个普通文本元素,他们在文档中的表现形式都是一串文本值,他们在文档中的区别在限于元素对象的属性和所对应的输入方式。
另外,因为元素对象的属性不同,他们在文档中的存储格式也不同,不同类型的元素通过不同的XML节点名称进行区分,例如:普通文本节点名称为element,枚举元素节点名称为e_enum。
文档中的结构化输入方式主要有两种:一种是通过输入框的方式进行辅助输入,另外一种是通过接口方式进行查询赋值填充;最直接也是最直观的方式就是输入框输入方式,例如:下图为命名为“常见疾病”的枚举元素,在该元素上通过回车键调用元素输入窗口界面,输入界面会通过元素值域的定义提取出枚举值数据,用户通过选择对元素进行赋值,这时,元素在文档上就显示对应选中的枚举项目的文本值。
元素另外一个关键概念就是元素的值域,值域可以简单的理解为元素可选值的一个集合,在新版电子病历中除了普通文本元素之外,称之为复杂元素的元素都具有值域,元素的值域存在两种存储形式,一种是自描述值域,一种是外部描述值域,自描述值域目前只存在于枚举类型元素中。
这里,简单的描述一下电子病历编辑器中结构化元素(数据元)和文档内容的关系如下:
简单的说,结构化文档和非结构化文档最大的区别就是文档的内容中是否存在有结构化元素(数据元)这个可以进行赋值的最小、不可再细分的数据单元。
目前将电子病历进行结构化的最主要途径就是通过定义结构化的病历模板来实现病历内容的结构化,在《电子病历基本架构与数据标准(试行)》中,对文档模板的描述是这样的:
“临床文档基础模板是用于指导临床文档数据创建的形式和方法。
制定临床文档基础模板的目的,是用标准化的数据组和数据元,根据临床文档信息模型以及各类医疗服务活动的业务规则, 通过对数据组和数据元的基数约束以及数据元允许值约束,生成各类实际应用的结构化、标准化临床文档,以保证电子病历数据采集和交换的一致性。
一个临床文档基础模板可生成对应的一个或多个临床文档(业务活动记录),是临床文档信息模型的应用实例。
其基本构件是可重用的数据组、数据元及数据元值域。
”
这段话的主要意思是临床文档基础模板通过对元素(数据元)的约束,来生成各类实际应用的结构化、标准化临床文档。
换句话说就是要创建结构化的电子病历文档,首先要有已经结构化成元素(数据元)的集合的文档基础模板。
所以,医院要使用结构化的电子病历,所要面对的最突出的一个问题就是如何能够定义出一个好的模板,这又引申其他一些问题:怎么能够兼顾各科室的特色?模板由谁来制订?如何制订?模板是由每个医院统一设置,还是具体到每个科室、每个医生?而这些问题在标准和规范中都是没有答案的。
目前,卫生部提出了电子病历的数据标准,但是要真正实现临床文档基础模板的标准化几乎是不可能的,而且这些问题已经不在技术的范畴中了,而是关键业务问题,结构化电子病历模板的制订,目前正是电子病历系统实际实施的重点和难点。
目前,现实中很多情况是每个医生根据自由度很高的模板按自己的习惯去书写病历文档,然后根据自己的喜好和经验将写好的文档保存为范文,然后将范文当作今后书写文档的模板,这样,这种自由度太高的模板不仅没有达到结构化的目的,同时造成文档缺少规范而不好管理。
在医疗信息化飞速发展的今天,各种医疗信息都可以通过设备和仪器生成并具有各自的数据标准,唯独医生书写的病历资料是医生根据自己所学的专业知识将患者的情况用自然语言组织起来的大段文字,电子病历发展到今天,“结构化”是它一个非常显著的特点,在病历中是按照医学专业要求尽可能地将知识点提炼出来,并使用医学规范用语和诊断专业术语书写,使病历书写能够达到医学要求的规范化和标准化,电子病历虽然改变了病历的存储和书写方式,但是病历本身并没有任何变化。
应该认识到,在电子病历发展历程中,病历模板是因技术限制而不得不采用的一个过渡手段。
病历模板只是病历的部分结构化,从某种程度上它限制了医生的思维。
真正智能化的电子病历应该是能够自动从自由文本中提炼
出医学所需的知识点及其逻辑关系,提醒医生不要遗漏必须记录的内容。
因此,结合目前新版电子病历编辑器的特点,通过技术手段,自动从电子病历中的自由文本中提取可以结构化的信息,使电子病历的非结构化内容成为可结构化的内容,实现智能化的电子病历系统将是电子病历系统发展的重点,也是本文阐述的重点。
3.2中文分词技术与结构化的结合点
目前电子病历编辑器提供了下拉单选、下拉多选、平面单选、平面多选、下拉选项、文本输入、数字输入、日期输入控件,文档中的每个元素根据各自的元素类型调用不同的输入控件,实施维护人员或者医生编辑结构化电子病历模板就是将各种类型的元素进行合理的组合,形成一份能够描述患者病状且语言标准、内容丰富详实的结构化病历。
如原文本病历体格检查书写内容为“体温36.9℃,脉博72次/分,呼吸16次/分,血压收缩压120.75mmHg。
发育正常,营养稍差,病容急性,查体合作。
全身皮肤粘膜无黄染,浅表淋巴结未触及肿大。
鼻腔、外耳道无异常分泌物。
双肺听诊呼吸音清,心前区无膨窿,心率72次/分,律齐,各瓣膜听诊区未闻及病理性杂音……”,用结构化的元素(数据元)进行组合,形式如下:“体温[体温]℃,脉博[脉博]次/分,呼吸[呼吸]次/分,血压收缩压[收缩压]mmHg。
发育[发育],营养[营养],病容[病容],查体[检查合作]。
全身皮肤粘膜[皮肤],浅表淋巴结[淋巴结]。
鼻腔、外耳道[眼耳鼻]。
双肺听诊呼吸[杂音],心前区[心前区],心率[心率]次/分,[心律],各瓣膜听诊区[杂音]……”
其中“发育”、“营养”、“病容”、“检查合作”、“皮肤”、“淋巴结”、“眼耳鼻”、“肺脏”都应该是一系列医疗专业术语和标准的诊断学名词,实际输入时,根据病人病情,通过提供下拉选项框进行输入,另外“体温”、“脉搏”、“呼吸”、“血压”都应该是数值输入并且期望的输入值不能超过某种边界,比如体温应该最大程度的避免输入大于50℃和小于0℃的数值,这样的结构不但避免了表达上出现的歧义和不合理值,而且为今后的检索和病历分析奠定了数据基础。
但是,你会发现将原来的文本病历书写的内容转换为数据元的合理组合本身就是一件很复杂和很困难的事,首先你要分析文本中哪些专业术语是可以抽取成值域,然后就是在要保证语义之间的连贯通顺。
如果我们能够建立起这样的模板,。