定义意向、言语和实体
语句是用户在与使用语言模型的应用程序进行交互时可能输入的短语。 意向表示用户想执行的任务或操作,或更简单地表示言语的含义。 通过定义意向并将其与一个或多个言语关联来创建模型。
例如,考虑下面包含意向和关联言语的列表:
- GetTime:
- “What time is it?”
- “What is the time?”
- “Tell me the time”
- GetWeather:
- “What is the weather forecast?”
- “Do I need an umbrella?”
- “Will it snow?”
- TurnOnDevice
- “Turn the light on.”
- “Switch on the light.”
- “Turn on the fan”
- 无:
- "Hello"
- “Goodbye”
在你的模型中,你必须定义你希望模型能够理解的意向,因此请花一些时间思考模型必须支持的领域,以及用户可能请求的操作或信息类型。 除了你定义的意向之外,每个模型还包括“无”意向,应使用该意向来显式标识用户可能提交的言语,但不需要为其执行特定操作(例如,“hello”之类的对话问候语)或超出此模型的域范围。
确定模型必须支持的目标后,务必要为每个意向捕获各种不同的示例言语。 收集你认为用户将输入的言语;包括含义相同,但用不同方式构造而成的言语。 请牢记这些准则:
- 捕获多个不同的示例或同一事物的不同说法
- 采用不同的言语长度:短、中、长
- 使言语中的名词或主体位于不同位置。 将其放在开头、末尾或中间
- 在不同的言语中使用正确的和不正确的语法来提供良好的训练数据示例
- 标记数据的精度、一致性和完整性是确定模型性能的关键因素。
- 精确标记:始终将每个实体标记为正确的类型。 仅包含要提取的内容,避免标签中出现不必要的数据。
- 一致标记:同一实体在所有语句中都应具有相同的标记。
- 完全标记:标记所有语句中实体的所有实例。
实体用于向意向添加特定上下文。 例如,可以定义可应用于多个设备的 TurnOnDevice 意向,并使用实体定义不同的设备。
请考虑以下言语、意向和实体:
话语 | 意向 | 实体 |
---|---|---|
What is the time? | GetTime | |
What time is it in London? | GetTime | Location (London) |
What's the weather forecast for Paris? | GetWeather | Location (Paris) |
Will I need an umbrella tonight? | GetWeather | Time (tonight) |
What's the forecast for Seattle tomorrow? | GetWeather | Location (Seattle), Time (tomorrow) |
Turn the light on. | TurnOnDevice | Device (light) |
Switch on the fan. | TurnOnDevice | Device (fan) |
可以将实体拆分为几个不同的组件类型:
- 学习实体是最灵活的实体类型,应在大多数情况下使用。 使用合适的名称定义学习组件,然后在训练言语中将单词或短语与该实体关联。 训练模型时,将了解如何将言语中的相应元素与实体匹配。
- 当需要具有一组特定可能值(例如,一周中的几天)的实体时,列表实体非常有用。 可以在列表实体定义中包括同义词,以便可以定义包括“Sunday”、“Monday”、“Tuesday”等值的 DayOfWeek 实体;每个都有同义词,例如“Sun”、“Mon”、“Tue”等。
- 预生成的实体对于数字、日期/时间和名称等常见类型非常有用。 例如,添加预生成组件时,会自动检测“6”等值或“Microsoft”等组织。 有关受支持的预生成实体的列表,请参阅本文。