0%

PyDial: A Multi-domain Statistical Dialogue System Toolkit

论文地址,论文作者 S Ultes 等,发表于 2017 年。 此文中出现了许多专业名词,可参考 此处 加以理解。

摘要翻译

统计口语对话系统(Statistical Spoken Dialogue Systems, Statistical SDS, 统计 SDS)已经存在多年了。然而,访问这些系统一直很困难,因为仍然没有公开的端到端系统实现。为了缓解这个问题,我们提出了 PyDial,一个开源的端到端统计语音对话系统工具包,它为所有对话系统模块提供统计方法的实现。此外,它还被扩展为提供多领域会话功能。它提供了各个对话系统模块的简单配置、易扩展性和域无关(domain-independent)的实现。该工具包可在 Apache2.0 许可下下载。

1 引言

针对机器去设计语音接口(凭此人机交互)是多年来的研究热点。这些语音对话系统(SDSs)通常基于模块化的架构,包括语音识别speech recognition)和语义解码semantic decoding)的输入处理模块input processing modules)、信念跟踪belief tracking)和策略policy)的对话管理模块dialogue management modules)、语言生成language generation)和语音合成speech synthesis)的输出处理模块output processing modules)(见图 1)。

以上介绍了 SDS 的架构。下一段介绍了一些 SDS 中不同组件的统计方法示例。

统计 SDS 是一个语音接口,其中所有 SDS 模块都基于统计模型(从数据中学习)(与人工规则相比)。对话系统中不同组件的统计方法例子可以在以下中找到: - ……(若干论文),详见原论文 Introduction 第二段。

尽管对统计 SDS 的研究非常丰富,但是仍然没有通用的平台和开放的工具包。其他工具包实现通常集中在单个模块上(例如:略,详见论文)。提供专门针对统计对话系统(statistical dialogue systems)的工具包将使新进入该领域的人员能够更容易地参与进来,结果更容易比较,研究人员能够专注于他们的特定研究问题,而不是重新实现算法(例如,评估(v.)交互功能中的理解或生成组件的性能)。

因此,为了促进研究,以及使人们更容易参与统计口语对话系统的研究,我们提出了一个多领域统计口语对话系统工具包 PyDial。PyDial 是用 Python 实现的,剑桥对话系统团队(Cambridge Dialogue Systems Group)正在积极使用它。

那么什么是 PyDial 呢?

PyDial 支持多领域的应用程序,在这些应用程序中,对话可能涉及多个不同的主题。这引入了许多新的研究课题,包括广义信念跟踪(generalised belief tracking)(论文略),rapid policy adaptation and parallel learning 和自然语言生成(natural language generation)。 论文的余下部分安排如下:

  1. 第 2 节介绍了 PyDial 的总体架构(并且将 SDS 架构扩展到多个领域)和 PyDial 的主要应用规范;
  2. 第 3 节包含各个对话系统模块的实现细节;
  3. 第 4 节列出了可用的领域,其中有两个领域用于第5节中的示例交互;
  4. 第 6 节总结了该工具包的主要贡献。

2 PyDial 架构

本节介绍 PyDial 的结构及其与环境的接口方式。随后,描述了在单个领域上功能的扩展,以允许在多个领域上进行对话。最后,我们讨论了 PyDial 设计的三个关键原则。

2.1 总体系统架构

PyDial 的总体架构如图 2 所示。其中主要组件被称为 Agent,它位于系统的核心。它封装了所有对话系统模块,以实现基于文本的交互,即输入和输出。对话系统模块依赖于由一个本体Ontology)定义的领域规范。为了与环境交互(博主注:这里的“与环境交互”应该指的是机器与外部环境交互,如机器与餐厅环境交互、与旅游环境交互、与服装商场进行交互等),PyDial 提供了三个接口:Dialogue Server【允许语音型交互】、Texthub【允许输入型交互】和 User Simulation system。交互的性能由评估Evaluation)组件监视。

  • Agent:负责对话交互,因此内部的架构类似于图 1 中的内容。Agent 还维护 dialogue sessions,即确保每个输入都发送到is routed to)正确的对话。因此,可以通过实例化多个 agents 来支持多个对话
    1. semantic parser:将文本输入转化为一个语义表征
    2. belief tracker:负责维护一个被称为 belief state 的对话状态表征(dialogue state representation
    3. policy:将 belief state 映射到适合的 system dialogue act
    4. semantic output:将 system dialogue act 转化为文本表示
    5. topic tracker:对于多域功能,需要 topic tracker,其功能将在第 2.2 节中解释
  • User Simulation:支持在语义层面进行对话模拟,即不使用任何语义解析器或语言生成。这是一种广泛应用于训练和评估基于强化学习算法的技术,因为它避免了昂贵的数据收集练习(data collection exercises)和用户试验(user trials)。它当然只提供了一个近似的真实用户行为,所以通过模拟获得的结果应该谨慎看待!
  • 与环境交互:为了使 Agent 能够与其环境进行通信,PyDial 提供了两种模式:语音和文本
    • Texthub:只需将 Agent 连接到终端
    • Dialogue Server:要启用基于语音的对话,Dialogue Server 允许连接到外部语音客户端。此客户端负责使用 ASR 将输入语音信号映射到文本,并使用语音合成将输出文本映射到语音(text to speech, TTS)。语音客户端通过 HTTP 交换 JSON 消息连接到对话服务器。请注意,语音客户端不是 PyDial 的一部分。基于云的 ASR 和 TTS 服务可以从 GoogleMicrosoftIBM等提供商处获得。PyDial 目前连接到 DialPort(Zhao等人,2016),其允许基于语音的交互。
  • Ontology:除了 Agent 和接口组件之外,还有 Ontology,Ontology 封装了对话域规范以及对后端数据库(例如,一组餐厅及它们的属性)的访问。它被建模为一个全局对象,大多数对话系统模块和用户模拟器使用它来获取有关用户 actions, slots, slot values, and system actions 的相关信息。
  • Evaluation:用于计算对话的评估度量(例如 Task Success)。对于基于强化学习的对话模块来说,评估组件还负责提供 reward

2.2 多领域对话系统架构

Agent -> topic tracker

2.3 主要原则

为了使 PyDial 能够轻松地应用于新问题,PyDial 体系结构的设计支持三个关键原则:

  • Domain Independence
  • Easy Configurability
  • Extensibility

3 实现

PyDial 工具包是一个不断开发的研究系统。可从Apache2.0许可下的网站免费下载。在最初的版本中可以使用以下各种系统模块的实现,不过,到时候会有更多的实现。

  • Semantic Decoder:为了对输入语句(或n个最佳语句列表,or n-best-list of sentences)进行语义解码,PyDial 提供了一个基于规则(使用正则表达式)的实现,以及一个基于 SVM 的统计模型,即 the Semantic Tuple Classifier(Mairess et al., 2009)。对于后者,只提供了 CamRestaurants 领域的模型。
  • Belief Tracker:为了跟踪 belief state,可用 the rule-based focus tracker(Henderson et al., 2014)。该实现与领域无关。所有特定领域的信息都是从本体中提取的。
  • Policy:负责 policy 的决定执行模块有两种实现方式:1)人工制定的策略(应该适用于所有领域);2)Gaussian process (GP) reinforcement learning policy(Gasic and Young, 2014)。对于多领域对话,策略管理器可以像处理所有其他模块一样处理策略。给定每个用户的输入的领域,然后选择相应的领域策略。

此外,还可以选择 Gasic et al.(2015b) 提出的 Bayesian committee machine(BCM) 处理程序:当处理一个领域的 belief state 时,参考其他领域的策略来选择最终的系统操作。为了实现这一点,belief state 被映射到一个抽象表示,然后允许所有策略访问它。在 PyDial 中,经过训练的策略可以在 committee-based handler 和 standard policy manager handler 之间移动。即在 committee 外部(在单域或多域设置中)接受训练的策略可以在 committee 内部使用,反之亦然。

  • Language Generator:为了将 semantic system action 映射为文本,PyDial 提供了两个实现组件:1)对于所有领域来说,提供了一个基于模板(定义规则)的语言生成;2)此外 Wen et al. (2015) 提出了基于 LSTM 的语言生成器,里面包含了 CamRestaurants 领域的预训练模型
  • Topic Tracker:PyDial 提供了一个基于关键字的 Topic Tracker 实现。如果 Topic Tracker 已为某些用户输入标识了领域,那么它将继续使用该领域,直到识别了新的领域。因此,并非每个用户输入都必须包含相关关键字。如果 Topic Tracker 无法在开始时识别领域,那么它将创建与用户的 meta-dialogue,直到确定初始领域或达到最大重试次数。
  • Evaluation:为了评估对话,目前已经实现了两个 success-based 模块。(下面的话部分看不懂,索性不翻了--)The objective task success evaluator compares the constraints and requests the system identifies with the true values. The latter may either be derived from the user simulator or, in real dialogues, by specifying a predefined task. For real dialogues, a subjective task success evaluator may also be applied which queries the user about the outcome of the dialogue.
  • User Simulation:模拟用户的实现使用 agenda-based 用户模拟器(Schatzmann et al., 2006)。该模拟器包含 user model 和 error model,从而创建 a n-best-list of user acts 来模拟噪声语音信道。通过使用一组普遍适用的参数,模拟器可以应用于所有领域。领域特定的信息取自本体。

4 一些领域

PyDial 的主要关注的是面向任务的对话,即根据一些约束条件用户必定找到其匹配的实体。找到实体后,用户可以请求其他信息。为应付这些场景,PyDial 预先加载了总共十个不同复杂度的领域:

如前所述,所有 policy 实现以及 belief trackeruser simulator 的实现都独立于领域之外。因此,在所有领域都可以进行交互的模拟。此外,semantic decoderlanguage generator 在某种程度上依赖于特定领域的实现。PyDial 包含用于所有领域的基于规则的 semantic decoder 和一个用于 CamRestaurants 的统计解码器(statistical decoder)。此外,PyDial 还为大多数领域提供了基于模板的语言生成,并为 CamRestaurants 提供了基于 LSTM 的生成器。因此,在 CamRestaurants 领域,实现统计对话完全有可能。