关于UIMA的个人理解

来源:互联网 发布:java开发面试问题 编辑:程序博客网 时间:2024/04/27 23:05

       UIMA(Unstructured Information Management Architecture),即非结构化信息管理架构。顾名思义,UIMA是用来处理非结构化信息、把非结构化信息转换为结构化信息的一种框架,或者说一种标准规范,是前者向后者转换的桥梁。该项目的提出很好地解决了如何有效利用日益增长的非结构化信息(如文本、音频、视频等)的问题。

       UIMA主要包括分析引擎AE ( Analysis Engine )、标注器Annotator和通用分析结构CAS(Common Analysis Structure)。其中,分析引擎AE是UIMA的核心模块,是一组可插入、编辑和扩展的对象,它结合自然语言处理、自动推理等技术对输入文献加以分析处理并得到输出结果。但分析引擎AE的功能却是通过标注器Annotator来实现的。标注器Annotator是AE定制的组件类型,其作用是运用分析算法分析信息,得到输出结果。两者之间的关系是:分析引擎AE用来封装标注器Annotator,一个AE可以包含一个或多个Annotator,甚至也可以封装多个其他的AE,彼此构成递归的关系,这样就可以由简单的组件构成复杂的组件以完成复杂的功能。通用分析结构CAS是用来分析和共享标注器的分析结果,它是基于对象的数据结构,用于从文献中抽取具体对象,在逻辑上与文献建立关系。

       对于UIMA及其组件间关系更加形象的描述可以这么认为:把UIMA看做一家工厂,它规定了很多生产标准,里面有一条或多条流水生产线,即分析引擎AE,流水线上的一道道工序就是标注器Annotator。这家工厂生产的原材料,即输入是非结构化信息,而产品,即输出则是结构化信息。首先,作为一个框架,UIMA提供了一条比较基础的生产线,即对非结构化信息进行基本的处理操作。对于开发者而言,为了实现自己特定的目的,开发者需要在该生产线或其他已存在的生产线上添加自己需要的工序,即开发特定的标注器Annotator,然后把该标注器添加到某一生产线上。生产出来的产品放到集装箱里,这些集装箱就是通用分析结构CAS,由于集装箱的规格统一规范,容易管理,就类似于结构化的信息一样。这样就实现了把非结构化信息转换为结构化信息。

       UIMA的优势体现在:你可以根据自己的需要对生产线上的工序进行添加或删除(当然,这涉及到标注器的开发等),开发者需要关注的仅仅是如何按照流水线的要求(UIMA规范)实现某一个工序,而不必关心流水线上各个工序之间是如何传输组织的,而且由于UIMA的规范标准,生产出来的产品规格也基本上是统一的,都是集装箱式的,因此开发者也不必担心处理之后的输出格式问题,这样就大大减轻了开发者的负担,使得处理非结构化信息变得容易很多。换句话说,通过UIMA来进行开发,就像搭积木一样,我们只要开发出符合自己特定目的的积木块(标注器Annotator),然后把它插在某个已经搭好却不完善的积木(分析引擎AE)上,我们的目的就实现了。

        由于UIMA在处理分析非结构化信息方面无可比拟的优势,其在应用方面已取得了不小的进步,如知识发现,内容搜索,企业信息管理,数据挖掘等。

        但个人感觉UIMA的作用是有限的,其主要功能是简化开发过程,节约人力物力,但对于核心技术---标注器Annotator的开发,仍需要我们对自然语言处理、信息检索、机器学习、本体理论、自动推理等技术的不断研究。

注:本文中的一些描述是根据前几天查阅资料后的个人理解所写,有些地方可能描述地不是很准确,望大家能够批评指正!