数据分三种:
- domain: ''
intent: hello
data:
- text: 你好
- domain: ''
intent: bye
data:
- text: 再见
- domain: ''
intent: thankyou
data:
- text: 谢谢
- domain: weather
intent: inform
data:
- text: 北京市
start: 0
end: 3
name: 城市
- text: 今天
start: 3
end: 5
name: 时间
- text: 的天气
每句话有三个主要部分:
如果我们单看一部分数据:
- domain: weather
intent: inform
data:
- text: 北京市
start: 0
end: 3
name: 城市
- text: 今天
start: 3
end: 5
name: 时间
- text: 的天气
这句话原本是:北京市今天的天气
而其中北京市和今天是需要提取的槽值
这句话的领域weather
,意图是inform
领域可以理解为,这句话的场景,这里是谈论天气。
意图可以理解为,不考虑场景的情况下,这句话的本质意义,这句话的本质意义是用户提供了一些信息给系统,希望系统能给出在天气领域内的回复。
这里的提供就变成了inform意图。
hello:
- user: hello
- sys: hello
bye:
- user: bye
- sys: bye
CLOSE_TODO2:
- user: todo::closeTodo()
- sys: requestNumber
- user: informNumber(数字)
- sys: closeTodo(数字)
首先对话流程中有一些一对一的回答,例如用户说你好,系统也给出相应的问候信息。
其次系统有一些多轮机制,例如我们要关闭(设置完成)一条TODO,我们需要给出具体TODO的编号。那么当我们告诉系统我想关闭一条TODO之后,系统应该问用户:要关闭哪一条,然后用户给出编号(数字)之后,系统才真的执行关闭某一条TODO。
None:
- 我不知道怎么理解
meetingStart:
- 开会会议记录
meetingEnd:
- 会议记录结束
hello:
- 你好啊,我是帕蒂安
bye:
- See You
NLG是系统行为到自然语言的转换,绝大部分时候和绝大部分情况,模板方法就足够了。