ParlAI 中的 CNN/DM 摘要任务:从数据构建到 Teacher 实现的完整解析
NLP人工智能深度学习【免费下载链接】ParlAIA framework for training and evaluating AI models on a variety of openly available dialogue datasets.项目地址https://gitcode.com/gh_mirrors/pa/ParlAI点击查看免费下载本文围绕 ParlAI 任务库中的cnn_dmCNN/Daily Mail 摘要生成任务展开系统梳理该数据集在框架中的接入方式包括自动下载与分片构建脚本、以摘要为标签的 Teacher 数据解析逻辑以及其作为 DecaNLP 十项任务之一的多任务定位。读完本文你将掌握如何通过一条命令行加载该任务、理解其底层数据管线并能在 ParlAI 中直接复用它进行摘要模型的训练与评估。一、任务概述来自 CNN 与 Daily Mail 的摘要数据集cnn_dm是 ParlAI 内置任务之一其官方描述为Dataset collected from CNN and the Daily Mail with summaries as labels, Implemented as part of the DecaNLP task. Downloaded from https://cs.nyu.edu/~kcho/DMQA/即这是一个从 CNN 与英国《每日邮报》Daily Mail新闻语料中收集的数据集以人工撰写的摘要highlights作为标签属于 DecaNLP 基准任务的组成部分原始数据由纽约大学 Karl Moritz Hermann 等人发布的 QA 数据集DMQA演变而来。在 ParlAI 的任务注册表 parlai/tasks/task_list.py 中它被登记为{ id: cnn_dm, display_name: CNN/DM Summarisation, task: cnn_dm, tags: [decanlp], description: Dataset collected from CNN and the Daily Mail with summaries as labels, Implemented as part of the DecaNLP task. }任务目录本身只有三个文件parlai/tasks/cnn_dm/文件职责README.md任务说明与标签#cnn_dm、#All、#decanlpbuild.py数据下载、校验与训练/验证/测试分片构建agents.pyCNNDMTeacher数据解析与对话格式封装二、数据自动构建build.py 的下载与分片机制与 ParlAI 中大多数任务一致cnn_dm的数据不需要手工准备运行时会通过 parlai/tasks/cnn_dm/build.py 自动完成下载与构建。2.1 数据源与完整性校验build.py中的RESOURCES列表定义了 8 个待下载文件分为两类原始语料Google Drive 托管.tgz压缩包文件用途cnn_stories.tgzCNN 新闻故事语料SHA-256:e8fbc002...cb200dm_stories.tgzDaily Mail 新闻故事语料SHA-256:ad690100...47e官方切分 URL 列表来自 abisee/cnn-dailymail 仓库明文.txt文件用途cnn_wayback_training_urls.txt/validation/testCNN 三组切分对应的文章 URLdailymail_wayback_training_urls.txt/validation/testDaily Mail 三组切分对应的文章 URL每个DownloadableFile都带有 SHA-256 校验值下载后自动校验确保数据完整性zippedFalse的 URL 列表文件以明文方式直接落盘。2.2 分片文件.txt的生成URL → SHA1 哈希映射构建的核心技巧在于用 URL 的 SHA1 哈希作为文件名索引这是 CNN/DM 原始语料.story 文件的经典命名约定。build.py中对应的逻辑为for url in urls_file: file_name hashlib.sha1(url.strip().encode(utf-8)).hexdigest() split_file.write(cnn/stories/{}.story\n.format(file_name))即对 URL 列表中的每一行计算 SHA1拼出相对路径如cnn/stories/sha1.story、dailymail/stories/sha1.story按data_type [train, valid, test]依次追加写入train.txt、valid.txt、test.txt三个分片文件。最终每个分片就是一行一个.story文件路径供 Teacher 逐行读取。整个过程封装在build(opt)中def build(opt): dpath os.path.join(opt[datapath], CNN_DM) if not build_data.built(dpath, version_stringversion): # 下载 RESOURCES 中全部文件 for downloadable_file in RESOURCES: downloadable_file.download_file(dpath) # 由 URL 列表生成 train/valid/test 三个 .txt 分片 ... build_data.mark_done(dpath, version_stringversion)下载目录为{opt[datapath]}/CNN_DM并以mark_done打上完成标记避免重复构建。所有文件 I/O 均通过PathManager完成兼容本地与远程文件系统。三、Teacher 实现agents.py 的解析与对话封装任务的数据读取逻辑集中在 parlai/tasks/cnn_dm/agents.py 的CNNDMTeacher中它继承自DialogTeacher来自 parlai/core/teachers.py把每条样本组织成标准的「text label」对话形式。3.1 数据路径与 datatype 适配class CNNDMTeacher(DialogTeacher): def __init__(self, opt, sharedNone): self.dt opt.get(datatype, train).split(:)[0] self.id cnn_dm self.datapath os.path.join(opt[datapath], CNN_DM) opt[datafile] self._path(opt) super().__init__(opt, shared)Teacher 标识id为cnn_dm_path()中调用build(opt)确保数据就绪再根据datatype的第一段train/valid/test冒号前的部分忽略:ordered、:stream等修饰符拼出对应分片文件{datapath}/CNN_DM/{dt}.txt。3.2 摘要标签的解析highlight 标记.story原文格式中新闻正文与摘要之间以highlight行分隔其后为多条摘要要点。setup_data的解析逻辑为for line in story_file: line _fix_missing_period(line.strip()) if line : continue if line.startswith(highlight): is_highlight True continue if is_highlight: highlights.append(line) else: article.append(line)即highlight之前的所有行归入article新闻正文之后的行归入highlights摘要标签空行直接跳过。_fix_missing_period是一个值得注意的预处理细节若一行既非空、非highlight、且末尾字符不属于END_TOKENS. ! ? ... ’ ” )则自动补一个句号保证句子边界完整END_TOKENS [., !, ?, ..., , , , u\u2019, u\u201d, )] if highlight in line or line or line[-1] in END_TOKENS: return line return line .3.3 对话格式统一的问句与 NFKC 归一化每条样本最终组织为self.question What is the summary? text (unicodedata.normalize(NFKC, .join(article)) \n self.question) label [unicodedata.normalize(NFKC, .join(highlights))] yield ((text, label, None, None), new_episode)text新闻正文 换行 固定问句What is the summary?为对齐 DecaNLP 的问答式任务格式而设计label多条摘要要点用空格拼接成单一字符串标签NFKC 归一化统一全角/半角与兼容字符避免编码噪声影响训练每篇故事作为一个独立 episodenew_episode True各样本之间无上下文关联。文件缺失时EnvironmentError会跳过该样本并计数读取结束后打印统计{} stories added, {} stories missing.最后DefaultTeacher直接继承CNNDMTeacher作为 ParlAI 的默认任务入口。四、命令行加载与使用4.1 快速查看数据使用 ParlAI 的display_data脚本即可查看该任务的样本格式首次运行会自动触发下载与构建python -m parlai.scripts.display_data -t cnn_dm # 指定切分valid / test或随机打乱 python -m parlai.scripts.display_data -t cnn_dm -dt valid python -m parlai.scripts.display_data -t cnn_dm -dt train:shuffle输出中每条样本的text为新闻正文加问句labels即为摘要。任务在框架中的完整注册入口位于 parlai/tasks/tasks.py 与 parlai/tasks/task_list.py。4.2 训练与评估该任务可直接接入标准训练管线例如用 Transformer 生成式模型训练摘要模型python -m parlai.scripts.train_model \ -t cnn_dm \ -m transformer/generator \ --model-parallel True \ -bs 16 \ -lr 1e-5 \ --optimizer adam \ --embedding-size 512 \ --n-layers 8 \ --ffn-size 2048 \ --n-heads 16 \ --variant xlm \ --activation gelu \ -vp 5 \ -vmt ppl \ -vmm min \ -veps 1 \ --validation-max-examples 100 python -m parlai.scripts.eval_model -t cnn_dm -dt test -mf 模型路径需要注意的是cnn_dm目录本身只提供 Teacher数据层不附带预训练模型权重或评测脚本摘要质量评估如 ROUGE需在外部对模型输出计算。五、在 DecaNLP 多任务基准中的角色cnn_dm是 DecaNLP 基准的十项任务之一。在 parlai/tasks/decanlp/agents.py 中可以看到完整任务清单decanlp_tasks [ squad, # 抽取式问答 iwslt14, # 机器翻译 cnn_dm, # 摘要生成 multinli, # 自然语言推理 sst, # 情感分类 qasrl, # 语义角色标注 qazre, # 关系抽取 woz, # 任务型对话 wikisql, # 文本转 SQL mwsc, # 指代消解 ]DecaNLP 的设计思想是把这些异构 NLP 任务统一转化为「问题 上下文 → 答案」的问答形式因此cnn_dm的样本才会被构造成正文 What is the summary?的结构。CnnDmTeacher在 DecaNLP 中只是对cnn_dm.DefaultTeacher的透明包装class CnnDmTeacher(cnn_dm.DefaultTeacher): pass若要在多任务模式下联合训练直接使用decanlp任务即可python -m parlai.scripts.display_data -t decanlp -dt valid python -m parlai.scripts.train_model -t decanlp -m transformer/generator ...六、小结cnn_dm任务在 ParlAI 中的实现脉络清晰build.py负责从 Google Drive 与官方 URL 列表自动拉取语料以URL 的 SHA1 哈希生成三切分索引文件并做完整性校验agents.py则通过DialogTeacher将.story原文解析为「正文 问句 → 摘要标签」的标准对话样本包含highlight切分、缺失句号补齐与 NFKC 归一化等细节处理。它既是独立的摘要生成任务也是 DecaNLP 多任务基准的关键组成可直接通过-t cnn_dm或-t decanlp加载训练是研究新闻摘要与多任务学习的便捷入口。赞分享NLP人工智能深度学习【免费下载链接】ParlAIA framework for training and evaluating AI models on a variety of openly available dialogue datasets.项目地址https://gitcode.com/gh_mirrors/pa/ParlAI点击查看免费下载相关推荐ParlAI 中的 Twitter 闲聊任务从数据构建管线到 Teacher 加载的完整实践指南ParlAI 中的 Twitter 闲聊任务从数据构建管线到 Teacher 加载的完整实践指南 导读 Twitter 任务Task: Twitter是NLP人工智能深度学习ParlAI 中的 bAbI 任务完全指南从 1k/10k 数据加载、Teacher 实现到多任务训练ParlAI 中的 bAbI 任务完全指南从 1k/10k 数据加载、Teacher 实现到多任务训练 导读 本文围绕 parlai/tasks/babi/RNLP人工智能深度学习cordova-icon源码解析从XML解析到ImageMagick的图标生成原理cordova icon源码解析从XML解析到ImageMagick的图标生成原理 cordova icon是一款为Cordova项目提供自动图标大小调整功能NLP人工智能深度学习上一篇KMS智能激活工具Windows和Office永久激活的终极解决方案下一篇3步完成B站视频下载专业工具助你轻松获取大会员4K高清资源创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

远程软件哪个好用?2026年远程控制工具怎么选

远程软件哪个好用?2026年远程控制工具怎么选

如果你正在搜索“远程软件哪个好用”,先给一个比较实际的结论:没有一款远程软件适合所有人,关键要看你是临时协助、远程办公,还是需要长时间连接和托管。 我把常见需求拆开对比后,比较推荐优先试用支持多端连接、操作路…

2026/9/24 16:40:53 阅读更多 →
@vanilla-extract/dynamic 使用指南:在零运行时架构下动态赋值 CSS 变量(assignInlineVars 与 setElementVars)

@vanilla-extract/dynamic 使用指南:在零运行时架构下动态赋值 CSS 变量(assignInlineVars 与 setElementVars)

前端开发工具 【免费下载链接】vanilla-extract Zero-runtime Stylesheets-in-TypeScript 项目地址: https://gitcode.com/gh_mirrors/va/vanilla-extract 点击查看 免费下载 导读 vanilla-extract 是一款「Zero-runtime Stylesheets-in-TypeScript」方案&#xf…

2026/9/24 16:39:46 阅读更多 →
PHPStan 错误标识符详解:property.abstractPrivate —— 属性钩子不能既是 abstract 又是 private

PHPStan 错误标识符详解:property.abstractPrivate —— 属性钩子不能既是 abstract 又是 private

PHPStan 错误标识符详解:property.abstractPrivate —— 属性钩子不能既是 abstract 又是 private 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan …

2026/9/24 16:39:46 阅读更多 →

最新新闻

如何在本地跑起 fragments:开源 AI 应用生成器完整配置指南(Next.js 模板)

如何在本地跑起 fragments:开源 AI 应用生成器完整配置指南(Next.js 模板)

如何在本地跑起 fragments:开源 AI 应用生成器完整配置指南(Next.js 模板) 【免费下载链接】fragments Open-source Next.js template for building apps that are fully generated by AI. By E2B. 项目地址: https://gitcode.com/GitHub_T…

2026/9/24 17:24:29 阅读更多 →
FunClip:3 步完成 AI 视频智能剪辑

FunClip:3 步完成 AI 视频智能剪辑

FunClip:3 步完成 AI 视频智能剪辑 【免费下载链接】FunClip FunASR-powered video transcription, subtitle generation, and LLM-assisted clipping tool with a local Gradio UI. 项目地址: https://gitcode.com/GitHub_Trending/fu/FunClip 两小时会议录…

2026/9/24 17:24:29 阅读更多 →
850kbps 离线文件传输:libcimbar 把屏幕和摄像头变成信道

850kbps 离线文件传输:libcimbar 把屏幕和摄像头变成信道

850kbps 离线文件传输:libcimbar 把屏幕和摄像头变成信道 【免费下载链接】libcimbar Optimized implementation for color-icon-matrix barcodes 项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar libcimbar 是一款做离线文件传输的 C 库&#…

2026/9/24 17:24:28 阅读更多 →
GPU训练脚本迁移昇腾NPU只需5步简单修改:TorchNPU模型迁移实战指南

GPU训练脚本迁移昇腾NPU只需5步简单修改:TorchNPU模型迁移实战指南

GPU训练脚本迁移昇腾NPU只需5步简单修改:TorchNPU模型迁移实战指南 【免费下载链接】pytorch 作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU&#xff0c…

2026/9/24 17:24:28 阅读更多 →
详解 JWT

详解 JWT

什么是 JWTJWT(JSON Web Token):是一种无状态、自包含的身份令牌,用字符串传递用户身份信息,不需要服务端保存会话记录。JWT 整体格式三段用.分隔:Header.Payload.Signature1.Header 头部记录加密签名算法&…

2026/9/24 17:24:28 阅读更多 →
基于 Java Spring Boot 的灾害应急救援平台设计与实现

基于 Java Spring Boot 的灾害应急救援平台设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 引言 随着自然灾害和突发公共事件的频发,传统应急救援模式在信息传递、资源调度和协同指挥等方面暴露出响应慢、信息孤岛、资源调配不透明等问题。本文基…

2026/9/24 17:23:28 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →