Snips NLU内置实体解析指南

Snips NLU内置实体解析指南

snips-nlu Snips Python library to extract meaning from text snips-nlu 项目地址: https://gitcode.com/gh_mirrors/sn/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)

具体每种实体支持的语言请参考官方文档中的详细表格。

使用建议

  1. 在构建意图时,优先考虑使用内置实体,因为它们已经经过充分测试和优化
  2. 注意检查所需实体在目标语言中的支持情况
  3. 对于语法实体,可以充分利用其组合性特点,支持更灵活的自然语言表达
  4. 对于地名录实体,可以考虑扩展系统提供的默认列表以提高识别准确率

通过合理利用Snips NLU提供的内置实体,开发者可以快速构建出强大的自然语言理解能力,而无需从零开始实现这些常见实体的解析逻辑。

snips-nlu Snips Python library to extract meaning from text snips-nlu 项目地址: https://gitcode.com/gh_mirrors/sn/snips-nlu

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈宝彤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值