教程:在语言理解 (LUIS) 中使用机器学习实体从用户言语中提取结构化数据

在本教程中,使用机器学习实体从言语中提取结构化数据。

机器学习实体通过为子实体提供特性来支持模型分解概念

本教程介绍如何执行下列操作:

  • 导入示例应用
  • 添加机器学习实体
  • 添加子实体和功能
  • 训练、测试、发布应用
  • 从终结点获取实体预测

为什么使用机器学习实体?

本教程添加了机器学习实体,用于从用户言语中提取数据。

该实体定义要从言语中提取的数据。 这包括为数据提供名称、类型(如果可能)、任何数据的解析(如果有多义性)以及组成数据的确切文本。

若要定义数据,需要:

  • 创建实体
  • 在示例言语中标记表示实体的文本。 这些标记的示例告知 LUIS 什么是实体以及在言语中何处可以找到实体。

实体可分解性非常重要

实体可分解性对于使用实体进行意向预测和数据提取十分重要。

从机器学习实体开始操作,它是数据提取的起始、顶层实体。 然后,将实体分解为子实体。

刚开始创建应用时,你可能不知道需要多详细的实体,最佳做法是从机器学习实体开始,随着应用的成熟用子实体进行分解。

在本教程中,你将创建进行机器学习实体来表示披萨应用的订单。 实体将提取与订单相关的文本,从而提炼出大小和数量信息。

言语 Please deliver one large cheese pizza to me 应提取 one large cheese pizza 作为订单,然后提取 1 的数量和 large 的大小。

下载适用于应用的 JSON 文件

下载并保存应用 JSON 文件

导出适用于应用的 JSON 文件

  1. LUIS 门户上的“我的应用”页上,选择“+ 新建对话应用”,然后选择“导入为 JSON”。 查找上一步中保存的 JSON 文件。 无需更改应用的名称。 选择“完成”

  2. 在“管理”部分的“版本”选项卡上选择 0.1 版本,然后选择“克隆”以克隆该版本,并为其提供一个新的名称 ml-entity,然后选择“完成”以完成克隆流程 。 由于版本名称用作 URL 路由的一部分,因此该名称不能包含任何在 URL 中无效的字符。

    提示

    在修改应用之前,最佳做法是克隆到新版本。 更改完版本后,请将该版本导出为 .json 或 .lu 文件,然后将文件签入源代码管理系统中。

  3. 在屏幕顶部选择“生成”,然后在左侧导航菜单中单击“意向” 。 你将看到应用的意向,这是 LUIS 应用的主要构建基块。

创建机器学习实体

为了提取披萨订单的详细信息,创建顶层的机器学习 Order 实体。

  1. 在“意向”页上,选择“OrderPizza”意向 。

  2. 在示例言语列表中,选择以下言语。

    订单示例言语
    pickup a cheddar cheese pizza large with extra anchovies

    在第一个示例意向的文本上单击并拖动光标。 在出现的菜单中,输入实体的名称作为 Order。 然后从列表选择 Order Create new entity

    标记完整订单文本的开头和结尾

    备注

    实体不一定是整个言语。 在此特定示例中,pickup 指示如何接收订单。 从概念角度来看,pickup 应是订单的已标记实体的一部分。

  3. 在“选择实体类型”框中,选择“添加结构”,然后选择“下一步”。 结构是添加子实体(例如大小和数量)所必需的。

    屏幕截图显示了“选择实体类型”窗口,其中已选中“添加结构”选项。

  4. 在“添加子实体(可选)”框中,选择 Order 行上的 +,将 SizeQuantity 添加为子实体,然后选择“创建” 。

    屏幕截图显示了“添加子实体(可选)”窗口,其中突出显示了子实体。

编辑子实体以改进提取

上述步骤可以创建实体和子实体。 若要改进提取,请向子实体添加特性。

改进短语列表中的尺寸提取

  1. 从左侧菜单中选择“实体”,然后选择“订单”实体 。

  2. 在“架构和特性”选项卡上,选择“尺寸”子实体,然后选择“+ 添加特性” 。

  3. 在下拉菜单中选择“新建短语列表”。

  4. 在“创建新短语列表”框中,输入名称 SizePhraselist,然后输入 smallmediumlarge 值。 当填充“建议”框时,选择 extra largexl。 选择“创建”来创建新的短语列表。

    此短语列表功能通过提供示例字词,帮助 Size 子实体查找与大小相关的字词。 此短语列表不需要包含每个尺寸词,而应当包含预期指示尺寸的字词。

添加 SizeList 实体

添加客户端应用程序可以识别的已知尺寸列表也将有助于提取。

  1. 从左侧菜单中选择“实体”,然后选择“+ 创建” 。

  2. 将实体名称设置为 SizeListentity,并将“类型”设置为“列表”,以便在与前一个部分中创建的 SizePhraselist 进行比较时轻松识别它。

  3. 添加客户端应用程序预期的尺寸:SmallMediumLargeXLarge,然后为每个尺寸添加同义词。 同义词应该是用户在聊天机器人中输入的词语。 实体与规范化值或同义词完全匹配时,将提取出该实体以及列表实体。

    规范化值 同义词
    小型 sm、sml、tiny、smallest
    中型 md、mdm、regular、average、middle
    大型 lg、lrg、big
    XLarge xl、biggest、giant

    屏幕截图显示了 SizeList 窗口以及选择了“XLarge”的列表项。

添加 SizeList 实体的特性

  1. 从左侧菜单中选择“实体”,返回到实体列表。

  2. 从实体列表中选择“订单”。

  3. 在“架构和特性”选项卡上,选择“大小”实体,然后选择“+ 添加特性” 。

  4. 从下拉列表中选择“@ SizeListentity”。

添加预生成数字实体

添加预生成的数字实体也将有助于提取。

  1. 从左侧菜单中选择“实体”,然后选择“添加预生成实体” 。

  2. 从列表中选择“数字”,然后选择“完成” 。

  3. 从左侧菜单中选择“实体”,返回到实体列表。

为预生成的数字实体添加特性

  1. 从实体列表中选择“订单”。

  2. 在“架构和特性”选项卡上,选择“数量”实体,然后选择“+ 添加特性” 。

  3. 从下拉列表中选择“@ number”。

配置所需特性

在“订单”实体的实体详细信息页上,选择星号 *,其表示“@ SizeList”特性和“@ number”特性 。 星号显示在与特性名称相同的标签中。

屏幕截图显示了带有星号的 @SizeList 功能和“需要”警告。

标签示例言语

创建了机器学习实体,且子实体具有特性。 为完成对提取的改进,需要使用子实体标记示例言语。

  1. 在左侧导航栏中选择“意向”,然后选择“OrderPizza”意向 。

  2. 若要打开“实体调色板”,请在上下文工具栏中选择 @ 符号 。

  3. 选择调色板中的每个实体行,然后使用调色板光标选择每个示例言语中的实体。 完成操作后,实体列表应如下图所示。

    配置所需特性的部分屏幕截图

训练应用

若要训练应用,请选择“训练”。 训练会将更改(如新实体和已标记的言语)应用于活动模型。

添加新的示例言语

  1. 进行训练后,添加新的示例言语到 OrderPizza 意向,以查看 LUIS 对机器习得实体的理解程度。

    订单示例言语
    I need a large pepperoni pizza

    整个顶部实体 Order 已进行标记,Size 子实体也标有虚线。

    通过实体预测的新示例言语的部分屏幕截图

    虚线表示基于当前训练后应用的预测。

  2. 若要将预测更改为标记实体,请选择同一行中的复选标记。

    屏幕截图显示了一个突出显示勾选标记的示例话语。

    此时,机器学习实体有效,因为它可以在新的示例言语中找到该实体。 添加示例言语时,如果未正确预测实体,请标记实体和子实体。 如果正确预测了实体,请确保确认预测。

训练应用以将实体更改应用于应用

选择“训练”以使用这一新言语训练应用。

此时,订单有一些可提取的详细信息(大小、数量和订单总计文本)。 还可以进一步优化 Order 实体,如披萨浇汁、酥皮类型和配菜订单。 其中每一项应作为 Order 实体的子实体创建。

测试应用以验证更改

使用交互式“测试”面板测试应用。 在此过程中,可以输入新的言语,然后查看预测结果,以查看活动的和经过训练的应用的工作情况。 意向预测应相当有把握(超过 60%),实体提取应至少选取 Order 实体。 订单实体的详细信息可能缺失,因为这几个言语不足以处理所有情况。

  1. 选择顶部导航栏中的“测试”。

  2. 输入言语 2 small cheese pizzas for pickup,并选择 Enter。 活动模型通过超过 60% 的置信度预测正确意向。

  3. 选择“检查”以查看实体预测。

    在交互式测试面板中查看实体预测的部分屏幕截图。

发布应用以从 HTTP 终结点访问它

若要在聊天机器人或其他客户端应用程序中接收 LUIS 预测,需要将应用发布到终结点。

  1. 在右上方的导航栏中选择“发布”。

    右上方菜单中的“LUIS 发布到终结点”按钮的屏幕截图

  2. 依次选择“生产”槽、“更改设置”、“情绪分析”、“完成” 。

    “LUIS 发布到终结点”的屏幕截图

  3. 在通知中选择“访问终结点 URL”链接,转到“Azure 资源”页。 终结点 URL 作为“示例查询”列出。

从 HTTP 终结点获取意向和实体预测结果

  1. 在“Azure 资源”页(左侧菜单)的“管理”部分(右上方菜单)中,复制“示例查询”URL,然后粘贴到新的浏览器选项卡中 。

    终结点 URL 的格式如下所示,其中 APP-ID 和 KEY-ID 将替换为你自己的自定义子域、应用 ID 和终结点密钥:

    https://YOUR-CUSTOM-SUBDOMAIN.api.cognitive.azure.cn/luis/prediction/v3.0/apps/APP-ID/slots/production/predict?subscription-key=KEY-ID&verbose=true&show-all-intents=true&log=true&query=YOUR_QUERY_HERE
    
  2. 在地址栏中转到 URL 的末尾,将 YOUR_QUERY_HERE 替换为在交互式测试面板中输入的相同查询。

    2 small cheese pizzas for pickup

    最后一个查询字符串参数为 query,表示陈述 查询

    {
        "query": "2 small cheese pizzas for pickup",
        "prediction": {
            "topIntent": "OrderPizza",
            "intents": {
                "OrderPizza": {
                    "score": 0.7812769
                },
                "None": {
                    "score": 0.0314020254
                },
                "Confirm": {
                    "score": 0.009299271
                },
                "Greeting": {
                    "score": 0.007551549
                }
            },
            "entities": {
                "Order": [
                    {
                        "Size": [
                            "small"
                        ],
                        "Quantity": [
                            2
                        ]
                    }
                ]
            }
        },
        "sentimentAnalysis":{
            "label":"neutral",
            "score":0.98
       }
    }
    

清理资源

不再需要 LUIS 应用时,请将其删除。 为此,请在左上角的菜单中选择“我的应用”。 在应用列表中选择应用名称右侧的省略号 (...),然后选择“删除”。 在弹出的“删除应用?”对话框中,选择“确定” 。

后续步骤

在本教程中,应用使用机器学习实体来查找用户言语的意向,并从该言语中提取详细信息。 使用机器学习实体可以分解实体的详细信息。