本文意在记载自学过程中遇到的细节问题。相关网址
一、rules.yml
1、编写剧本和规则时冒号:不能用中文
错误示例(可以复制到rules.yml中观察二者区别):
- rule: 通过城市激活天气情况
steps:
- intent: 城市
- action: weather_form
正确示例:
- rule: 通过城市激活天气情况
steps:
- intent: 城市
- action: weather_form
2、冒号:后有空格才能将冒号前面的字符视为命令
错误示例:
- rule: 通过城市激活天气情况
steps:
- intent:城市
- action: weather_form
正确示例:
- rule: 通过城市激活天气情况
steps:
- intent: 城市
- action: weather_form
二、nlu.yml
1、枚举法编写
意图+实例
- intent: 性别
examples: |
- 你是男的?
- 你是男的
- 你是女的
- 你的性别?
- 你是男还是女
2、枚举替换法(自己命名的)
..........[实体](属性)......[实体](属性)......
- intent: 问路
examples: |
- 请问[西湖](位置)怎么走?
- 我想请问[灵隐寺](位置)怎么走?
- 请问[西湖](位置)或者是[灵隐寺](位置)怎么走?
3、正则匹配法
正则表达式匹配问题意图(regex正则表达式,需要正则表达式实体提取器提取)
- regex: 城市
examples: |
- (.{2,4}省)?.{2,4}市
- regex: 日期
examples: |
- [前昨今明后]天
三、nlu.yml与rules.yml、stories.yml的联系
在nlu.yml中定义意图(由examples中的内容匹配相应的意图),进行意图识别,获取意图后
在rules.yml和stories.yml中定义每个意图的动作名(注意:是动作名不是动作)并定义插槽名和循环表单名
nlu.yml中:
- regex: 城市
examples: |
- (.{2,4}省)?.{2,4}市
rulues.yml中:
- rule: 通过城市激活天气情况
steps:
- intent: 城市
- action: weather_form
- slot_was_set:
- requested_slot: city
- active_loop: weather_form
还想提一嘴,插槽slot_was_set和表单active_loop必然是同时存在的,有了插槽才能实现多轮对话。他们的关系是:通过表单不断询问插槽中未知的信息,直到插槽填满。
以上是基础理解后续会更新理解.
求个三连.