在对话语言理解中,实体是指从言语中提取的相关信息片段。 可以使用多种不同的方法提取实体。 实体可以通过上下文检测、从列表中识别或通过预生成的已识别实体进行检测。 项目中的每个实体都由这些方法中的一种或多种组成,这些方法被定义为实体的组件。
当多个组件定义实体时,预测可能会重叠。 可以使用“实体选项”中的一组固定选项来确定实体预测在其组件重叠时的行为。
组件类型
实体组件确定提取实体的方法。 实体可以包含一个组件,以此确定用于提取实体的唯一方法。 实体还可以包含多个组件来扩展定义和提取实体的方法。
已学习组件
习得组件使用标记言语的实体标记来训练机器学习的模型。 模型会学习根据语句中的上下文来预测实体的所在位置。 这些标签提供了实体在语句中预期出现的示例。 此决策基于周围单词的含义以及被标记词汇的含义。
只有当你通过标记实体的言语来添加标签时,才会定义此组件。 如果不使用实体标记任何言语,它将没有习得组件。
列表组件
列表组件表示一组固定、封闭的相关单词及其同义词。 该组件根据你作为同义词提供的值列表执行精确的文本匹配。 每个同义词属于一个“列表键”,该项可用作同义词的规范化标准值,如果列表组件匹配,则该值将在输出中返回。 列表键不用于匹配。
在多语言项目中,可为每种语言指定一组不同的同义词。 使用预测 API 时,可以在输入请求中指定语言,这样就只会与该语言关联的同义词进行匹配。
预生成组件
通过预生成组件,你可以从常见类型库(如数字、日期时间、名称)中选择。 添加预生成组件时,将自动进行检测。 每个实体最多可以包含 5 个预生成组件。 有关详细信息,请参阅支持的预生成组件列表。
正则表达式组件
正则表达式组件匹配正则表达式用于捕获一致的模式。 添加后,将提取与正则表达式匹配的任何文本。 在同一实体中可有多个正则表达式,每个正则表达式具有不同的键标识符。 匹配的表达式将返回键作为预测响应的一部分。
在多语言项目中,可为每种语言指定一个不同的表达式。 使用预测 API 时,可以在输入请求中指定语言,这样就只会匹配与该语言关联的正则表达式。
实体选项
如果多个组件定义实体,则其预测可能会重叠。 发生重叠时,以下选项之一决定了每个实体的最终预测:
合并组件
当组件重叠时,可以通过取所有组件的并集,将组件合并成一个实体。
使用此选项可以合并重叠的所有组件。 组合组件时,将获取与列表或预生成组件关联的所有额外信息(如果存在)。
示例
假设你有一个名为 Software 的实体,该实体具有一个包含“Proseware OS”作为条目的列表组件。 语句数据包含“I want to buy Proseware OS 9”,其中的“Proseware OS 9”标记为软件 (Software):
使用合并组件,实体将以“Proseware OS 9”返回完整上下文,以及列表组件中的键:
假设你有相同的表达,但只有“OS 9”会预测学到的组件。
使用合并组件,该实体仍以“Proseware OS 9”返回,以及列表组件中的键:
请勿合并组件
每个重叠的组件将作为实体的单独实例返回。 使用此选项做出预测后应用你自己的逻辑。
示例
假设你有一个名为 Software 的实体,该实体具有一个包含“Proseware Desktop”作为条目的列表组件。 语句数据包含“I want to buy Proseware Desktop Pro”,其中的“Proseware Desktop Pro”标记为 Software:
如果不合并组件,实体将返回两次:
必需的组件
有时,可以使用多个组件定义一个实体,但实体需要至少存在一个或多个组件。 可以将任何组件标记为 必需,这意味着系统 不会 返回实体,除非该组件存在。 例如,如果实体具有列表组件和 必需的 学习组件,则系统保证任何返回的实体都包含已学习的组件。 如果实体没有所需的组件,则系统不会返回它。
必需的组件最常与习得组件一起使用,因为它们可以将其他组件类型限制为特定上下文,这通常与角色相关联。 还可以要求所有组件以确保实体的每个组件都存在。
在 Language Studio 中,实体中的每个组件旁都有一个切换开关,允许你根据需要进行设置。
示例
假设你有一个名为“Ticket Quantity”的实体,它尝试提取要为航班预留的机票数量,诸如“预订两张明天到开罗的机票”这样的语句。
通常会为 Quantity.Number
添加已提取所有数字的预生成组件。 如果实体仅由预生成组件定义,它还将提取其他数字作为“机票数量”实体的一部分,例如“预订两张明天下午 3 点飞往开罗的机票”。
若要解决此问题,请在训练数据中为所有应该是“机票数量”的数字标记习得组件。 实体现有两个组件:一个是知道所有数字的预生成组件,另一个是预测语句中机票数量位置的习得组件。 如果需要习得组件,请确保只有当习得组件在正确的上下文中预测“机票数量”时,机票数量才会返回。 如果还需要预生成组件,那么可以保证返回的“机票数量”实体既是数字又位于正确的位置。
使用组件和选项
使用组件可以灵活地以多种方式定义实体。 合并组件时,需确保表示每个组件,并减少预测中返回的实体数量。
一种常见做法是使用预生成组件可能不支持的值列表来扩展该预生成组件。 例如,如果你有一个 Organization 实体,其中添加了一个 预生成组件,那么,该实体可能无法预测特定于你的域的所有组织General.Organization
。 可以使用列表组件来扩展 Organization 实体的值,从而扩展你自己的组织的预生成组件。
有时,你可能希望通过上下文来提取某个实体,例如零售项目中的 Product。 可以标记产品的习得组件,以根据产品在句子中的位置来了解它位于何处。 你还可能事先知道始终要提取的产品列表。 将两个组件合并到一个实体可以获取实体的这两个选项。
不合并组件时,可以允许每个组件充当独立的实体提取器。 此选项的用法之一是将从列表中提取的实体与通过习得组件或预生成组件提取的实体分开,以区别处理和对待它们。
注意
先前在该服务的公共预览版中提供四个可用选项:“最长重叠”、“精确重叠”、“并集重叠”和“单独全部返回”。 “最长重叠”和“精确重叠”已弃用,仅受过去选择了这些选项的项目的支持。 联合重叠 重命名为 合并组件,而 全部单独返回 重命名为 不合并组件。