IBM Cloud Docs
通过训练改进结果相关性

通过训练改进结果相关性

在 IBM Watson® Discovery 中,自然语言查询结果的相关性可以通过训练来改进。

相关性模型确定要在搜索结果中返回的最相关的文档。 如果没有相关性训练,那么将使用标准机制根据常见因素来确定相关性。 当您训练相关性模型时,可帮助 Discovery 在文档确定相关性时使用其独有的功能。

仅当提交自然语言查询时,才会在运行时使用与项目关联的相关性训练模型。 模型未应用于发现查询语言 (DQL) 查询。

不能将相关性训练应用于 内容挖掘 项目类型。

要训练相关性模型,请提供样本自然语言查询,提交这些查询以从文档中获取结果,然后对这些结果进行评级。 添加更多示例时,将使用您提供的有关每个查询的结果相关性的信息来了解项目。 系统使用您的评估来分配文档中不同类型的结构信息的重要性。 例如,它会了解搜索查询中的关键字何时出现在标题与文档的标题,正文或元数据中的重要性。 它还从一个匹配关键字与另一个匹配关键字之间的距离的重要性中学习。 在成功的相关性训练会话之后,将创建排名器模型。 此模型由 Discovery 自动用于下一个自然语言查询。 发现会对文档结果进行重新排序,以便根据相关性训练模型显示最相关的结果。

培训适用于整个项目。 不能对一个集合跳过此操作并将其应用于同一项目中的其他集合。 不允许通过指定查询参数来使用训练模型。 如果存在,那么该模型将用于为项目提交的每个自然语言查询。 无论您将搜索限制为一个集合还是所有集合,都将使用该模型。 因此,训练数据表示可能由项目中的所有集合应答的查询很重要。 要阻止项目使用相关性训练模型,可以使用 API 来删除该模型。

相关性训练不会连续运行。 仅当您启动训练时,才会进行训练。 每个项目一次最多使用一个经过训练的相关性模型。 如果重新训练模型,那么将使用现有模型,直到成功训练新模型为止,此时新模型将替换旧模型。

构成训练数据的文档集仅在训练过程中使用。 如果对用于训练模型的文档进行后续更改,那么不会更改已训练的模型,也不会触发新的训练会话。 请记住,如果项目中的许多文档发生更改,那么可能需要重新训练模型以使用已更新文档中的功能部件。

添加到集合的停用词和查询扩展不会直接影响相关性训练模型。 但是,它们可以更改从搜索返回的文档,这将影响按相关性模型排名的文档。 模型对查询返回的前 100 个文档进行排序。 您对停用词或查询扩展所做的更改不会启动相关性训练更新。 如果添加大幅更改搜索返回的文档的工件,请考虑重新训练模型。

如果从集合中除去了先前用于训练模型的文档,那么必须先从训练数据中除去对这些文档的任何引用,然后再开始重新训练模型。 模型期望来自训练数据对的文档和查询都继续存在。 要除去这些引用,请删除返回已删除文档的训练查询。 如果这些查询仍然相关,那么可以将它们重新添加到训练数据中,并将它们与其他文档配对。

有关相关性训练 API 的更多信息,请参阅 API 参考文档

何时使用相关性训练

相关性训练是可选的。 测试搜索结果的质量。 如果查询结果符合您的要求,则无需进一步培训。

训练可提高在查询响应中返回的文档的相关性。 它不会改进每个文档返回的段落或答案。 如果您正在使用段落检索,并且测试结果返回了正确的文档,但是来自文档的错误段落,那么相关性训练将无济于事。

有关何时使用相关性训练的更多信息,请阅读“中型”上的 时间敏感用户的相关性训练 博客帖子。

如何处理字段

从产品用户界面训练项目时,结果始终取自文档的 text 字段。 如果文档没有 text 字段,请改为使用 API 来训练项目。 如果您上载的 CSV 文件没有名为 text的列,或者上载的 JSON 文件没有名为 text的对象,或者如果您使用“智能文档理解”工具来定义具有其他名称的字段 (现在存储文档的大部分内容),那么您的文档可能没有 text 字段。

从 API 训练项目时,将从所有根级别字段中获取结果,并且所有结果都被视为具有同等意义。 与“发现查询语言”查询不同,使用自然语言查询时,无法指定您关心的文档中的哪些字段或赋予每个字段的显着性。 当您使用示例教授 Discovery 时,服务会为您计算每个字段的权重。

发现将构建一个模型,该模型将不同的权重分配给每个根级别字段的词汇,双元和跳过图匹配项,并将它们与所有其他文档字段的匹配项进行平衡。 通过足够的示例,Discovery 可以返回更好的答案,因为它知道最佳答案通常存储在何处。

相关性训练不能用于赋予嵌套字段更多权重。 嵌套字段将进行分组并分配一个总体评分。 无论您训练多少,Discovery 从不赋予嵌套字段比它赋予根级别字段更多的权重。 有关嵌套字段的更多信息,请参阅 常见问题解答

培训项目

用于训练相关性模型的训练数据包括以下部分:

  • 代表用户可能提交的查询的自然语言查询
  • 服务返回的查询结果
  • 应用于指示结果是 relevant 还是 not relevant 的结果的评级

要将相关性训练应用于项目,请完成以下步骤:

  1. 转至 改进和定制 页面。 在改进工具面板上,选择改进相关性,然后选择相关性训练

  2. 在“输入问题以训练”字段中输入自然语言查询。

    不要在查询中包含问号。 使用与用户相同的措辞。 例如,IBM Watson in healthcare。 编写包含目标答案中提及的部分词汇的查询。 对自然语言查询进行求值时,术语重叠会改进初始结果。

  3. 点击“添加+”。

  4. 单击 费率结果

  5. 显示结果后,评估每个结果,然后选择 相关不相关,根据结果的质量,任何选项都适用。

    在 Discovery UI 中,当您将文档标记为 相关时,服务会将相关性分数 10 应用于结果,并将其标记为 不相关时将分数 0。 通过 Discovery UI 应用相关性训练时,只能分配两个评分值: 010

    在 Discovery API 中,可以在 0 与最多 100 之间的每个整数之间分配相关性分数值。 在同一项目中,不能将在 Discovery UI ( 010 的评分) 中创建的训练示例与使用除 010 以外的置信度评分级别创建的示例混合在一起。 如果通过 API 使用任何定制分数标度,那么必须继续通过 API 应用所有训练。 您无法在 Discovery UI 中编辑通过 API 应用的训练示例,除非它们仅使用 010 这两个评分。

    如果结果显示消息“没有可用于此文档的内容预览”,那么表示返回的文档不包含 text 字段,或者其 text 字段为空。 如果集合中没有任何文档具有 text 字段,请使用 API 来训练项目,而不是从产品用户界面对其进行训练。

  6. 完成后,点击返回查询

  7. 继续添加查询并对其进行评级。

    当您对结果进行评级时,将显示您的进度。 请检查进度,以了解何时有足够的评级信息可用于满足培训阈值需求。 您的进度分为以下任务:

    • 添加更多查询
    • 对更多结果评级
    • 为评级引入更多差异

    根据数据的复杂性,您必须至少评估 50 个唯一查询 (可能更多)。 您不能添加超过 10,000 个训练查询。

  8. 达到最低要求后,您可以继续添加查询和评分结果。 输入您认为用户将询问的所有查询。

    要删除培训查询,请点击删除图标。 要一次删除集合中的所有训练查询,请使用 API。 更多信息,请参阅 删除培训查询

如果两个或多个用户尝试同时训练相同的查询,那么其中一个用户提交的评级将覆盖其他用户。

对结果相关性进行测试和迭代

完成评级结果并完成训练时,请进行测试以了解查询结果是否更好。 为此,请运行与您的训练查询相关(但并不完全相同)的自然语言查询测试。 查看结果。

如果要在测试后继续改进结果,可以:

  • 向集合添加更多文档。
  • 添加更多训练查询。
  • 对更多结果评级,并确保同时使用RelevantNot relevant评级。

置信度分数

Discovery 会返回已训练集合的自然语言查询的 confidence 分数。 未经训练的收藏返回的 confidence 分数不能与 confidence 分数互换。

confidence 分数范围可以从 0.01.0。 数字越大,结果相关性越高。

confidence 分数可以在查询结果中每个文档的 result_metadata 下找到。 此数字是根据结果相对于已训练模型的估计相关性来计算的。

{
  "matching_results": 4,
  "retrieval_details": {
    "document_retrieval_strategy": "trained"
  },
  "results": [
    {
	  "id": "eea16dfd5fe6139a25324e7481a32f89_13",
	  "result_metadata": {
	    "confidence": 0.08793
	  }
    }
  ]
}

可以在 document_retrieval_strategy 下找到 retrieval_details。 如果您使用 Discovery 查询语言查询经过训练的集合,或者训练过的模型暂时不可用,则 document_retrieval_strategyuntrained

有关查询项目的更多信息,请参阅 查询概述

相关性训练限制

以下限制适用于相关性训练模型:

  • 每个项目一个模型
  • 每个模型 10,000 个查询
  • 企业套餐和高级套餐的每个服务实例 40 个模型 ;Plus 套餐实例的 20 个模型

运行最佳培训课程

以下示例描述了如何针对项目中的相关性训练以最佳方式运行会话。

假设您向新项目添加了 100 个训练查询,并且 Discovery 在一个训练会话中运行 100 个查询以创建排名器模型。 稍后,如果再添加 20 个查询,那么模型将开始重新训练,Discovery 总共运行 120 个查询。 但是,对于添加最后 20 个查询,如果先添加 10 个查询,等待一个小时左右,然后再添加接下来的 10 个查询,那么 Discovery 会两次训练模型。 在这种情况下,第一个训练会话运行 110 个查询,第二个训练会话运行 120 个查询。 这种添加查询的方式在时间间隔之间交错,导致 Discovery运行的训练会话数和总查询数增加。

相反,为了最大限度减少训练会话数,您可以使用“更新训练查询 API”。 API 方法一次更新一个项目下多个集合的训练数据。 有关更多信息,请参阅 API 参考中的 更新训练查询

要降低 Discovery上的处理负载,应在项目中的所有集合完成处理文档后,通过相关性训练来创建或更新排名器模型。 此外,在排名器模型训练过程中,您应该具有较低的查询活动,以便不会超出并发请求的限制。

改善相关性的其他方法

如果您希望使用 Discovery API 来训练 Discovery,请参阅 API 参考

您还可以使用 API 来添加 curations。 Curations 是一个 Beta 功能,可用于指导 Discovery 在每次提交特定查询时返回特定文档。 有关更多信息,请参阅管理

添加定制非索引字列表还可以改进自然语言查询结果的相关性。 有关更多信息,请参阅 识别要忽略的词

了解相关性训练

有关项目培训的常见问题解答。

我如何知道我的系统是否经过培训?

运行自然语言查询并检查 document_retrieval_strategy。 请参阅置信度分数

如果您正在使用 API,请参阅 列出训练查询

训练模型需要多长时间?

完成训练可能需要 45 分钟到 1 小时之间。 训练的持续时间根据用于训练相关性模型的数据的数量和种类而有所不同。 此外,训练以异步方式进行。 如果它需要的其他数据由于正在以某种其他方式进行搜索或处理而不可用,那么可以延迟该数据。

如何阻止相关性训练应用于我的项目?

使用 API 来删除与项目关联的相关性模型。 要删除模型,请删除与排名器模型关联的训练数据。 有关更多信息,请参阅 删除训练查询

相关性训练影响通道搜索吗?

编号 相关性训练仅用于文档搜索。 对通行搜索没有影响。

相关性训练是否会影响结果?

不是直接的 相关性训练会间接影响答案发现,因为它会更改从中检索答案的文档的顺序。 它将返回的文档从最相关的文档重新排序为最不相关的文档。

如何检查错误和警告?

打开“管理集合”页面。 选择集合,然后打开活动选项卡。

如何解释经过训练后自然语言查询结果中显示的信任度分数?

请参阅置信度分数

解释相关性训练错误和警告

以下列表提供了一些常见错误和警告消息的说明。

创建排名器模型时,Watson将很快开始学习的信息会显示很长时间

如果现有排名器模型总数已达到 40 个模型的限制,则可能出现此问题。 在这种情况下,新模型不会创建,用户界面上也会长时间显示 Watson即将开始学习的信息。

要解决这个问题,可以删除未使用项目中的旧排名器模型,或者联系IBM支持部门升级到高级实例。

警告 Invalid training data found: The document was not returned in the top 100 search results for the given query, and will not be used for training

当训练数据中的 document_ids 与针对集合执行的搜索中的 document_ids 不匹配时,会发生此警告。 请检查您的查询,确保您正在评分的文档的 document_id 在该查询的前100个结果中。 如果不在,您可能要检查以下两项内容:

  • 如果在排名前 100 位中未返回文档,那么可能不是高质量结果的示例。 重新评估是否使用该文档。
  • 如果文档根本没有返回,请检查文档未返回的原因,并查看文档中的任何文本是否与查询的部分内容匹配。

此警告指示您可能有一个或多个失败查询。 不代表不能完成训练。

错误:Invalid training data found: Syntax error when parsing query

语法错误表示查询无效。 例如,当您通过向自然语言查询添加过滤器来增加查询的复杂性时,可能会发生语法错误。 使用 API 在相关性训练之外对集合运行查询。 确认查询有效并返回结果后,可以将其添加为相关性训练查询。

错误:Training data quality standards not met: You will need additional training queries with labeled examples. (To be considered for training, each example must appear in the top 100 search results for its query.)

需要添加更多训练数据才能成功训练。 您至少需要 49 个唯一训练查询,并且每个查询至少需要一个已评级文档。 最低要求并不意味着最佳;藏品数量和其他因素可能会增加满足最低要求所需的训练实例的数量。

错误:Training data quality standards not met: Insufficient number of unique training queries. Expected at least n, but found m.

要满足最低训练需求,您至少需要 50 个唯一训练查询,并且每个查询必须至少有一个额定文档。 如果查询数超过最小值,并且仍在接收此错误消息,请检查您的通知以查找其他错误。

错误:Training data quality standards not met: No documents found with non-zero relevance labels.

训练数据需要足够的已标注数据,这些数据用于指定哪些文档的价值比较高。 因此,您需要为一些文档赋予非零值。 您需要将某些文档评级为Relevant,将某些文档评级为Not relevant。 必须至少将一个文档评级为Relevant

错误:Training data quality standards not met: Training examples have no relevance label variety for X queries.

训练的其中一个要求是有足够的标签差异性。 至少 25% 的训练查询必须同时包含 RelevantNot relevant 标签。 如果使用 API,那么至少 25% 的查询必须包含两个不同的数字标签。