本系列第 1 部分介绍了如何使用原始来源数据从 Watson Retrieve and Rank 迁移到 Watson Discovery 服务.在本部分,我们将介绍如何通过直接从 Watson™ Retrieve and Rank (R&R) 获取数据并将其添加到 Watson Discovery 来迁移应用程序.通过此过程,您将能够使用 R&R 工具迁移已构建的应用程序,并开始利用一些新的 Discovery 功能.
首先,您需要以下信息:
R&R 服务实例凭证,cluster_id 和集合名称
Watson Discovery 服务实例凭证,environment_id 和 collection_id
将建立了索引的 R&R 内容迁移到 Watson Discovery
正如 第 1 部分 中所述,Watson Discovery 提供了一个摄取非结构化文档并返回自然语言查询的相关答案的简化管道.要开始使用 Discovery,第一步是获取必要数据.对于文档,此数据位于一个 R&R 集合中.R&R 包含 JSON 文档,而 Discovery 接受 JSON 输入,所以可以从 R&R 中实际查询数据并发送到 Discovery.此脚本提供了一个执行此查询并摄取数据的方法的示例.它对 R&R 运行一次查询来匹配所有文档,浏览结果集,在此过程中将每个文档都发送到 Discovery.Discovery 可以基于应用于某个集合的配置来扩充文档.
获取 GitHub 上的 脚本 .该脚本是使用 Python 2.7 编写的,并需要访问两个库:
pysolr - 用于从现有 R&R 集合获取文档
watson_developer_cloud - 用于将文档导入 Watson Discovery 服务中
每个库都可以使用 pip 通过以下命令进行安装:
sudo pip install < library_name >
要运行该脚本,可使用以下命令:
./rnr-exporter.py --rnr_username {rnr-username} --rnr_password {rnr-password}
--rnr_solr_cluster_id {rnr-cluster-id} --rnr_collection_name {rnr-collection} --
disco_username {discovery-username} --disco_password {discovery-password}
--disco_env_id {discovery-environment} --disco_collection_id {discovery-collection}
其中:
{rnr-username} = 用于访问 Retrieve and Rank 实例的用户名
{rnr-password} = 用于访问 Retrieve and Rank 实例的用户名的密码
{rnr-cluster-id} = 要从中导出数据的 Solr 集群 ID
{rnr-collection} = 要从中导出数据的 Solr 集合
{discovery-username} = Discovery 实例用于导入数据的用户名
{discovery-password} = 访问 Discovery 实例的用户名对应的密码
{discovery-environment} = 导入数据的目标环境 ID
{discovery-collection} = 导入数据的目标集合 ID
要获得所有选项的列表,可以使用 -h 选项调用 rnr-exporter.py 脚本.
根据需要传输的文档数量,这一步可能要花几分钟到几小时的时间.完成后,该脚本将通知您它已成功从 R&R 导出文档.该脚本将保留在迁移到 Discovery 时 R&R 中提供或分配的 document_id.这很重要,因为训练依赖于这些 document_id.
将 Retrieve and Rank 训练数据迁移到 Watson Discovery
下一步是收集和迁移训练数据.要通过工具从 R&R 服务获取训练数据,可以选择右上角的齿轮图标并选择 Export data.这将生成一个包含训练数据和文档的压缩文件.
图 1. 导出数据
点击查看大图
这可用于在 Discovery 中创建训练数据.Discovery 的一个优势是,此训练数据可通过 API 和 UI 工具进行访问,而在 R&R 中,只能通过工具导出来提供训练数据.Discovery 接受训练数据作为一个包含查询,过滤器和示例的 JSON 对象.该 脚本 将从 R&R 工具导出的数据转换为适合 Discovery 的格式.
因为迁移的文档使用了一致的 document_id,所以训练数据现在应该是匹配的.该脚本可使用此命令运行:
python migrate-training-data-from-service.py -u {username}:{password} -i {filename} -e
{environment} -c {collection}
其中:
{username} 是您的 Watson Discovery Service API 用户名
{password} 是您的 Watson Discovery Service API 密码
{filename} 是从 R&R 工具导出的 JSON(export*.zip 文件中的 export-questions.json)的位置
{environment} 是您的 Watson Discovery 环境 ID
{collection} 是您的 Watson Discovery 集合 ID
要查看选项列表,可使用 -h 选项来调用 migrate-training-data-from-service.py 脚本.
现在,Discovery 将加载来自 R&R 的内容和训练数据.Discovery 将验证训练数据和模型并使其可供使用的流程自动化.为此,Discovery 可能需要等到有资源可用时才开始处理,所以可能需要花费 1 小时的时间来准备和开始训练.
使用状态 API 检查训练的状态:
curl -u "{username}":"{password}"
"https://gateway.watsonplatform.net/discovery/api/v1/environments/{environment_id}/collections/{collection_id}?version=2017-11-07"
图 2. 检查训练状态
点击查看大图
一旦状态切换为 available=true,如果使用 natural_language 查询,默认情况下会使用经过训练的模型来改善结果排名.您不需要在应用程序中提供一个 ranker_id 或更改端点.
最后,了解系统的性能至关重要.尽管 Discovery 和 R&R 非常相似,但您看到的所有查询的结果不可能完全相同.在 这里 ,我介绍了一些执行此评估的方法,本系列的下一部分还将提供一些额外的示例来帮助理解.
评论
来源: http://www.ibm.com/developerworks/cn/cognitive/library/cc-migration-rr-discovery-pt2/index.html