随着智能手机和智能系统的飞速发展, 使用自然语言对话的人机交互方式也成为了流行趋势. 但是如果该对话系统需要处理多功能任务类型, 那么将产生复杂的任务命令, 问题的维度也会增加. 尽管目前的NLP技术能提供一些解决方案, 但在动态范围内实现动态任务命令识别与处理的能力仍然有限, 解决复杂问题的效果还有待提高. 因此, 在本项工作中, 提供了一种结合NLP引擎和任务计划单元的方法, 根据自然语言的指令来设定任务计划, 以便对话系统能较准确地识别命令任务和相关参数, 并为任务生成相应的合理计划. 同时, 为解决自然语言对话中信息的歧义或遗漏, 还研究了一种对话策略, 在必要时能以最少的问答迭代收集对话信息.
The rapid development of smartphones and smart operating systems boosts the prevalence of natural language conversations in human-machine interactions. In the case of multiple-function tasks, however, the conversation system will generate a complex task command, and a variety of problems will arise. The current NLP technology can provide some solutions, but its capability to dynamically recognize and process task commands is insufficient in solving complex problems. In this study, we propose a solution that combines the NLP engine and task scheduling unit. Specifically, natural language commands are used for task scheduling, and thus the conversation system can accurately recognize command tasks and related parameters and generate a rational schedule for the tasks. In addition, a conversation strategy is proposed to address ambiguity or information omission in the natural language conversation, by which conversation information can be collected with minimum question-answering iterations when necessary.
随着智能设备和人机交互技术的发展, 如“Siri”“小度”等使用自然语言的人机对话系统逐渐出现在各类型智能设备中, 给人们的生活带来了便利[
一个人机对话系统在获得自然语言指令后, 通常会按以下的步骤进行任务识别和处理, 如
自然语言人机对话系统基本构架
在自然语言理解方面已经有了大量研究和工作, 在这里着重探讨关于人机交互指令的理解, 以及在处理模棱两可或不完整任务指令的问题.
在早期的一些研究中, Lauria等人尝试了自然语言给出的导航指令, 其中将任务转换为一阶逻辑形式和语义树结构, 以提取动作过程和相应的参数[
将基于丰富词法资源的语义解释器用于理解通用的自然语言指令也有尝试, 例如FrameNet[
Thomas等人提出了RoboFrameNet[
在近期的一些研究中, Antunes等人提出了一种基于概率计划的体系结构, 以尝试针对子任务失败以及子目标的重新排序而采取不同的措施, 从而生成复杂任务的计划[
在实际应用中, 经常会基于WordNet通过单词相似性度量来处理理解包含新动词的指令[
“对话任务代理”器模型由4个主要部分组成.
(1) 处理对话系统与用户之间双向交互的对话引擎;
(2) 任务标识符, 该标识符标识预期任务和交互中的相关参数;
(3) 一个计划生成器, 用于为给定任务生成有效的计划;
(4) 知识库, 其中包含对话系统正在运行的世界规则模型以及用于计划生成的任务模板.
对话引擎由一组通用的NLP工具集组成(可以使用基于深度学习的TensorFlow或者PaddlePaddle等框架), 该工具集对用户发出的自然语言指令进行分词和功能提取, 并且设定一个问题框架制定相关问题, 以解决任务理解中的歧义. 例如, 如果用户说“播放一首王某的歌”, 则NLP工具会对其进行分词处理, 得到以下具有语法特征的输出:
(播放, 动词, 中心词), (一首, 数量词, 定语), (王某, 名词, 定语), (的, 助词, 定语), (歌, 名词, 宾语)
为了消除歧义并理解NLP工具集提供的语义信息, 对话系统和人类必须形成顺畅的沟通, 即使人类用自然语言发出指令, 也可以将其转换为计算机可以存储和处理的中间表示形式. 我们使用了基于FrameNet框架[
[播放]激活[一首王某的]来源[歌]主题
同时可以设计一个分类器来识别框架和框架元素. 如果分类器无法获取足够的判别信息, 则会向用户询问相关问题, 以解决歧义和信息不足的问题.
在人类预期的任务指令与计算机所能支持的原始动作之间通常无法进行一对一映射, 因为某些高级任务目标会包含一系列子任务. 所以, 为实现任务计划, 必须让计算机理解用户真实意图, 使任务能够以初始状态迁移至不同的目标状态.
规划域定义语言(PDDL)[
知识库存储世界规则模型和任务模板. 与“Temporal Grounding Graph”模型的世界状态的感知基础模型相似[
为了实现对任务命令识别和计划的目标, 以及保持技术的先进性, 本次研究提出了3个核心的组成功能.
任务标识符的作用是在给定一段句法标记的文本后, 识别预期的任务及其相应的参数, 并将单词或短语分类为任务类型或任务参数. 为此, 我们参考了“条件随机场” (CRF)模型, 该模型结合了最大熵模型和隐马尔可夫模型的特点, 近年来在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果[
在任务类型识别阶段, 训练数据如下表示:
句子
在参数提取阶段, 训练数据如下表示:
其中,
用于任务类型识别的CRF模型定义了如下的条件概率分布:
其中,
对于参数提取阶段, CRF模型定义以下条件概率分布:
最后, 使用词汇和语法特征来预测任务和参数类型. 词汇特征包括单词本身、词根以及单词的上下文. 语法特征包括词和上下文词的词性以及句法依赖性.
即使准确定义了任务标识符, 但当用户以自然语言进行指令传递时, 仍有可产生歧义而导致识别失败或错误预测. 现有的任务识别模型通常使用指令中存在的动词和动词周围的语言特征进行训练[
针对以上情况, 这里提出一种对话策略以解决上述问题. 对于给定的指令, 识别任务可以通过动词和充当动词自变量的名词短语共同表征, 并利用数据集中存在的这些任务与参数关系(使用训练解析器的同一数据集)来估计已知任务被传递的可能性. 给定一个句子
可以使用以下过程估算
这个模型与参数提取模型的不同之处在于, 该模型可预测每个单词(
然后, 将预测的
为了回答用户有关任务类型定义的问题, 模型为每种任务类型设置一个问题模板, 可以将参数类型预测模型预测的结果填充到模板中. 例如, 如果要求非专业用户清楚查询任务的含义, 则使用模板“是否要我在[ 主题 ]中查询[ 目标 ]”. 例如:
询问1: 查询张三
回答1: 这个任务类似于查找吗?
询问2: 我不明白
回答2: 你要我在通讯录中查询张三名片吗?
询问3: 是的
回答3: 明白了
当确定对话缺少参数时, 就可以使用类似的模板来提问. 非专业用户指定的高级任务也可以由已知任务组成, 这时模型具有与用户进行交互以提取已知任务序列的能力. 在这种对话情况下, 系统会要求用户说出执行高级任务的步骤. 然后, 将响应视为包含多个序列化任务的单个指令, 将其作为输入来生成计划.
一个任务其实就是自然语言指令表示的一个可被实现的目标, 任务也可被假定为由任务的初始状态表示的世界状态给出. 为了更好表达和实现任务计划, 我们采用PDDL进行任务计划的描述, 并且按PDDL规则将每种任务类型的初始状态和目标状态的模板存储在知识库中.
在PDDL中生成初始状态和目标状态的模板示例
任务 | 初始状态模板 | 目标状态模板 |
bring | hasobject (源, 主题) | hasobject (目标, 主题) |
move | ø | at-room (目标) |
pick | free (主题) | hasobject (目标, 主题) |
drop | hasobject (源, 主题) | free (主题) |
在此类模板中, 可以通过使用从指令中提取的参数将抽取的变量进行定义, 然后再用世界模型进行验证, 从而生成计划问题的初始状态和目标状态. 通常基于PDDL域的谓词并根据建模任务的框架的定义来创建模板.
如果人机对话系统能自主工作, 那么它将持续接受来自人类用户的新任务并执行这些任务. 在为新任务生成计划问题时, 将使用世界模型来验证假定的初始状态, 并能使计划中的状态转换算子后置条件建模和世界状态的编码更加流畅.
算法1显示了生成计划任务的完整过程. 对于一个已序列化, 且包含要实现的多个任务目标说明, 可以通过保留指令中所有任务的世界状态上下文来处理此类复合指令. 存储的模板机制还可以对新任务的集成或迁移进行简化, 并通过引入新模板以及PDDL域中的谓词和状态转换运算符来添加新任务.
算法1. 生成PDDL计划任务
1) 输入: 目标状态模板:
2) 初始化: 初始状态=
3) while(
从
grounded_atom = ground(template_atom,
while(
从
if(fluent与grounded_atom矛盾){
新增fluent到初始状态;
}
else
{
新增grounded_atom到初始状态;
}
}
while(
从
grounded_atom = ground(template_atom,
新增template_atom到目标状态;
}
}
4) 输出: 初始状态, 目标状态
为了验证和评估系统, 我们使用了中文公开对话语料库chinese_chatbot_corpus[
通过与中文公开对话语料库数据集中的注解进行比较, 系统的框架语义解析器可以从389个类指令语句中识别到436个任务, 且经过比对, 其中412个任务符合正确含义, 平均总正确率为94.49% (如
任务识别和计划生成的不同方法
系统 | 任务识别方法 | 计划生成方法 |
基准系统 | 仅使用语义解析器 | 使用静态模板 |
交互任务理解 | 使用解析器的同时, 加入交互信息的对话 | 使用静态模板 |
使用上下文规划的
|
使用解析器的同时, 加入交互信息的对话 | 使用世界模型更新的模板 |
完整的计划生成模型 | 使用共引解析器和对话解析器 | 使用世界模型更新的模板 |
系统在中文公开对话语料库上进行任务识别的性能
组别 | 指令数 | 任务数 | 正确的预测数 | 预测率 (%) |
chatterbot | 143 | 162 | 150 | 93.75 |
青云语料 | 114 | 127 | 120 | 94.48 |
小黄鸡语料 | 112 | 126 | 122 | 96.82 |
微博语料 | 20 | 21 | 20 | 95.23 |
总计 | 389 | 436 | 412 | 94.49 |
在任务识别的基础上, 我们进一步进行了任务计划生成的测试(如
系统在中文公开对话语料库上进行计划生成的性能
系统 (平均生成率) | 生成计划数 | 生成率 (%) | 组别 |
基准系统 (41.01%) | 94 | 58.02 | chatterbot |
52 | 40.94 | 青云语料 | |
34 | 26.98 | 小黄鸡语料 | |
8 | 38.09 | 微博语料 | |
交互任务理解 (73.02%) | 123 | 75.93 | chatterbot |
92 | 72.44 | 青云语料 | |
90 | 71.43 | 小黄鸡语料 | |
16 | 76.19 | 微博语料 | |
使用上下文规划的交互任务
|
131 | 80.86 | chatterbot |
101 | 79.52 | 青云语料 | |
103 | 81.74 | 小黄鸡语料 | |
18 | 85.71 | 微博语料 | |
完整的计划生成模型 (92.01%) | 150 | 92.59 | chatterbot |
119 | 93.7 | 青云语料 | |
109 | 86.5 | 小黄鸡语料 | |
20 | 95.24 | 微博语料 |
从测试可以发现即使有较高的任务预测率, 但是由于基准系统不使用对话来获取缺少的信息, 并且使用了静态模板, 不会为多个目标状态冲突的任务指令生成计划. 基所以准系统的计划生成性能较低(平均生成率仅41.01%).
在交互任务理解系统中, 通过添加对话模块以获取缺少的参数可以在一定程度上解决了指令不完整的问题, 系统使用对话策略来引导模糊指令的识别分析, 生成计划的有效率得到了提高(平均生成率为58.75%), 一定程度上解决了指令不完整的问题. 但是使用静态模板无法处理需要上下文相关计划的复杂指令, 于是在增加了上下文规划的交互任务理解模型中, 并使用了基于世界模型的动态更新模板, 使得计划生成率进一步提高(平均生成率为73.04%).
最后, 通过在系统中使用了共引解析, 把指代相同对象的名词归类指向同一个实体. 系统生成了353个任务计划, 获得了较好的计划生成率(平均生成率为92.01%), 这也与正确的任务识别率(94.49%)相接近.
我们也寻求了正确预测任务但未生成有效计划的原因, 主要是包含在测试数据中已经存在的参数未能有效地析出; 其次在某些情况下, 由于错误地假定上下文, 任务的计划失败会导致同一指令中的从属任务也失败.
在本次工作中, 研究了人机对话系统的任务对话代理模型, 该代理根据自然语言指令执行任务计划, 并提出了一种方法来整合自然语言解析器和对话代理的自动计划器. 为了实现该方法, 我们开发了一种语言理解模型来识别预期的任务和相关的参数, 同时研究了一种对话策略, 对模棱两可的指示进行识别, 以完成与人机对话的互动. 测试和评估表明系统能基于知识库的上下文感知推理完成与生成计划的对话, 并且能以较少的询问获得有意义的问题. 在后续的研究中, 可以对该系统进行进一步的扩展, 例如加入概率和分层计划, 还可以基于更丰富的知识库进行推理, 以期获得更好的对话效果和任务计划识别.
车万翔, 张伟男. 人机对话系统综述. 人工智能, 2018, (1): 76–82.
et al. Learning to parse natural language commands to a robot control system. In: Desai JP, Dudek G, Khatib O,
高志伟, 何伟. 特定任务域中基于自然语言的人机对话模型研究. 石家庄铁道学院学报, 2000, 13(2): 44–47.
Lam C, Hannah MA. The social help desk: Examining how Twitter is used as a technical support tool. Communication Design Quarterly, 2016, 4(2): 37–51.
et al. Automatic conversational helpdesk solution using Seq2Seq and slot-filling models. Proceedings of the 27th ACM International Conference on Information and Knowledge Management. Atlanta: ACM, 2018. 1967–1975.]]>
刘娇, 李艳玲, 林民. 人机对话系统中意图识别方法综述. 计算机工程与应用, 2019, 55(12): 1–7, 43.
et al. Converting natural language route instructions into robot executable procedures. Proceedings of the 11th IEEE International Workshop on Robot and Human Interactive Communication. Berlin, Heidelberg: IEEE, 2002. 223–228.]]>
Fillmore CJ, Johnson CR, Petruck MRL. Background to framenet. International Journal of Lexicography, 2003, 16(3): 235–250.
贾君枝, 邰杨芳. FrameNet的语义类型研究. 情报理论与实践, 2007, 30(5): 689–692.
Dinarelli M, Moschitti A, Riccardi G. Discriminative reranking for spoken language understanding. IEEE Transactions on Audio, Speech, and Language Processing, 2012, 20(2): 526–539.
et al. From human instructions to robot actions: Formulation of goals, affordances and probabilistic planning. 2016 IEEE International Conference on Robotics and Automation (ICRA). Stockholm: IEEE, 2016. 5449–5454.]]>
Misra DK, Sung J, Lee K,
Lu DC, Chen XP. Interpreting and extracting open knowledge for human-robot interaction. IEEE/CAA Journal of Automatica Sinica, 2017, 4(4): 686–695.
et al. Integrating answer set programming with semantic dictionaries for robot task planning. Proceedings of the 26th International Joint Conference on Artificial Intelligence. Melbourne: AAAI Press, 2017. 4361–4367.]]>
张鹏, 李国臣, 李茹, 等. 基于FrameNet框架关系的文本蕴含识别. 中文信息学报, 2012, 26(2): 46–50.
洪铭材, 张阔, 唐杰, 等. 基于条件随机场(CRFs)的中文词性标注方法. 计算机科学, 2006, 33(10): 148–151, 155.
https://github.com/codemayq/chinese_chatbot_cor. (2019-04-15)[2021-01-14].]]>