从包含意向和实体的话语文本中提取数据

重要

LUIS 将于 2025 年 10 月 1 日停用,从 2023 年 4 月 1 日开始,你将无法创建新的 LUIS 资源。 建议将 LUIS 应用程序迁移对话语言理解,以便从持续的产品支持和多语言功能中受益。

使用 LUIS 可以从用户的自然语言陈述中获取信息。 信息以一种程序、应用程序或聊天机器人能够使用其来采取操作的方式进行提取。 在以下部分中,通过 JSON 示例了解从意向和实体返回了什么数据。

最难提取的数据是机器学习的数据,因为它不是完全匹配的文本。 机器学习实体的数据提取需要作为创作周期的一部分,直到你确信已接收到所需的数据。

数据位置和密钥用法

LUIS 从已发布终结点中的用户言语提取数据。 HTTPS 请求(POST 或 GET)包含陈述以及一些可选配置,例如暂存或生产环境 。

V2 预测终结点请求

https://api.cognitive.azure.cn/luis/v2.0/apps/<appID>?subscription-key=<subscription-key>&verbose=true&timezoneOffset=0&q=book 2 tickets to paris

V3 预测终结点请求

https://api.cognitive.azure.cn/luis/v3.0-preview/apps/<appID>/slots/<slot-type>/predict?subscription-key=<subscription-key>&verbose=true&timezoneOffset=0&query=book 2 tickets to paris

在编辑 LUIS 应用时,appID 可在该 LUIS 应用的“设置”页上找到,也可在 URL 中找到(在 /apps/ 之后)。 subscription-key 是用于查询应用的终结点密钥。 虽然可以在学习 LUIS 时使用免费的创作/初学者密钥,但是将终结点密钥更改为支持所需 LUIS 用法的密钥非常重要。 timezoneOffset 的单位是分钟。

HTTPS 响应包含 LUIS 可基于当前发布的暂存或生产终结点的模型确定的所有意向和实体信息。 终结点 URL 位于 LUIS 网站的“管理”部分的“密钥和终结点”页上。

意向中的数据

主数据是评分最高的意向名称。 终结点响应为:

{
  "query": "when do you open next?",
  "topScoringIntent": {
    "intent": "GetStoreInfo",
    "score": 0.984749258
  },
  "entities": []
}
数据对象 数据类型 数据位置 “值”
Intent 字符串 topScoringIntent.intent "GetStoreInfo"

如果聊天机器人或 LUIS 调用应用基于不止一个意向评分来进行决策,则返回所有意向的评分。

设置 querystring 参数 verbose=true。 终结点响应为:

{
  "query": "when do you open next?",
  "topScoringIntent": {
    "intent": "GetStoreInfo",
    "score": 0.984749258
  },
  "intents": [
    {
      "intent": "GetStoreInfo",
      "score": 0.984749258
    },
    {
      "intent": "None",
      "score": 0.2040639
    }
  ],
  "entities": []
}

意向按评分从高到低排序。

数据对象 数据类型 数据位置 “值” Score
Intent 字符串 intents[0].intent "GetStoreInfo" 0.984749258
Intent 字符串 intents[1].intent "None" 0.0168218873

如果添加预构建的域,则意向名称指示该域,例如 UtiltiesCommunication 以及意向:

{
  "query": "Turn on the lights next monday at 9am",
  "topScoringIntent": {
    "intent": "Utilities.ShowNext",
    "score": 0.07842206
  },
  "intents": [
    {
      "intent": "Utilities.ShowNext",
      "score": 0.07842206
    },
    {
      "intent": "Communication.StartOver",
      "score": 0.0239675418
    },
    {
      "intent": "None",
      "score": 0.0168218873
    }],
  "entities": []
}
数据对象 数据类型 数据位置 “值”
实用程序 Intent 字符串 intents[0].intent "Utilities.ShowNext"
通信 Intent 字符串 intents[1].intent Communication.StartOver"
Intent 字符串 intents[2].intent "None"

实体中的数据

大多数聊天机器人和应用程序需要的都不止是意向名称。 此额外的可选数据来源于在陈述中发现的实体。 每种类型的实体返回有关匹配项的不同信息。

陈述中的单个单词或短语可以匹配多个实体。 在这种情况下,会返回每个匹配实体及其评分。

所有实体均从终结点响应的“实体”数组中返回

返回的切分后的实体

查看 LUIS 中的令牌支持

预构建实体数据

预构建实体是基于正则表达式匹配项、使用开源 Recognizers-Text 项目发现的。 预构建实体返回在实体数组中,并使用前缀为 builtin:: 的类型名称。

列表实体数据

列表实体表示一组固定、封闭的相关单词及其同义词。 LUIS 不会为列表实体发现更多值。 使用“建议”功能根据当前列表查看有关新词的建议。 如果存在多个具有相同值的列表实体,则终结点查询中会返回其中每个实体。

正则表达式实体数据

正则表达式实体基于所提供的正则表达式提取实体。

提取名称

从陈述提取名称非常困难,因为名称几乎可以是字母和单词的任何组合。 根据要提取的名称类型,有若干选项。 以下建议不是规则,而是更多准则。

添加预构建的 PersonName 和 GeographyV2 实体

PersonNameGeographyV2 实体在某些语言区域性中可用。

人的姓名

人的姓名可能会带有些许格式,具体取决于语言和区域性。 将预生成的 personName 实体或 简单实体 与包含姓和名的角色配合使用。

如果使用简单实体,请确保给出的示例在话语的不同部分、在不同长度的话语中以及在所有意向(包括“None”意向)的话语中使用姓氏和名字。 定期查看终结点陈述以标记未能正确预测的任何名称。

地名

地名是固定且已知的,例如市、县、州、省和国家/地区。 使用预生成的实体 geographyV2 提取位置信息。

新出现的名称

一些应用需要能够找到新出现的名称,例如产品或公司。 这些类型的名称是最难提取的数据类型。 首先从简单实体开始,添加一个短语列表。 定期查看终结点陈述以标记未能正确预测的任何名称。

Pattern.any 实体数据

Pattern.any 是一种长度可变的占位符,仅在模式的模板话语中使用,用于标记实体的起始和结束位置。 若要应用模式,必须找到模式中使用的实体。

情绪分析

如果在发布时配置了情绪分析,LUIS json 响应会包含情绪分析。 请在语言服务文档中详细了解情绪分析。

关键短语提取实体数据

关键短语提取实体返回陈述中的关键短语,由语言服务提供。

匹配多个实体的数据

LUIS 返回在陈述中发现的所有实体。 因此,聊天机器人可能需要基于这些结果进行决策。

匹配多个列表实体的数据

如果一个单词或短语与多个列表实体匹配,则终结点查询会返回每个列表实体。

对于查询 when is the best time to go to red rock?,如果该应用的多个列表中包含单词 red,LUIS 会识别所有实体,并返回一组实体作为 JSON 终结点响应的一部分。

后续步骤

请参阅添加实体,详细了解如何将实体添加到 LUIS 应用。