一、背景介绍
最近接到一个任务,需要对医院患者的门诊病历和住院患者的病程记录进行分析,根据其症状对其归类,比如同时出现发热和咳嗽的归类为发热伴呼吸道症候群,同时出现发热和咳血的归为发热伴出血症候群。比较麻烦的是,发热的表述不止一种,比如高烧、高热,体温高,热峰38.5度,都算发热,血痰血便也都算出血。如果出现发热2天这种表述的,需要根据就诊时间往前推两天作为其发病时间。而且如果熟悉病程记录的话,会知道病程记录经常会出现否定表述。

如果是“无发热、咳嗽,否认大便异常”这种表述,那患者就即不发热,也不咳嗽,同时大便也是正常的。
基于以上限制,考虑使用Apache UIMA Ruta进行处理。
二、Apache UIMA Ruta简介
Apache UIMA (Unstructured Information Management Architecture),从英文能看出来,它是一个用于分析非结构化内容(比如文本、视频和音频)的组件架构和软件框架实现,用于对非结构化数据进行分析处理用的。而Ruta(Rule-based Text Annotation) 则是UIMA下面一个专门用于文本处理的组件,它是基于规则脚本的,可以很方便地用它 来抽取文本信息中的信息
三、Ruta使用安装Workbench
Ruta提供了一个基于Eclipse的Workbench,使得我们能够很方便的在其中编写调试自己的脚本,查看规则的运行结果
安装步骤如下:
此步骤基于Eclipse 版本Version: 2023-09 (4.29.0),有些版本按照此流程会卡在某些步骤或者出现安装失败的问题,可尝试更换此版本
此步骤基于Eclipse 版本Version: 2023-09 (4.29.0),有些版本按照此流程会卡在某些步骤或者出现安装失败的问题,可尝试更换此版本
此步骤基于Eclipse 版本Version: 2023-09 (4.29.0),有些版本按照此流程会卡在某些步骤或者出现安装失败的问题,可尝试更换此版本
打开Eclipse之后,点击“Help → Install New Software”会出现一个弹窗

在Work with一栏中填入:“http://www.apache.org/dist/uima/eclipse-update-site/”,点击Add
在弹窗中给他添加一个名字:UIMA Ruta

继续点击Add,稍等一会儿会弹出三个组件:

我这里是已经安装过了,在三个组件前打上勾,往后一路Next就可以了,遇到弹窗可能需要勾选同意,点同意就可以了,知道勾选完成,我用的Eclipse 版本Version: 2023-09 (4.29.0),一路安装下来,还是很顺利的。
四、Workbench使用
1、新建项目
workbench安装完成之后,在平时新建项目的地方右键,会弹出来Uima Ruta Project

没有的话,点Other

在弹出来的窗口找到UIMA Rutra Project,点Next,输入项目名称我这里以Test1234为例

项目就新建好了
2、项目目录介绍
1)script
这里是存放规则脚本的地方
2)descriptoer
这里是一些存放描述文件的地方,里面的文件很多都会自动生成
3)resources
顾名思义,这里是放置处理器运行时所需的资源文件的地方
4)input
要处理的文本文件放置在这里
5)output
Ruta处理完的数据会放在这里
6)test
可以先不管
3、文本处理示例
我们先在Input中放入一个文本文件,其中的内容就是开头我们展示的病历内容

然后在script包上右键,选择UIMA Ruta Package(这一步虽然不是必须的,但就跟我们不会把java直接放入src目录下一样,这里的规则脚本其实就是我们要运行的代码,我们也用包管理起来),给包起个名字com.test


然后在test包上右键,选择UIMA Ruta File,给赋予个名字,比如就叫Main

点击Finish之后,Script.com.test包下新建了一个.ruta结尾的文件的同时,在descriptor文件夹下,会自动创建一个同名的包,并自动生成两个文件。笔者写这篇文章时候测试了下,如果前一步不建包的话,这一步的两个文件 是不会同步生成的。
注意到这时候,我们的脚本文件里面还只是空的,什么都没有,只有一行“PACKAGE com.test;”定义了这个脚本所在的包,但是!我们依然在Main.ruta这个文件上右键->Run as->UIMA Ruta

Eclipse的绿色进度条跑完之后,之前为空的output文件夹下,生成了一个文件

双击这个.xmi文件,可以看到如下的界面

编辑器的右面会多出来一个窗口,勾选NUM

会发现所有的数字,都被标注了出来,恭喜你,你已经能在WorkBenchh中运行脚本了

579

被折叠的 条评论
为什么被折叠?



