APP下载

基于Lucene搜索引擎的非结构化电子病历检索系统

2012-09-20韩晟陈衍彭红波张铭葛煦

中国医疗设备 2012年11期
关键词:全文检索分词搜索引擎

韩晟,陈衍,彭红波,张铭,葛煦

1.第四军医大学口腔医院 a.信息科;b.医教部,陕西 西安 710032;2.第四军医大学西京医院 肿瘤科,陕西 西安 710032

随着医院信息系统(HIS)的发展,电子病历的使用越来越普遍。从20世纪90年代开始,我国很多医院使用电子病历替代了纸质病历。早期的电子病历由于开发时间较早,没有实现结构化。但是,经过多年的使用,非结构化电子病历已经积攒了大量宝贵的临床资料。如何从这些非结构化电子病历中提取信息已经变得越来越迫切,并逐渐成为医院信息化工作的一个重要部分。为此,本文提出了利用Lucene搜索引擎工具对非结构化文档进行检索的设计方案。

1 非结构化电子病历的检索缺陷

非结构化电子病历不具备全文检索功能。其主要功能始终停留在纸质病历电子化程度上,仅具有记录、存储和调阅功能。对这样的病历系统,统计检索工作主要围绕病案首页展开,即把患者的基本信息,如入院诊断、出院诊断、治疗结果等主要医疗信息填写在数据库中,利用数据库的统计和检索功能进行相应的开发。当需要查询的信息如果不在病案首页涵盖的范围内,则必须由人工打开病历逐一查找统计。为使非结构化电子病历能方便地在“军卫一号”系统中实现全文检索功能,我们开发了基于Lucene搜索引擎的非结构化电子病历检索系统。

2 Lucene搜索引擎概述

搜索引擎从诞生到现在不到20年时间,经过了一个短暂的雏形阶段,就发展成熟了两代产品。包括以人工目录搜索为特点的第一代搜索引擎和以超链分析为基础、机器自动处理的第二代搜索引擎。搜索引擎按照工作方式主要分为3类:基于爬虫的自动搜索引擎、目录索引搜索引擎和元搜索引擎。基于爬虫的自动搜索引擎是目前真正意义上的搜索引擎,也是搜索引擎的主流[1-2]。目前,使用最多的Google、百度是其典型代表。不同的搜索引擎收录的数据范围不同,有的覆盖全网信息、有的针对某一个领域专门处理。从搜索引擎信息覆盖的领域和范围来看,可以分为通用搜索引擎和垂直搜索引擎两类。互联网上的信息除了文字信息还有各种媒体内容,针对不同类型的信息,需要使用不同的搜索技术实现,如文字搜索引擎、音乐搜索引擎、视频搜索引擎和图像搜索引擎等[3]。

搜索引擎技术是互联网资源导航和访问的重要手段,但是对于一般开发者而言,搜索引擎的底层开发技术过于复杂,加上各大搜索引擎厂商对核心技术严格保密,使搜索引擎开发有很高的门槛。搜索引擎在普通应用系统中的普及,开源项目的推动作用功不可没。进行全文检索系统研发或者搜索引擎研发的开发者都用过或借鉴过开源搜索引擎的代码或设计思路开源搜索引擎项目。主要的开源搜索引擎系统有Lucene全文检索系统、Nutch系统、Compass和Labin系统。其中Lucene是一套全文检索工具包,是一个开源代码系统,是Apache软件基金会的一个子项目,提供了一个全文检索引擎的构架,完整的查询引擎和索引引擎[4-5]。Lucene本身并不是一个完整的全文检索引擎,但他的设计目的是为软件开发人员提供一个开发工具包,以方便普通开发者在系统中实现全文检索的功能。利用Lucene经过简单设置就可以建立自己内部网的搜索引擎,也可以针对互联网建立搜索引擎,还可以与数据库结合建立索引。经过多年的发展,Lucene在全文检索领域已经有了很多的成功案例,几乎适合于任何需要全文检索的应用,尤其是跨平台的应用。另外,Lucene不但是一个高性能的全文检索引擎,而且免费、开源。

3 病历全文搜索引擎系统的设计与实现

3.1 总体构架(图1)

图1 病历全文搜索引擎系统整体构架

3.1.1 搭建搜索引擎的网站平台

Web 服务器是在网络中为实现信息发布、资料查询、数据处理等诸多应用搭建的基本平台;Tomcat Server严格执行Servlet 和JSP 规范,是一个十分有用的网络应用开发服务平台。本项目是在Windows2003 Server系统中按照配置的Tomcat Server作为搜索引擎与用户进行交互的。

3.1.2 索引模块

本项目的文本索引只有Word结构的电子病历,文本种类比较单一,所以在使用时仅调用Lucene的Word文本分析API即可。

3.1.3 检索模块

检索模块的主要功能是根据用户输入的关键词在索引器形成的倒排表中进行检索,同时完成页面与检索之间的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。

3.2 实现与应用

利用Lucene的内在模块,能够简单快速地搭建起全文搜索平台,只需在程序中指定病历文件的存储位置并进行简单的编程即可,此处不再赘述。

建立非结构化电子病历“搜索平台”后,本院研究人员对非结构化电子病历进行了检索测试。从1万余名住院患者中搜寻口腔癌患者,并找到每个人不在病案首页中记录的属性,如吸烟、分期、城乡等。在使用搜索平台之前,类似此项的工作,如果1个人需要整理将近2个月的时间才能完成,而且出错的比例很大,还要花费大量时间反复查找和修正。在使用搜索平台工作后,此项工作变得非常轻松,搜索一个关键词后,还能在结果中继续搜索,从检索出的关键词前后语义就能基本判断该记录是否有效,从而层层筛选,轻松完成纳入和排出工作,极大地提高了临床研究的工作效率。

4 讨论

4.1 分词问题

Lucene中可以调用各种成熟的分词算法和软件包,用于解决索引建立过程的分词问题。由于中文文档十分复杂,计算机处理有很大的难度,虽然很多专家做了大量的工作,目前仍没用完全解决中文分词的问题。最突出的有两个问题:

(1) 切分歧义识别。中文的切分歧义是指中文的一句话按照指定的算法可能有两种或多种切分方法。这种情况如果没有上下文和语境背景,即便是人工也无法判断如何切分[6-8]。在本项目使用的分词器中,就发现有类似的情况出现,如分别用“异常”、“异常肿大”在病历文档中搜索,结果见图2~3。图2显示,搜索引擎把所有含有“异常”的文档全部显示出来,包括“未见异常”、“无异常”等。但是在图3用“异常分泌”检索中却没有搜索到任何文件。从显示的红色字体看出搜索引擎所用的分词器没有把“异常分泌”作为一个分词,所以没有对该词建立索引。

(2)未收录词识别。新词的出现,在短时间内无法收录到字典中,如经常遇到的是人名、特定的产品型号、特定事物名称等。特别在医学领域中,新的诊断方式、新药品等新技术手段层出不穷,这个问题会更加突出。

上述问题主要由中文分词器引起,目前本项目使用的是自动分词技术,基于自动切分的最大优点是没有词表维护成本、实现简单;缺点是索引效率低,但对于中小型应用来说,基于2元语法的切分还是够用的。目前比较大的搜索引擎的语言分析算法一般是基于以上两个机制的结合[9]。

解决该问题的方法是在自动分词的基础上加入词库分词,这样就能逐渐积累常用医学词汇,满足实际需要。

图2 用“异常”作为关键词检索结果

图3 用“异常分泌”作为关键词在病历文档库检索结果

4.2 “虚拟机”技术

Lucene基于JAVA技术开发,构架该搜索引擎需要搭建包括Web服务器在内的一整套系统。虽然技术并不复杂,但是仍旧增加了推广应用的复杂程度。本系统利用了“虚拟机”技术,不但节省了使用单位的硬件资源,而且能够以一个“虚拟机”系统包的形式进行分发。这样用户同样可以利用虚拟机技术对该系统包进行还原,直接还原整套系统,仅需根据实际网络环境修改虚拟服务器IP地址即可。

综上所述,该系统利用已有的成熟技术解决了各医院长年积累的非结构化电子病历无法检索的问题[10]。该系统的建立,最大的意义在于为非结构化电子病历的检索难题提供了一个新思路。利用Lucene技术开发目前的检索系统并不复杂,但是,如果要完全满足临床及科研的全部要求,该系统还略显稚嫩,还需要利用JAVA技术开发包括统计、报表等一系列功能。所以,该系统还有很大的发展空间。

[1]车东.在应用中加入全文检索功能-基于Java的全文索引引擎Lucene简介[EB /OL].(2006-03-10)[2012-04-27].http://www.chedong.com/tech/lucene.html.

[2]李玮,李利.Web搜索引擎与全文检索技术[J].情报科学,2003,24(5):265-268.

[3]Owens SJ.Lucene tutorial[EB/OL].(2000-09)[2012-04-27].Http://www.lucenetutorial.com.

[4]Goetz B.The Lucene search engine:powerful,flexible and free[EB/OL].(2000-09-15)[2012-04-27].Http://www.javaworld.com/jw-09-2000/jw-0915-lucene.html.

[5]高琰,古士文,谭立球等.基于Lucene的搜索引擎设计与实现[J].微机发展,2004,14(10):27-30.

[6]孙西全,马瑞芳,李燕灵.基于Lucene的信息检索的研究与应用[J].情报理论与实践,2006,29(1):125-128.

[7]王学松.Lucene+nutch搜索引擎开发[M].河北:人民邮电出版社,2008:185-186.

[8]夏立新,王忠义.基于XML的全文检索原型系统的设计与实现[J].现代图书情报技术,2007,(8):67-70.

[9]申兵一,巩青歌.基于Lucene的PDF文档文本解析的实现[J].信息与电脑,2009,(11):66.

[10]范开洲,杨鹏飞.基于ASP技术的通用电子病历的研究[J].中国医疗设备,2008,23(3):30-32.

猜你喜欢

全文检索分词搜索引擎
分词在英语教学中的妙用
世界表情符号日
结巴分词在词云中的应用
结巴分词在词云中的应用
Oracle数据库全文检索性能研究
网络搜索引擎亟待规范
全文检索引擎Lucene系统模型与应用研究
全文检索引擎技术在电子病历中的应用
基于Lucene搜索引擎的研究
搜索引擎,不止有百度与谷歌