Plato Research Dialogue System 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Plato Research Dialogue System 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Plato Research Dialogue System 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache-2.0
开发语言 Python HTML/CSS
操作系统 跨平台
软件类型 开源软件
开源组织 Uber
地区 不详
投 递 者 xplanet
适用人群 未知
收录时间 2019-07-17

软件简介

柏拉图(Plato)研究对话系统是一个灵活的框架,可用于在各种环境中创建、训练和测试会话 AI 代理。它支持通过语音、文本或对话行为进行交互,每个会话代理可以与数据、人类用户或其他会话代理进行交互(在多代理设置中)。每个代理商的每个组成部分都可以在线或离线独立培训,只要遵守 Plato 的界面,Plato 就可以轻松地绕过几乎任何现有的模型。

柏拉图(Plato)研究对话系统如何运作?

从概念上讲,会话代理需要经过各种步骤才能处理它作为输入接收的信息(例如,“今天天气如何?”)并产生适当的输出(“有风但不太冷”。)。与标准体系结构的主要组件(参见图1)相对应的主要步骤是:

  • 语音识别(将语音转录为文本)
  • 语言理解(从该文本中提取意义)
  • 状态跟踪(到目前为止已经说过和完成的内容的汇总信息)
  • API 调用(搜索数据库,查询 API 等)
  • 对话策略(生成代理人回应的抽象含义)
  • 语言生成(将抽象意义转换为文本)
  • 语音合成(将文本转换为语音)

Plato 的设计尽可能模块化和灵活,它支持传统和自定义会话 AI 架构,重要的是,支持多方交互,其中多个代理可能具有不同的角色,可以相互交互,同时训练和解决分布式问题。

下面的图1和图2描述了与人类用户和模拟用户交互时的示例 Plato 对话代理体系结构。与模拟用户交互是研究社区中用于快速开始学习的常见做法(即,在与人类交互之前学习一些基本行为)。每个单独的组件都可以使用任何机器学习库(例如,Ludwig、 TensorFlowPyTorch、用户自己的实现)在线或离线进行培训,因为 Plato 是一个通用框架。Uber 的开源深度学习工具箱 Ludwig 是一个很好的选择,因为它不需要编写代码并且与 Plato 完全兼容。

PlatoRDS,人类图1:Plato 的模块化架构意味着任何组件都可以在线或离线进行培训,可以通过自定义或预先训练的模型进行替换。(此图中的灰色组件不是核心 Plato 组件。)

PlatoRDS模拟器图2:使用模拟用户而不是人类用户,如图1所示,我们可以预先训练 Plato 各种组件的统计模型。然后,这些可以用于创建原型会话代理,该代理可以与人类用户交互以收集更多自然数据,这些数据随后可用于训练更好的统计模型。(此图中的灰色组件不是 Plato 核心组件。)

除了单代理交互之外,Plato 还支持多代理对话,其中多个 Plato 代理可以相互交互并相互学习。具体来说,Plato 将产生会话代理,确保输入和输出(每个代理听到和说出的内容)被适当地传递给每个代理,并跟踪对话。

这种设置可以促进多代理学习的研究,其中代理需要学习如何生成语言以执行任务,以及研究多方交互的子领域(对话状态跟踪,轮流等)。 )。对话原则定义了每个代理可以理解的内容(实体或含义的本体;例如:价格,位置,偏好,烹饪类型等)以及它可以做什么(询问更多信息,提供一些信息,调用 API)等)。代理可以通过语音,文本或结构化信息(对话行为)进行通信,并且每个代理都有自己的配置。下面的图3描述了这种架构,概述了两个代理和各种组件之间的通信:

PlatoRDS,多代理图3:Plato 的架构允许对多个代理进行并发培训,每个代理具有可能不同的角色和目标,并且可以促进多方交互和多代理学习等领域的研究。(此图中的灰色组件不是核心 Plato 组件。)

最后,Plato 通过图4所示的通用代理体系结构支持自定义体系结构(例如,将 NLU 分成多个独立组件)和联合训练的组件(例如,文本到对话状态,文本到文本或任何其他组合)。此模式远离标准会话代理体系结构并支持任何类型的体系结构(例如,使用联合组件,文本到文本或语音到语音组件,或任何其他设置)并允许加载现有或预先训练有素的模型进入 Plato。

PlatoRDS-GenericAgent图4:Plato 的通用代理体系结构支持广泛的自定义,包括联合组件,语音到语音组件和文本到文本组件,所有这些组件都可以串行或并行执行。

用户可以通过简单地提供该类模块的 Python 类名和包路径以及模型的初始化参数来定义自己的体系结构和/或将自己的组件插入到 Plato 中。用户需要做的就是按照应该执行的顺序列出模块,Plato 负责其余部分,包括包装输入/输出,链接模块和处理对话。Plato 支持模块的串行和并行执行。

Plato 还通过组合结构的贝叶斯优化(BOCS)为对话 AI 架构或单个模块参数的贝叶斯优化提供支持。

安装

  1. 克隆此存储库:

    git clone git@github.com:uber-research/plato-research-dialogue-system.git
    
  2. 安装要求:

    对于 MacOS:

    brew install portaudio
    pip install -r requirements.txt
    

    对于 Ubuntu/Debian:

    sudo apt-get install python3-pyaudio
    pip install -r requirements.txt
    

    对于 Windows:

    pip install -r requirements.txt
    
  3. 运行

    有关配置文件以及如何运行第一个 Plato 代理的快速介绍,请参见文档

为了支持语音,有必要安装 PyAudio,它具有许多开发人员机器上可能不存在的依赖项。如果上述步骤不成功, PyAudio 安装错误的这篇文章包含有关如何获取这些依赖项并安装 PyAudio 的说明。

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣
发表于AI & 大数据专区
2019/07/17 08:32

Uber 开源研究对话系统 Plato,用于开发和训练会话 AI

“在过去的几十年中,智能会话代理已经发生了显著的变化,从关键字定位交互式语音应答(IVR)系统到正在成为日常生活中不可或缺的一部分的跨平台智能个人助理。随着这种增长,需要直观、灵活和全面的研究和开发平台,可以作为开放的测试平台,帮助评估新算法,快速创建原型,并可靠地部署会话代理。 ” 在这种背景下,Uber AI(Uber 的人工智能研究部门)开发并且开源了柏拉图( Plato )研究对话系统。Plato 旨在构建、训练和部...

2
33
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
0 评论
20 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部