IBM Watson的基本原理和大数据分析之(二)查询面板、OpenNLP、UIMA
本单元包含两个部分,第一部分是概念IBM Watson系统是如何理解一个问题的,第二个部分是概念IBM Watson系统将如何分析数据以找到答案。有两种主要的技术可以完成这些工作。 OpenNLP,Cyc的一个开源版本,它使得问题能够被理解,这是通过使用人工智能来分析问题语法、按一些规则处理问题、最后 理解问题。一旦问题被理解了,那么它会调用另一个程序来找到答案或一些答案。为得到每个被给出的答案,它必须利用所有可用的数据来进行研究。这里就是要引入UIMA构架的地方。UIMA或者说非结构化信息管理构架允许读取非结构化数据。
在本单元中,我们将会调查和理解概念IBM Watson如何能理解问题,以及它如何来找到答案。完成本单元后,我们应该了解概念IBM Watson如何理解问题和它如何分析文档来获得答案。 在这个项目中,查询面板将代替IBM Watson的聆听问题以及给出口头回答的功能。但是问题如何被理解、如何被处理以及如何被回答的概念仍然保持在同一个概念层上。在询问项中,一个问题会被输入,这个问题会被分析,并且当它被理解后,其答案就会被调查,所有发现会被拼合在一起,被重新分析,然后最佳答案会被发送回查询面板。
1、Cyc的开源版本OpenNLP是一个人工智能项目,这个项目试图组装出一个知识的层次结构,代表性的例如已知的知识以及日常通用语言。OpenNLP会在问题输入后被使用。搞清楚了问题是如何组成模式的、用了哪些词以及它们是怎么被使用的、某个特定词的前后用了哪些词等方面,问题也就被理解了。用来分析词语的参数越多,它们的组合模式被用的越多,问题就会被理解的更正确。 既然我们只需要了解IBM Watson如何利用人工智能应用来理解问题的一些概念,我们将只限于讨论简单问题,也就是不需要通过复杂OpenNLP环境来处理的问题。
在本练习中,你将学习: 安装OpenNLP; 配置OpenNLP; 创建查询面板。
2、接下来让我们讨论UIMA或者说非结构化信息管理构架。它是IBM Watson在分析难以计数的非结构化数据时的心脏和灵魂。在上个世纪,只有具有查询时能被提取的形式的数据才能够被消化处理。数据必须以结构化的形式被存放,这样在需要分析数据时,被标准化的工具在查询结构化数据时就能得到需要的数据。 到了21世纪,等待被消耗的数据开始增长,并且其形式逐渐从传统的结构化数据变为半结构化和非结构化数据。传统的查询工具开始变得局限。截至今天,在全部可用数据中,只有大约20%是结构化的,并且许多具有结构化信息形式的有价值信息没有被利用。 UIMA解决了这一问题,它具有查询非结构化数据来得到需要的信息的能力。它可以查询非结构化数据,将非结构化数据转换为结构化数据,并且它可以对静态和动态数据做实时分析。IBM Watson使用UIMA来进行实时内容分析。 UIMA取出了“U”或者说非结构化数据,不管是从自由形式的文档、网络文本、还是音频视频中的数据,并且对它们进行了“M”或者说管理,这是通过安装正确的顺序取出信息、存储它们、进一步分析它们以及精确的获得你所需的信息。 UIMA软件开发套件作为可用的开源工具,它可以被用于分析非结构化数据的应用中。IBM开发了这个应用,并将其捐助给了Apache开源组织,来作为一个开源工具。这样它能被免费的下载,并且它的环境可以与其它开源软件的使用许可相一致。 这是典型的UIMA开发周期。
在本课程包含的一系列练习中,你将经历整个开发周期。 让我们首先来到配置UIMA环境的练习。 在这个练习中,你将会了解哪些是在Eclipse中创建一个UIMA开发环境所需要的组件。安装这些必需的组件。配置UIMA SDK。 在这个练习中,你将: 了解如何创建UIMA组件; 测试这些组件; 创建用于分析的应用。
这个练习分为5个单元: 1)创建类型描述; 2)创建注释器; 3)创建分析引擎; 4)测试分析引擎; 5)创建应用。
3、既然你已经完成了你的分析工作,是时候把你收集的数据表达为结构化数据的形式了。CAS处理控件会获取你CAS中的信息,并将它们变为一个数据库、一个结构化的平面文件或者是一个XML文档。可以有其它的方式来完成这项工作,但重要的是,你的非结构化数据在此时要成为结构化的形式。 CAS处理控件会读取所有你采集自CAS(通用分析结构)的信息。 CAS是从非结构化数据中读取到的结果。处理控件将会把这些信息写入你的结构化数据资源库,这样传统的工具就能被用来读取它们。 在这个练习中你将学习: 如何编写一个CAS处理控件,来读取你的CAS采集信息并将它们写出到一个结构化数据的形式。 大致从整体上来说,你需要下载如下一些组件: Java SDK; UIMA SDK; Eclipse。 然后在Eclipse中安装UIMA开发环境。然后你需要创建一些必要的组件, 例如类型描述、 注释器、 分析引擎。 测试分析引擎。 然后创建应用。
完成了本单元后,你应该能够: 了解OpenNLP这个人工智能,它是概念IBM Watson用来理解一个问题的; 了解UIMA以及它是如何从非结构化文档中获得数据的;了解如何编写一个能理解问题和给出答案的查询面板。