使用 IBM Watson Concept Insights 服务进行自然语言搜索

Using the IBM Watson Concept Insights service for Natural Language Search

我们正在尝试使用 IBM Watson Cognitive Insights (CI) 服务实现自然语言搜索功能。我们希望用户能够使用自然语言输入问题,然后 return 来自 CI 语料库的适当文档。我们正在使用 CI 而不是 Watson QA 服务,以避免需要培训并降低 Watson 基础架构成本(即避免为每个 corpus/use 个案例提供专用的 Watson 实例)。

我们能够通过 CI API 构建必要的语料库,但我们不确定以何种顺序使用哪些 API 来完成最多 precise/accurate 可以查询。

我们最初的想法是:

  1. 接受用户的自然语言问题,Post将该文本字符串添加到“Identifies concepts in a piece of text”API(在 CI API 参考文档)获取与问​​题相关的概念列表。

  2. 然后使用“在语料库中执行概念搜索”API 执行 GET(在 CI API 参考文档中从底部列出第 3 个) 从语料库中获取相关文档的列表。

第一个问题 - 这是实现 post 第一段中描述的 objective 的正确方法吗?我们应该以不同方式组合 CI API 还是一起使用多个 Watson 服务来实现 objective?

如果我们最初的方法是正确的,那么我们发现当我们提交一个简单的问题(例如“我怎样才能修复 MySQL 数据库损坏”)到“识别一个概念中的概念” text” API 我们没有得到相关概念的完整列表。例如:

curl -u userid:password -k -d "How can I repair MySQL database corruption" https://gateway.watsonplatform.net/concept-insights-beta/api/v1/graph/wikipedia/en-20120601?func=annotateText

returns:

[{"concept":"/graph/wikipedia/en-20120601/MySQL","coords":[[17,22]],"weight":0.85504603}]

但显然还有其他概念与示例问题相关(修复、损坏、数据库等)。

在另一个例子中,我们刚刚将文本“repair”提交给“Identifies concepts in a piece of text”API:

curl -u userid:password -k -d "repair" https://gateway.watsonplatform.net/concept-insights-beta/api/v1/graph/wikipedia/en-20120601?func=annotateText

它 returned:

[{"concept":"/graph/wikipedia/en-20120601/Repair","coords":[[0,6]],"weight":0.65392953}]

看来我们也应该从第一个例子中找回“修复”的概念。为什么 API return 在我们提交 "repair" 时会出现“修复”概念,而在我们提交文本“我如何修复 MySQL 数据库损坏”时却没有,其中还包括“修复”一词。

请告知实现基于 Watson Concept Insights 服务的自然语言搜索功能的最佳方式(如果合适,可能与其他服务结合使用)。

非常感谢您的问题,很抱歉这么晚才回答。

The first question - is this the right way to go about achieving our objective >described in the first paragraph of this post? Should we be combining the CI >APIs differently or using multiple Watson services together to achieve the objective?

执行上述步骤将是完成您想做的事情的自然方式。但请注意,"annotate text" API 目前使用与系统将语料库中的文档连接到核心知识图谱中的概念完全相同的技术,因此,它更 "paragraph"导向而非个别问题导向。更准确地说,在较小的文本中提取概念的问题通常比在较大的文本中更难,因为后者有更多的上下文可以用来做出正确的选择。鉴于这一观察,注释文本 API 再次采用更保守的路线,因为它的段落重点。

话虽如此,我们现在拥有的/v2 API确实提高了概念抽取技术的速度和质量,所以有可能你使用它来抽取更成功来自自然语言问题的主题。这是我 do/watch 的目的:

1) 清楚地向用户显示CI 从输入的自然语言中提取的内容。我们的 API 为您提供了一种检索每个概念的小摘要的方法,可用于向用户解释概念的含义 - 请使用它。

2) 让用户能够从提取的概念列表中删除一个概念(划掉)

3) 由于concept insights中的概念目前大致对应"topics"的概念,因此无法推导出更抽象的意图(例如,如果问题含义的关键是一个动词或一个形容词而不是一个名词,概念洞察力是一种糟糕的推导方式)。正如您之前指出的那样,Watson 确实拥有面向问答的技术(自然语言分类器是其中的一个组成部分),所以我会看一看。

Yet clearly there are other concepts associated with the example question >(repair, corruption, database, etc.).

这个问题的答案和其他已发布问题的答案在某种意义上是上面的 - 我们的目的是首先为 "larger text" 提供技术,正如我解释的那样,这是一项更容易的任务。由于这个问题是今天首次发布的,我们确实介绍了新的注释技术 (/v2),所以我鼓励 reader 看看它是否表现得更好。

从长远来看,我们确实有意为用户提供一种正式的方式来指定一般应用程序的上下文,以便增加提取相关概念的机会。我们还计划让用户能够指定自定义概念,因为过去观察到用户感兴趣的某些主题无法在我们当前的设计中匹配,因为它们不在维基百科中。