实体组件
在对话语言理解中,实体是指从言语中提取的相关信息片段。 可通过不同的方法提取实体。 可通过上下文学习实体、从列表中匹配实体,或者通过预生成的已识别的实体检测实体。 项目中的每个实体都由这些方法中的一种或多种组成,这些方法被定义为实体的组件。
当实体由多个组件定义时,其预测可能会重叠。 可以使用“实体选项”中的一组固定选项来确定实体预测在其组件重叠时的行为。
实体组件确定提取实体的方法。 实体可以包含一个组件,以此确定用于提取实体的唯一方法。 实体还可以包含多个组件来扩展定义和提取实体的方法。
习得组件使用标记言语的实体标记来训练机器学习的模型。 模型会学习根据语句中的上下文来预测实体的所在位置。 标签举例说明了实体在言语中应出现的位置,具体基于实体周围的单词的含义和被标记单词的含义。
只有当你通过标记实体的言语来添加标签时,才会定义此组件。 如果不使用实体标记任何言语,它将没有习得组件。
列表组件表示一组固定、封闭的相关单词及其同义词。 该组件根据你作为同义词提供的值列表执行精确的文本匹配。 每个同义词属于一个“列表键”,该项可用作同义词的规范化标准值,如果列表组件匹配,则该值将在输出中返回。 列表键不用于匹配。
在多语言项目中,可为每种语言指定一组不同的同义词。 使用预测 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。 可以标记产品的习得组件,以根据产品在句子中的位置来了解它位于何处。 你还可能事先知道始终要提取的产品列表。 将两个组件合并到一个实体可以获取实体的这两个选项。
不合并组件时,可以允许每个组件充当独立的实体提取器。 此选项的用法之一是将从列表中提取的实体与通过习得组件或预生成组件提取的实体分开,以区别处理和对待它们。
备注
先前在该服务的公共预览版中提供四个可用选项:“最长重叠”、“精确重叠”、“并集重叠”和“单独全部返回”。 “最长重叠”和“精确重叠”已弃用,仅受过去选择了这些选项的项目的支持。 “并集重叠”已重命名为“合并组件”,而“单独全部返回”已重命名为“不合并组件”。