2021SC@SDUSC

本文将就数据迭代部分和数据集产生部分的代码进行详细分析

首先我们对mkiters函数进行分析,详细分析如下

args = self.args
    train = data.TabularDataset(path=args.path, format='tsv',fields=self.fields)
    self.trainsize = len(train.examples)
    valid = data.TabularDataset(path=args.path.replace("train","val"), format='tsv',fields=self.fields)

如同在第二篇博客中提到的,self是该类的一个实例,第二个args为自由参数。将实例赋予我们定义好的参数args,并定义一个局部变量train表示,TabularDataset用于定义一个csv,tsv或json格式的数据集,设置路径为args.path,格式为tsv格式,对于不需要的列field传递 为None ,若数据有列名,需设置skip_header=True,否则会把列名也当一个数据处理。

设置训练集的长度为train实例的长度,并将train字段替换为val

for ds in [train,valid]:
      for x in ds:
        x.ent = self.vec_ents(x.ent,self.ENT)
        x.rel = self.mkGraphs(x.rel,len(x.ent[1]))

遍历数据集中每个数据,得到横坐标x,调用(五)中分析函数mkGraph构造图

self.train_iter = data.Iterator(train,args.bsz*100,device=args.device,batch_size_fn=self.bszFn,sort_key=lambda x:len(x.out),repeat=False,train=True)

self.val_iter= data.Iterator(valid,args.bsz*100,device=args.device,batch_size_fn = self.bszFn,sort_key=lambda x:len(x.out),sort=False,repeat=False,train=False)

通过Iterator函数的 调用产生两个迭代器,train_iter和val_iter,其中将train_iter设置成不可重复但可训练集合,而将val_iter设置为不可分类,不可重复且不可训练的集合,这几种表示分别由sort,repeat,train这三个布尔变量决定。

接下来我们对mktestset函数进行分析

path = args.path.replace("train",'test')
 fields=self.fields
 dat = data.TabularDataset(path=path, format='tsv',fields=fields)
 dat.fields["rawent"] = data.RawField()

将当前使用数据集路径更换为test的路径,并设置数据域为self.fields,同理,调用了TabularDataset定义数据集dat,该集合用于模型测试,即test。

for x in dat:
      x.rawent = x.ent.split(" ; ")
      x.rawent = (x.rawent, [[self.OUTP.vocab.stoi[y] if y in self.OUTP.vocab.stoi else 0 for y in z.split(" ")] for z in x.rawent])
      x.ent = self.vec_ents(x.ent,self.ENT)
      x.rel = self.mkGraphs(x.rel,len(x.ent[1]))
    dat_iter = data.Iterator(dat,args.vbsz,device=args.device,sort_key=lambda x:len(x.src), train=False, sort=False)
    return dat_iter

我们遍历测试集的每个元素,每行通过‘;’符号进行分割区分,并产生新的rawent标识,而后对mkGraphs函数进行一个调用,可以创建出测试集的图雷,同样的,这里我们创建出一个新的迭代器用于测试集的迭代,并将该迭代器dat_iter返回。

知识图到文本的生成(六)相关推荐

  1. 知识图到文本的生成——叁

    2021SC@SDUSC 上篇博客我们提到了RawField类除了__init__函数外,还内含了两个函数,分别为preprocess(self, x)和process(self, batch, *a ...

  2. 从知识图谱到文本:结合局部和全局图信息生成更高质量的文本

    论文标题: Modeling Global and Local Node Contexts for Text Generation from Knowledge Graphs 论文作者: Leonar ...

  3. 图形化文本编辑器_使用图形转换器从知识图生成文本

    图形化文本编辑器 A summary of the structure 结构总结 This 2019 paper is a bit of an anachronism, given the speed ...

  4. 强烈推荐十大NLP主流经典项目:预训练BERT、知识图谱、智能问答、机器翻译、文本自动生成等...

    自然语言处理技术近几年发展非常快,像BERT.GPT-3.图神经网络.知识图谱等技术被大量应用于项目实践中. 今年大厂的NLP面试中对项目方面的考察深度也随之提升了很多,经常会被面试官揪着细节一步一步 ...

  5. 项目管理十大知识领域与49个过程,输入输出、工具与技术思维导图(PMBOK®指南第六版)

    项目管理十大知识领域与49个过程,输入.输出.工具与技术思维导图,ITTO思维导图(PMBOK®指南第六版) 打开今日头条手机APP,搜索"有范管理美学",点击关注---进入主页- ...

  6. 根据文本自动生成UML时序图(draw.io格式)

    1. 前言 已有一些工具可以根据文本自动生成UML时序图,如PlantUML(https://plantuml.com/zh/).Mermaid(https://mermaid-js.github.i ...

  7. 基于大规模结构相似和文本相似的知识图挖掘方法预测药物相互作用

    基于大规模结构相似和文本相似的知识图挖掘方法预测药物相互作用 (Large-scale structural and textual similarity-based mining of knowle ...

  8. 《预训练周刊》第11期:全球最大智能模型“悟道2.0”重磅发布、谷歌KELM:将知识图与语言模型预训练语料库集成...

    No.11 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第11期&l ...

  9. 论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模

    笔记整理 | 韩振峰,天津大学硕士 链接:https://arxiv.org/pdf/1911.02707.pdf 动机 人类对话自然地围绕相关概念发展,并分散到多跳概念.本文提出了一种新的会话生成模 ...

最新文章

  1. singleton模式四种线程安全的实现
  2. Bear and Finding Criminals
  3. Numpy实现BP神经网络(包含Dropout、BN等训练技巧)
  4. 2017.11.21T19_B2_6.2讲义
  5. 波形包络提取与峰值提取_一个简单的波形包络提取算法
  6. C# 海康DVR客户端开发系列(3)—— 连接DVR和图像预览
  7. c语言编程蛇形,蛇形矩阵c语言实现
  8. 怎么用计算机解锁手机密码华为,华为手机忘记解锁密码如何解锁?两招轻松搞定...
  9. word2vec算法
  10. 中国互联网寒冬的根本原因是什么?
  11. cocos creator--DragonBones 骨骼动画入门
  12. ZZULIOJ 1919 D
  13. 【数据结构】稀疏数组
  14. java 字符串中去除汉字和符号
  15. 华三华为交换机配置时间
  16. 常见漏洞知识库(原理/场景/修复)
  17. Vue3基础难点总结
  18. android手机8g内存够用嘛,安卓手机8G内存和12G内存有啥区别?
  19. hadoop 2.7.3 版本下载
  20. 你拥有的最宝贵的财富是什么?

热门文章

  1. endnote咋手动输入文献_EndNote导入Word手动输入参考文献的方法图解教程
  2. 【元胞自动机】元胞自动机模拟SEIR传播模型【含Matlab源码 2156期】
  3. RLChina 智能体挑战赛 - 壬寅年冬赛季(桌面曲棍球)
  4. c++——一个萃取的实例
  5. 数据分析实战——货币分析与预测
  6. Java面试问题汇总
  7. 说“快乐”还是“安康”?如何在不抬杠的情况下用AI搞定这问题
  8. JavaWeb(分页)
  9. 单链表简单功能的代码实现
  10. java_web1:基本标签、form表单、frameset框架标签、CSS样式、javascript、servlet