维度模型通常基于数据真实性、颗粒、维度和事实或度量等参数。但是,在有些业务场景中,围绕着数据模型中的颗粒或在不同层次结构级别上存储着宝贵的非结构化信息。
IBM Watson Explorer 利用自然语言处理 (NLP) 的语言学算法,不仅可以理解问题中的关键词,还可以理解其中的所有词汇。事实上,它可以分析语法、上下文、术语、习语,甚至还有思维方式。然后,它可以进行统计推理,在给定置信度级别内提出相应的建议或意见。
本教程介绍如何在内容分析的上下文中使用 IBM Watson Explorer 来分析分层数据结构,同时保留底层数据模型的层次结构或粒度。这种策略支持同步灵活分析非结构化内容和结构化维度两个方面。我会分步演示如何利用 IBM Watson Explorer 和 IBM Watson Content Analytics Miner 克服多重性问题,同时执行内容分析。
在本教程的准备工作中,我使用了下列软件组件:
IBM Watson Explorer Content Analytics V11.0.2
IBM Content Analytics Studio V11
Eclipse Java EE IDE for Web Developers
IBM dashDB
JDBC Driver for DB2
Windows Server 2012 R2
问题描述
我使用事件管理系统这个简单示例编写了本教程。尽管这是个非常简单的示例,但它可以从事件管理或其他系统(如质量管理,案例管理,工作流程管理或内容管理)轻松扩展到更复杂的用例场景。
图 1 到图 3 显示了示例的实体关系图、事实表以及层次表示方式。思考在图 1 中显示的事件报告所使用的数据结构。
图 1. 实体关系图:事件管理系统
点击查看大图
这里举例说明的系统是一个“运营源系统”示例。(有关“运营源系统”的更多信息,请参阅数据仓库工具包。)该系统由一个事务标头行构成,该标头行与多个事务行关联。使用标头/行模式(也称为父子模式),所有标头级别的维度外键和“退化维度”都应包含在行级别的事实表中,每个级别呈现不同的粒度。对于本教程,我在图 2 中使用了 INCIDENT_CODE、INCIDENT_LINE_ITEM、INVESTIGATION_CODE、RESOLUTION_CODE 以及 CLOSURE_CODE 来创建事实表,这是通过图 1 中显示的数据模型生成的。我在事实表中添加了几行示例数据,用来构建和演示解决方案。
图 2. 事实表结构和示例数据
点击查看大图
由于派生的事实表是非规范化的结构,所以很显然:只有叶级别是唯一的。
正如图 3 中所示,对称的分层数据结构有 5 个级别,每个级别有 3 个子级别,针对根级别共生成 81 行。字段的每个非结构化/结构化内容将从 1 级到 5 级、从 3 个到 81 个重复增加。(备注: 图 3 显示了分层结构表示方式的片段。有关更多详细信息,请参阅 GitHub 中的样本数据文件。)
图 3. 示例数据的分层视图
点击查看大图
由 IBM Watson Explorer 抓取的所有内容都被视为一个文档或单个实体(也就是说,数据库表的每一行都被视为一个单独的文档)。该文档是其内部的唯一可用颗粒。遗憾的是,利用 IBM Watson 进行分析时,这些非结构化内容多次出现,会产生误导性的统计数据。例如,针对一个 INVESTIGATION_CODE 字段,第 2 级的 INCIDENT_DESCRIPTION 字段中的给定文本(如图 1 到图 3 中所示)被统计了九次。
本教程为您提供克服这种多重性问题的策略。我会演示如何创建自定义的数据库搜寻器插件,以特定方式抓取派生的事实表,从而涵盖层次结构所有级别的维度,但消除了多重性。
构建您的应用程序所需的准备工作
要构建自己的应用程序,您将需要具备下列技能和工具:
IBM Watson Explorer (Advanced Edition) 的应用知识
Content Analytics Studio 的应用知识以及对 Apache UMIA 内容分析概念的理解
IBM Watson Explorer Content Analytics V11.0.2
IBM Watson Explorer Content Analytics Studio V11
IBM Cloud 帐户(可选)
IBM dashDB(或者任何标准 DBMS)
理解 DBMS 概念
Java 开发技能
1、设置内容分析集合
要创建内容分析集合,请执行以下操作:
记录以下设置和选项以供集合使用。
选项名称
选项值
General options
Collection name
ATutorialCollection
Collection type
Content analytics collection
Solution package
Do not apply a solution package
Document cache
Enable the document cache
Thumbnail generation(在搜索结果中显示缩略图时需要)
Do not enable thumbnail generation
Advanced options
Description
Collection for demonstrating the concept of Contextual Content Analytics of Hierarchical Data - 02/04/2018
Collection security
Do not enable security for the collection
Overlay index
Do not enable overlay index
N-gram segmentation
Do not enable N-gram segmentation
备注:有关更多信息,请参阅 IBM Knowledge Center 中的“Administering Watson Explorer Content Analytics”。
创建事实表。
图 2 中所示的样本事实表是在 IBM dashDB 中创建的,其中包含样本数据。 图 4 显示了 dashDB 控制台中的样本数据。创建表的详细步骤不在本教程讨论的范围之内。但是,您可以使用任何标准的关系数据库。
图 4. dashDB 中的样本数据
点击查看大图
创建 JDBC 搜寻器。
遵照 JDBC 搜寻器的标准创建过程进行操作,如 IBM Knowledge Center 中的“Crawler administration”所述。
下表列出了 JDBC 连接的详细信息以供参考。
参数
值
JDBC driver name
com.ibm.db2.jcc.DB2Driver
JDBC driver class path
F:\DevWTutorial\jars
Database URL
jdbc:db2://awh-yp-small02.services.dal.bluemix.net:50000/BLUDB
用于连接 dashDB 的 JDBC 驱动程序和 DB2 一样,可以从 IBM Support 站点下载。
填充索引字段和构面映射。
在创建搜寻器时,会根据下表填充索引字段映射和构面树。索引字段名称非常重要,因为这些字段会在自定义的搜寻器插件中使用,以便在自定义抓取流程中删除重复数据。
图 5 显示了 IBM Watson Explorer Content Analytics Miner 中呈现的构面树层次结构。创建构面树之后,会抓取该表,初始采用以上配置。
图 5. 构面树结构
点击查看大图
创建缺陷字典,并将其部署到内容分析服务器中。
下表列出了缺陷字典的关键字及其词类和词形变化。
使用关键字生成缺陷字典,用于分析事实表中的指示性文本内容。要了解更详细的信息,请参阅 GitHub 中的样本数据文件。
图 6 显示了该字典在 IBM Watson Content Analytics Studio 中的组织方式。有关更多信息,请参阅 IBM Knowledge Center 中的“Content Analytics Studio for advance text analytics”。
图 6. Content Analytics Studio 中的缺陷字典
点击查看大图
创建缺陷字典之后,会将配置的 UIMA 管道导出到内容分析服务器中。
(创建该字典和导出 UIMA 管道的详细步骤不在本教程讨论的范围之内。此部分仅供参考,以便保持本教程的连贯性。)