ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ParlAI 中的 CNN/DM 摘要任务:从数据构建到 Teacher 实现的完整解析

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),仅供参考
返回列表