前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytorch的开源对话框架ParlAI系统实践

pytorch的开源对话框架ParlAI系统实践

作者头像
sparkexpert
发布于 2019-05-26 06:01:40
发布于 2019-05-26 06:01:40
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

  最近抽点时间将ParlAI代码进行重构和调试之后,发现其代码设计风格类似于工厂模式,非常便于插入式开发,算是接触过的python代码框架中比较棒的一个。

  1、框架基本介绍

在facebook的github官网(https://github.com/facebookresearch/ParlAI)上对其介绍为对话系统框架。即:ParlAI (pronounced “par-lay”) is a framework for dialog AI research, implemented in Python.

  Its goal is to provide researchers:     (1) a unified framework for sharing, training and testing dialog models。(分享、训练和测试对话模型的统一框架)     (2) many popular datasets available all in one place, with the ability to multi-task over them。支持多种数据集。官网上介绍包括SQuAD, bAbI tasks, MS MARCO, MCTest, WikiQA, WebQuestions, SimpleQuestions, WikiMovies, QACNN & QADailyMail, CBT, BookTest, bAbI Dialog tasks, Ubuntu Dialog, OpenSubtitles, Cornell Movie, VQA-COCO2014, VisDial and CLEVR.等20多种数据集

    (3) seamless integration of Amazon Mechanical Turk for data collection and human evaluation 可以和亚马逊的数据收集进行无疑集成。

  2、框架的基本架构

  框架的入口都必须明确要执行何种任务,这个任务有一定的范围,在master/parlai/tasks/task_list.py这个文件中以JSON的格式进行了列举。因此其输入的任务必须在task_list中指定才可以。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
        "id": "MovieDD-QA",
        "display_name": "Movie Dialog QA",
        "task": "moviedialog:Task:1",
        "tags": [ "All",  "QA", "MovieDD" ],
        "description": "Closed-domain QA dataset asking templated questions about movies, answerable from Wikipedia, similar to WikiMovies. From Dodge et al. '15. Link: https://arxiv.org/abs/1511.06931"
    },

代码的架构主要分为三个主要概念来展开:

(1)world - defines the environment (can be very simple, just two agents talking to each other). 即任务执行的环境,给的示例中均需要首先通过创建任务来构建这样的环境,如其中的示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# create repeat label agent and assign it to the specified task
    agent = RepeatLabelAgent(opt)
    world = create_task(opt, agent)

(2)agent – an agent in the world, e.g. the learner. (There can be multiple learners.):主要用来定义如何进行学习,tasks下每个数据集中都有对应的agents包,这个包可以根据任务名称而自动import,从而实现加载。在agents中定义了很多的teacher,可以支撑多样化的训练。

(3)teacher – a type of agent that talks to the learner, implements one of the listed before. 具体的任务执行学习。即教会机器先把何种方式来进行训练或者测试。

2、系统重构与实践

(1)display data的测试

(2)eval_model.py:使用命名后的 agent 来计算一个命令行给出的特定任务的评价量度(evaluation metric)数据。如图为对话系统的评测

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年04月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验