在nlu中,除了intent,某些特殊场景下需要使用同义词、查找表、正则表达式字段,来使实体提取更准确。
同义词字段
具有synonym键表明当前的对象是用来存储同义词信息的。
同义词的作用是,当一个实体有多种叫法的时候,可以将多种叫法转成一个正式的叫法,并替换到实体中,方便后续的action操作。如蟾蜍有很多民间叫法(癞蛤蟆),但是查询数据库时,只能用蟾蜍。
在启动EntitySynonymMapper组件的情况下,推理时会将得到的实体值的同义词替换成它的“标准词”。
注意:同义词映射只发生在实体被提取之后。这意味着您的训练示例应包括同义词示例 (西红柿、洋柿子),以便模型学习将这些识别为实体并将它们替换为 番茄。
下面是同义词配置的完整示例。
- intent: query_vegetables_price
examples: |
- [番茄](vegetables)多少钱一斤
- [番茄](vegetables)怎么卖
- [番茄](vegetables)什么价
- [西红柿](vegetables)多少钱一斤
- [西红柿](vegetables)怎么卖
- [西红柿](vegetables)什么价
- [洋柿子](vegetables)多少钱一斤
- [洋柿子](vegetables)怎么卖
- [洋柿子](vegetables)什么价
- [蕃茄](vegetables)多少钱一斤
- [蕃茄](vegetables)怎么卖
- [蕃茄](vegetables)什么价
- synonym: 番茄
examples: |
- 番茄
- 西红柿
- 洋柿子
- 蕃茄
注意,使用同义词,需要在pipline中增加EntitySynonymMapper。
pipeline:
- name: JiebaTokenizer

文章介绍了在RasaNLU中如何利用同义词、查找表和正则表达式字段来优化实体提取。同义词用于将不同叫法转换为标准词,查找表用于匹配固定实体,正则表达式则提供基于模式的实体匹配。配置EntitySynonymMapper和RegexEntityExtractor组件,并调整pipeline顺序和优先级,可以解决实体重复提取问题。
最低0.47元/天 解锁文章
850

被折叠的 条评论
为什么被折叠?



