Snips NLU内置实体解析指南
什么是内置实体
在Snips NLU自然语言理解框架中,内置实体(Builtin Entities)是指那些系统已经预先定义好、可以直接使用的实体类型。这些实体类型都配备了专门的解析器,能够将自然语言表达转换为结构化的数据格式。
例如,当用户说"三天后"时,系统可以将其解析为标准化的ISO日期格式"2019-08-12 00:00:00 +02:00"。这种能力对于构建对话系统和语音助手至关重要。
内置实体分类
Snips NLU中的内置实体主要分为两大类:
1. 语法实体(Grammar Entities)
语法实体是指那些具有明显组合结构的实体类型。这类实体的语义含义由其组成表达式的含义和组合规则共同决定。Snips NLU使用Rustling解析器来处理这类实体,它是Facebook Duckling项目的Rust实现版本。
语法实体包括:
- 金额(AmountOfMoney)
- 持续时间(Duration)
- 数字(Number)
- 序数(Ordinal)
- 温度(Temperature)
- 日期时间(Datetime)
- 日期(Date)
- 时间(Time)
- 日期区间(DatePeriod)
- 时间区间(TimePeriod)
- 百分比(Percentage)
2. 地名录实体(Gazetteer Entities)
地名录实体是指那些没有明显语义结构的实体类型,通常是一些固定的名称列表。Snips NLU使用专门的地名录实体解析器来处理这类实体。
地名录实体包括:
- 音乐专辑(MusicAlbum)
- 音乐艺术家(MusicArtist)
- 音乐曲目(MusicTrack)
- 城市(City)
- 国家(Country)
- 地区(Region)
各实体详细解析示例
金额(AmountOfMoney)
输入示例:
- "$10"
- "six euros"
- "around 5€"
- "ten dollars and five cents"
输出结构:
{
"kind": "AmountOfMoney",
"value": 10.05,
"precision": "Approximate",
"unit": "€"
}
持续时间(Duration)
输入示例:
- "1h"
- "during two minutes"
- "for 20 seconds"
- "3 months"
- "half an hour"
- "8 years and two days"
输出结构:
{
"kind": "Duration",
"years": 0,
"quarters": 0,
"months": 3,
"weeks": 0,
"days": 0,
"hours": 0,
"minutes": 0,
"seconds": 0,
"precision": "Exact"
}
数字(Number)
输入示例:
- "2001"
- "twenty one"
- "three hundred and four"
输出结构:
{
"kind": "Number",
"value": 42.0
}
序数(Ordinal)
输入示例:
- "1st"
- "the second"
- "the twenty third"
输出结构:
{
"kind": "Ordinal",
"value": 2
}
温度(Temperature)
输入示例:
- "70K"
- "3°C"
- "Twenty three degrees"
- "one hundred degrees fahrenheit"
输出结构:
{
"kind": "Temperature",
"value": 23.0,
"unit": "celsius"
}
日期时间(Datetime)
输入示例:
- "Today"
- "at 8 a.m."
- "4:30 pm"
- "in 1 hour"
- "the 3rd tuesday of June"
输出结构:
{
"kind": "InstantTime",
"value": "2017-06-13 18:00:00 +02:00",
"grain": "Hour",
"precision": "Exact"
}
音乐专辑(MusicAlbum)
输入示例:
- "Discovery"
输出结构:
{
"kind": "MusicAlbum",
"value": "Discovery"
}
城市(City)
输入示例:
- "San Francisco"
- "Los Angeles"
- "Beijing"
- "Paris"
输出结构:
{
"kind": "City",
"value": "Paris"
}
语言支持情况
不同的内置实体支持的语言有所不同:
- 德语(de)
- 英语(en)
- 西班牙语(es)
- 法语(fr)
- 意大利语(it)
- 日语(ja)
- 韩语(ko)
- 巴西葡萄牙语(pt_br)
- 葡萄牙葡萄牙语(pt_pt)
具体每种实体支持的语言请参考官方文档中的详细表格。
使用建议
- 在构建意图时,优先考虑使用内置实体,因为它们已经经过充分测试和优化
- 注意检查所需实体在目标语言中的支持情况
- 对于语法实体,可以充分利用其组合性特点,支持更灵活的自然语言表达
- 对于地名录实体,可以考虑扩展系统提供的默认列表以提高识别准确率
通过合理利用Snips NLU提供的内置实体,开发者可以快速构建出强大的自然语言理解能力,而无需从零开始实现这些常见实体的解析逻辑。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考