Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101959979
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-12 09:56:37

  来源:IBM developerWorks 中国网站    作者:知识管理技术主管

在本文中作为示例使用的文档是来自 Internet Movie Database(IMDB)的演员和其他人员的传记信息(参见 参考资料)。为了进行说明,我使用 IMDB 内容的子集构建了一个 DB2 结构化数据库,将这些传记信息作为文本字段保存在数据库中。

  用 UIMA 进行文本分析

  UIMA 组件从源数据中的非结构化数据字段中提取出结构化的数据。不同的组件从源数据库中读取文档、分析文档来寻找提到的人名以及将结果保存到一个新数据库(Extracted Information Database,EIDB)中。

  文档是由 SQLReader 从源数据库中读取的,这个组件实现了 UIMA 的 CollectionReader 接口,是使用 SDK 开发的。当 UIMA 框架调用 SQLReader 的初始化方法时,它使用 JDBC™ 连接到数据库并发出一个 SQL SELECT 语句,这个语句在 SQLReader 存储的 ResultSet 对象中返回需要的数据,比如文本字符串。然后,这个框架使用 CollectionReader 接口的迭代器类方法(比如 getNext())实际地获取每个文档的文本和元数据。这些数据在一个 UIMA 定义的数据对象中返回给框架,这个对象称为 Common Analysis Structure(CAS)。实际上,因为正在分析文本文档,所以这个数据对象是文本 CAS(TCAS),但是为了简单,本文忽略这一区别,只讨论 CAS。当框架调用 getNext 时,它提供一个空的 CAS。SQLReader 用来自 ResultSet 中当前行的数据填充 CAS。所需代码的结构见 清单 1。它显示了如何将来自输入表的 TRIVIA 列的文档文本和一些元数据(比如文档的 URI)放进 CAS 中。SQLReader 还必须实现 hasNext() 方法(这里未显示)以便完成迭代器接口。

  清单 1. 在 SQLReader 的 getNext 方法中对 CAS 进行初始化。为了简单,省略了错误检查。
Connection conn;ResultSet rs;// Not shown: code to set up the Connection and to // populate the ResultSet from the input databasepublic void getNext( CAS cas) {// Not shown: code to check that the ResultSet
contains more data// Get the document text and put it into the CASString content = resultSet.getString( "TRIVIA");

//get document textJCas jcas = cas.getJCas();jcas.setDocumentText( content);
// set document text// Construct a URI for this documentString id = rs.getString( idColName);
// get primary keyString url = conn.getMetaData().getURL();
// database URLString uri = url + "/" + tableName + "/"
+ idColName + "#" + id;// set URI into a SourceDocumentInfoSourceDocumentInfo docInfo
= new SourceDocumentInfo( jcas);docInfo.setURI( uri);
// set uri feature valuedocInfo.addToIndexes();// Advance to next row in the ResultSetnextRow();}

阅读(635) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~