转载

构建高级认知应用程序,第 1 部分: 集成 Watson Virtual Agent、Conversation 服务、Retrieve and R...

系列内容:

此内容是该系列 6 部分中的第 # 部分: 构建高级认知应用程序,第 1 部分

http://www.ibm.com/developerworks/library/?series_title_by=build+advanced+cognitive+applications

敬请期待该系列的后续内容。

此内容是该系列的一部分: 构建高级认知应用程序,第 1 部分

敬请期待该系列的后续内容。

第 1 部分介绍的是,结合多个 IBM Watson Developer Cloud 服务 API 来创建您自己的认知计算应用程序。在本教程中,我将讨论:

  • 通过 Watson Virtual Agent 为您的应用程序提供一个认知型用户界面
  • 在您的应用程序中集成多个认知服务
  • 通过 Watson Conversation 服务创建一个用户体验流
  • 增强您的应用程序的行为与机器学习的关联
  • 优化对大量非结构化内容的获取
  • 将高级内容分析功能集成到您的应用程序中
  • 通过 Watson Knowledge Studio 调整 Watson,以适合您的特殊需求

这是一篇高级教程,需要您拥有 IBM Bluemix® 的基础知识。如果您需要介绍性的 Bluemix 信息,在继续之前请阅读这篇快速入门 文章。

构建您的应用程序所需的准备工作

  • 一个 Bluemix 帐户和一个 Watson Virtual Agent。(您可以申请免费试用 Bluemix 和Watson Virtual Agent。)
  • 要上传的少量比较 ‘有趣的’ 文本文档。Watson 通过此信息了解您的应用场景的具体主题范围是什么。

一种集成 Watson 认知计算服务的设计模式

本系列教程着重介绍一种集成多个 Watson Cloud 服务 API 的设计模式,以解决我在许多组织中看到的最常遇到的需求。基本场景是,用户需要帮助处理大量非结构化数据。我们需要以直观的方式呈现提供高度针对性的信息,让用户能够立即将其用于自己的具体需求。

知道过去,才能展望未来。简单的搜索索引是基于关键词而构建的,它无法可靠地指出实际的信息重点,所以常用的搜索索引生成很长的可能位置列表用于查找想要的信息。文档检索系统让问题更加复杂化,它们提供了从关键词搜索索引获得的全部粗略结果,让您在大量不相关信息中进行筛选,以查找需要的信息。

上一代传统解决方案无法满足对快速获取相关信息的渴望,因为它们根本无法 确定用户的意图采用用户理解信息的方式来处理信息 。认识到这两个关键点后,您很快就会发现这项新技术的哪些特性将最有利于您的具体情况。解决上一代技术的这两个根本缺陷,正是“开发认知计算”计划的推动力。

认知计算在概念含义(而不是关键词)级别上操作,并在用户角度的隐含上下文中理解信息。认知系统有效提供信息的方式,与用户思考其需要完成的工作的方式一致。通过在抽象概念含义级别上操作,消除了术语索引的限制,因为系统不再处理词汇,而处理所表达的有意义的概念。自然语言处理 (NLP) 与机器学习在许多层面的紧密结合,成为了定义认知技术最重要的区别特征。

通过 Watson Virtual Agent 创建用户界面

IBM Watson Virtual Agent 是本教程讨论的设计模式中最高级的服务 API,它基于 Watson Conversation 服务而实现与虚拟代理(也称为聊天机器人)界面的直观交互。Conversation 服务基于 Dialog 和 Natural Language Classifier 服务而构建,还有一些方便的工具可支持认知行为的配置和训练。您可以直接访问下级服务的 API,但除了在需要特殊功能的不寻常情况下,很少需要访问它们。在大多数应用场景中,可以使用 Watson Virtual Agent 服务创建应用程序的用户界面。Watson Virtual Agent 服务为许多最常遇到的业务应用类型提供经过预先训练、随时可用的代理。要采用自定义对话进行特殊调整,可以使用 Conversation 服务中提供的工具。基于对话的接口的内在流程非常适合集成各种不同的认知服务和分析应用程序。

安全的应用程序设计实践

您应采用一种非常 独特的应用程序设计模式 来处理代理、UI、自定义对话之间的对话流,以及与后端企业记录系统集成。Watson Cloud 服务架构内的强大配置能够安全地处理敏感数据,但您必须利用这些特性才能充分获得内置安全性的优势。通过依据 文档 介绍来使用这些接口,可以避免在代码中引入漏洞;不当的快捷编程技巧会规避所提供的安全数据处理机制。例如,在变量前添加一个 & 符号,会告诉 Watson Virtual Agent 服务该变量需要特殊处理。还有其他一些重要细节需要注意,所以如果您构建自定义 UI,一定要仔细阅读文档的相关部分。文档通过一个清楚详细的示例展示了如何正确处理一次对话,该对话涉及通过 Watson Virtual Agent 对话将信用卡交易信息安全地传递到后端记录系统。浏览该示例,确保您理解它是如何实现安全交易的。

用户界面和客户端 SDK

要将代理嵌入到应用程序中,有多种选择,具体取决于您想要的自定义程度。最简单的方式是使用所提供的 通用 JavaScript 小部件 ,这对大部分应用程序已足够了。可以仅复制所提供的代码段并按原样粘贴到网页中,或者可以设置一些配置参数来修改它的外观。

如果需要自定义程度更高的用户界面来用于特殊或复杂的应用程序,可基于所提供的 JavaScript SDK 框架 来构建。通用聊天机器人小部件是使用此 SDK 创建的,所以它是一个很好的可供您扩展或修改的起点。其中封装了与 Watson Virtual Agent 服务交互的基本细节,还提供了公用辅助函数,所以您可集中精力解决与虚拟代理 API 的高级交互的特殊需求。提供的文档包含完整、详细的示例代码,以帮助您快速实现目标。

Watson Conversation 服务

Conversation 服务处理虚拟代理与用户之间的交互。认知接口的主要优势之一是,它可以自适应、灵活地理解和响应用户。Watson 在上下文中通过言语互动统计模型进行学习,学习过程在基于特定术语的抽象概念级别上实际进行。这有助于创建在行为上与用户的含义和意图更一致的系统,让用户可以直观地与 Watson 交互。

该技术不是以语言的语法解析功能为基础。举例来说,Conversation 服务可学习语言行为。在大多数情况下,您最初可以训练它以普遍适用的方式操作,以最大限度减少前期工作。然后,在使用时,可以通过进一步训练进行自定义,以理解用户群的典型方言和其他言语习惯。借助此方法,您可以提供一些直接结果,然后捕获可用于更全面训练系统的用户交互信息。从真实用户那里获取对话示例至关重要。

为了针对特定应用而调整服务,使用内置工具设计了多种类别的对话模式,以训练 意图、实体和对话流 的机器学习模型。Watson 学习每种模型的方式是,分析用户通常表达常用概念的不同方式示例。没有必要预先确定可能表达某个事物的所有不同方式。但重要的是使用从最终用户主题专家捕获的真实示例。Watson 可从一些不同示例学习想要的对话行为。

您可使用该服务的 REST API 将用户输入传递给 Watson 并接收响应。该编程接口提供了基于类别的功能,这让您的应用程序能依据用户表达的预期目的,以不同的操作作为响应。在最简单的情况下,您的应用程序可能返回 Watson 的响应作为 ‘答案’(如果这是需要的全部信息),但也可以执行其他行为。由于采取了依据所训练的示例对用户输入分类的方式,您可以通过让用户一目了然的方式控制应用程序流。该服务行为的这种分类性质,使应用程序能依据检测到的用户输入类型而选择性地执行各种不同的操作。

考虑下面这个应用程序示例,该应用程序依据用户输入的类别而采取不同的行为:

  • 在一些情况下,该应用程序在用户询问简单问题时直接返回答案。
  • 当需要更多上下文输入时,该服务与用户执行简短交流,以引出更多输入来阐明问题。
  • 在其他情况下,Conversation 服务返回的结果传递给另一个 Watson 服务,比如 Retrieve and Rank,后者利用应用于大型非结构化信息语料库的深入学习算法,返回与用户的直接工作上下文相关的简明、重点突出的消息。
  • 取决于 Conversation 服务对用户输入的分类方式,这个应用程序向 Watson Explorer 发出 API 调用,以在特定非结构化数据集合上执行某种内容分析,并提供用户所请求的图形化摘要。
  • 依据用户输入的类别,同一个应用程序也可以启动另一个工作流,进一步传递用户上下文来提供无缝的体验。例如,可在另一个屏幕中使用 Watson Tradeoff Analytics 服务,帮助用户快速评估一个复杂决策的不同选项,然后在 Conversation 服务中继续执行主要应用程序流,同时仍然保持用户的工作上下文。

即使您仅拥有基本技能,也可以轻松地将应用程序中的多个认知服务与一个代理接口集成,让该代理接口依据使用环境而采取不同方式的响应。Watson Conversation 服务通过自然语言处理与深入学习算法的分层组合来处理前端认知任务,并提供一个简单 API,使您无需丰富的技术经验也能充分利用它的功能。Watson Cloud 服务架构以商品形式提供此认知技术,使企业应用程序开发人员和系统集成者容易获得。

您可以使用 Watson Virtual Agent 和基础 Watson Conversation 服务 API,对应用程序流实现高度响应式的用户控制,在用户请求时直接将其引导至想要的功能。当应用程序需要用户提供与上下文相关的输入时,Conversation 服务可触发您的应用程序显示一个弹出窗口来请求任何必要的细节,所有这些上下文信息都可以在 Conversation 服务 API 内处理和维护。应用程序设计上的巨大进步在于,现在可以轻松地集成任何应用程序或系统,以依据用户的普通口头输入而采取行为,并采用适合手头任务的多种不同方式进行响应。

使用 Watson Cognitive 服务处理大型信息内容集合

有许多服务可帮助用户处理包含各种各样的自由文本信息的超大型集合,比如教程和出版物、非结构化口头报告、历史解说信息、通信的文字记录、大量公众评论、复杂的政府和监管部门法律文档等。任何包含以人类自然语言编写的非结构化文本信息的大型集合,都可以获取到所谓的 语料库 中。您可以将多个认知服务合并到应用程序中,以实现对这样一种语料库进行概念理解的功能,也可以针对用户的特定领域行话和术语而调节应用程序的响应。取决于您需要完成的任务,可以使用不同的服务。

Document Conversion 服务

基本来讲,Document Conversion 服务是一个调节内容的预处理阶段,在将内容摄入到信息语料库之前执行。由于文档格式的多样性,该阶段必不可少。一些专用的文件类型(比如 PDF 文档)包含大量隐藏的标记,必须解释并清除这些标记,提供给 NLP 流程的输入才真正是人类自然语言。如果配置得当,Document Conversion 服务可大大增强 Retrieve and Rank 服务最终返回的结果的属性特征。

相反,如果 Document Conversion 服务的配置无法正确解释文档的格式,随后出现的结果可能是太大或太小的信息片段。Watson 最终返回的结果,就是此服务将内容划分为 潜在答案单元 的结果。这些有意义的文字片段可使用原始内容标题和/或段落来描述,也可使用其他一些可配置参数来帮助恰当地平衡简洁陈述与大概讯息。

在将输入摄入到供 Watson 获取信息的内容语料库之前,拥有 Document Conversion 服务的最佳配置至关重要。对结果排序算法的训练基于 Document Conversion 服务的输出,所以您应小心避免在摄入后重新调整。在实际中,此服务对简洁、有意义的文本段划分得越好,就越能够提升应用程序的后续效用和用户体验的质量。

Retrieve and Rank 服务

Retrieve and Rank 服务将两种信息技术组合到一个服务中:Apache Solr 的基础分面机制和多层 Watson 深入学习算法。这种组合根据用户使用信息的方式,为用户提供与其意图更相关的结果。这超越了简单的选择指标。它特意与用户完成其工作的目标视角保持一致。Retrieve and Rank 服务还支持 Apache Solr API 标准,以便发挥可配置分面应用程序的全部功能。IBM 提供了让 Solr 变得适合企业使用而需要的支持框架,还提供了具有可靠的错误处理和可恢复能力的服务实现附加层,在企业规模上使用 Solr 时通常需要这些能力。因此,您不需要构建这个通用的支持性软件基础架构。

排序算法使用机器学习模型,已通过方便操作的实用程序使用示例对这些模型进行了训练。该服务演示训练流程,并提供建议来指导您最快完成训练,还提供了会一直显示进度指标的自动化测试。该服务使用多种不同的高级排序算法,标准化和平衡它们的排序因素的权重,以优化性能。甚至在对排序算法执行任何训练之前,结果通常已具有很好的相关性,所以您可以立即使用该系统,并在使用过程中不断改进它。

必须在来自真实最终用户主题专家的问题上训练排序算法,并相应地对候选回复的相关性进行评分。如果尝试在没有真实用户输入的情况下为 Watson 设计训练数据,得到的系统或许能很好地响应工程师的问题,但不太适合最终用户。一定不要使用过于简单的随机化或重排序技术来 “生成” 训练数据,因为使用机器生成的示例来训练机器学习算法只会造就死板的机器人。Watson 学习通过分析真实人际互动中所有复杂的内在分歧和矛盾来理解人类,因为我们的理解的隐含上下文就隐藏在这些分歧和矛盾中。这无疑是对认知系统至关重要的数据。

当您实例化 Retrieve and Rank 服务时,您将找到一个用于启动工具的按钮,它会调出一些实用工具,这些工具具有简单的逐步操作说明来引导您设置信息语料库和训练排序算法。您上传一些示例问题,并对每个示例的最准确的 4 或 5 个答案的相关性进行简单的评分(最高为五颗星)。在此过程中,Watson 持续优化和推荐最佳的任务序列,帮助您最大限度减少训练工作。如果按照这些工具的指示操作,通常可以在很短时间内轻松实现经过良好训练的排序算法。

最好将内容分割为适当大小的片段来摄入到语料库中,而不是一次全部摄入。分批上传内容并训练,会使您的训练周期短得多,最终显著缩短训练过程的总长度。上传一些与一个宽泛的主题范围大体相关的语料库片段,然后执行一个训练周期。然后上传另一个内容子集并进行训练,一起构建语料库和排序模型,以便同时平衡地积累知识和信息。请记住,Watson 最终处理的不是信息内容本身,而是我们理解信息的模型。这与加载包含多个文档的数据库完全不同。在本质上,您上传的是认识模式,用于理解信息以得到最终用户看法的某种表达。

一种典型的错误是,提前一次性加载整个语料库的所有内容,然后再开始训练排序算法。如果这么做,您将会在中途后悔,会发现总体训练工作变得长得多且更加艰苦。相反,如果分批上传并训练,花费的时间和精力将更少。

将来自非常大的语料库的信息引入到对话中

通过将 Virtual Agent 与 Watson 的功能相结合,从海量的非结构化文本中提取关注范围更小的消息,会得到一个具有广泛用途的认知系统。可以配置 Conversation 服务来对完全不同的用户请求进行分类识别,有条件地将应用程序流传递给任何其他服务。所以,您可以使用用户与代理之间的对话,确定何时从某些情况下的简单直接响应,切换到另外的借鉴自大型语料库的更加专注的信息。为此,一种方式是让 Conversation/Dialog 服务为所有简单查询提供直接答案,但当它遇到任何其他没有响应的信息类别时,将应用程序流传递给 Retrieve and Rank 服务。这可作为一种默认行为。

另一种方法是使用一个或多个类别的问题类型来训练 Conversation 服务,在这些问题类型中,用户仅希望更深入地理解信息。这使用户能更多地掌控应用程序,还使将某些查询转移到包含完全不同信息种类的不同语料库实例成为可能。您可以使用配置参数和极少的代码完成大部分相关工作。

这个应用程序 展示了如何在之前介绍的一个应用程序中组合 Conversation 服务与 Retrieve and Rank 服务,并提供了一个演示和具有完整文档的代码。

开始使用它的最快方式是单击 Deploy to Bluemix 按钮(位于 Deploy the app 下),这会将该项目克隆到您自己的 Bluemix 帐户中。然后检查详细的应用程序代码,使用它作为起点来进行修改和扩展,以便为创建自己的应用程序来解决您的用例的具体需求提供有利的开端。

使用 Alchemy 提取自然语言元素来扩充元数据

AlchemyLanguage 服务 API 提供了通用的自然语言处理功能,可以从任何非结构化文本通信中提取 指定实体 和它们的隐含 关系 。此服务基于预先训练的模型方法,使它能够识别并提取许多不同类型的术语,并使用合适的元数据标记准确标识这些类型。通过以模型为基础,它能够灵活地处理不同的语言。它能够识别的语言清单 非常长。

同样的方法还意味着,也可以训练自定义模型来处理特定领域的行话和俚语。(本教程后面将更详细介绍。)Alchemy API 提供了 实体提取、情绪分析、情感分析、概念标记、关系提取、分类 功能, 以及其他 NLP 操作能力。将 Alchemy 与其他认知服务相结合,能够实现更高的质量性能。它可通过更高维度的 NLP 概念空间,提高 Retrieve and Rank 服务的有效性。也可以将它与 Watson Explorer Advanced Content Analytics 结合使用。可以利用 Alchemy Language SDK 来帮助实际使用此 API。

GitHub 中的这个项目 展示了如何使用 Alchemy 从自由文本中提取各种各样的元素和元数据,并提供了具有完整文档的代码和一个实用演示。开始使用它的最快方式是单击 Deploy to Bluemix 按钮,这会将该项目克隆到您自己的 Bluemix 帐户中,您可以在帐户中详细了解 Alchemy API 调用的工作原理,并获取代码段来节省开发自己的应用程序的时间。

Watson Explorer 内容分析

本教程重点介绍一种组合了各种认知服务的设计模式,所以我们考虑将 Watson Explorer 的分析能力与其他 Watson Cloud 服务联合使用。Watson Explorer 是一个非常可靠的应用程序服务,它本身常常用作一个独立的解决方案,但这不属于本教程的介绍范畴。您可以找到有关将 Watson Explorer 内容分析 用作独立解决方案的详细信息。

Watson Explorer 内容分析提供了一些高级功能,这些功能所基于的原理是,对非结构化文本中的自然语言元素进行分面索引,并获得这些元素的统计信息,以便对不同语言特征集合执行分析功能。语言元素的识别通过一个称为注释器 (Annotator) 的接口执行。一些不同领域的 Watson 技术使用了许多通用的注释器实现。一些注释器基于机器学习,具有非常广的适用范围。Watson Knowledge Studio 中使用的一些注释器可使用 Alchemy 构建,或者可以包含针对一种特定的小众应用的术语词典。

Watson Knowledge Studio

当应用程序需要对特定于领域的内容的元素进行注释时,可使用 Watson Knowledge Studio 创建这些自定义注释器。最常见的注释器类型使用机器学习算法,依据用于训练的示例而对目标元素进行分类识别。这提供了正确识别术语目标类别的新术语的认知能力,包括之前没有明显看到过的情况。

在许多情况下,创建一个词典注释器很有用,Watson Knowledge Studio 使用它们标注一个特殊知识领域中的术语、语言个性、行话、缩写或其他重要元素的特定约定,这些约定可能是内容和/或应用程序用户的隐含行话所特有的。

Watson Knowledge Studio 中创建的机器学习注释器经过训练并准备好部署后,Watson Explorer 内容分析功能中的 Alchemy 可使用它们对其识别的元素出现次数执行统计计算,提取这些元素作为一组文档的索引关键词,或者用于支持其他高级分析功能。

原文  http://www.ibm.com/developerworks/cn/cognitive/library/cc-cognitive-design-patterns-1-trs/index.html?ca=drs-
正文到此结束
Loading...