2021SC@SDUSC

上篇博客我们提到了RawField类除了__init__函数外,还内含了两个函数,分别为preprocess(self, x)和process(self, batch, *args, **kwargs)作为数据的预处理函数和处理函数。

首先我们先来看preprocess函数。

    def preprocess(self, x):if self.preprocessing is not None:return self.preprocessing(x)else:return x

preprocess函数是对数据的预处理,如果提供了预处理的pipe,则预处理一个示例。self.preprocessing则是RawField类中的属性,在__init__函数中可以看出。

    def __init__(self, preprocessing=None, postprocessing=None, is_target=False):self.preprocessing = preprocessingself.postprocessing = postprocessingself.is_target = is_target

接下来我们看process函数。

    def process(self, batch, *args, **kwargs):if self.postprocessing is not None:batch = self.postprocessing(batch)return batch

process函数用来处理示例列表以创建批处理。batch是一个参数,batch (list(object))是来自一批示例的对象列表。返回一个对象,给定输入和自定义的处理对象,再后处理pipe。

介绍完两个RawField类中的函数,我们再来看Field类。

class Field(RawField):

这个类继承了RawField类,定义一个数据类型以及转换为Tensor的指令。Field类对可表示的普通文本处理数据类型通过tensor进行建模。它包含一个定义可能值集的Vocab对象用于字段的元素及其相应的数值表示。Field对象还保存与数据类型如何相关的其他参数应该是数字化的,比如一种标记化方法和应该产生的tensor。如果一个字段在数据集中的两列之间共享(例如,问题和答案在QA数据集中),然后他们将拥有一个共享的词汇表。这是Field类的大概功能,接下来我会详细介绍其中的参数和函数。首先我们看类函数__init__:

    def __init__(self, sequential=True, use_vocab=True, init_token=None,eos_token=None, fix_length=None, dtype=torch.long,preprocessing=None, postprocessing=None, lower=False,tokenize=None, tokenizer_language='en', include_lengths=False,batch_first=False, pad_token="<pad>", unk_token="<unk>",pad_first=False, truncate_first=False, stop_words=None,is_target=False):self.sequential = sequentialself.use_vocab = use_vocabself.init_token = init_tokenself.eos_token = eos_tokenself.unk_token = unk_tokenself.fix_length = fix_lengthself.dtype = dtypeself.preprocessing = preprocessingself.postprocessing = postprocessingself.lower = lower# store params to construct tokenizer for serialization# in case the tokenizer isn't picklable (e.g. spacy)self.tokenizer_args = (tokenize, tokenizer_language)self.tokenize = get_tokenizer(tokenize, tokenizer_language)self.include_lengths = include_lengthsself.batch_first = batch_firstself.pad_token = pad_token if self.sequential else Noneself.pad_first = pad_firstself.truncate_first = truncate_firsttry:self.stop_words = set(stop_words) if stop_words is not None else Noneexcept TypeError:raise ValueError("Stop words must be convertible to a set")self.is_target = is_target

我们来一一介绍这19个参数。

sequential:该数据类型是否表示的是顺序的数据。如果为False,则不标记。默认为True。

use_vocab:表示是否使用Vocab对象。如果为False,则其中的数据字段应该已经是数值的。默认为True。

init_token:一个令牌,它将被附加到使用它的每个示例中的字段,None表示没有初始令牌。默认没有令牌。

eos_token:表示将被添加到每个使用此命令的示例中的令牌字段,None表示没有句子结束标记。默认没有句子结束标记。

fix_length:是一个固定长度,所有使用该字段的示例都将是用于灵活的序列长度或None。默认没有用于灵活的序列长度。

dtype:表示一批示例的Dtype类。默认值为torch.long。

preprocessing:将应用于示例的管道在标记化之后但在数字化之前使用该字段。许多数据集用自定义预处理器替换此属性。

postprocessing:将应用于使用在数字化之后但在数字化之前的字段tensor。管道函数将批处理作为列表与该领域的词汇。

lower:表示是否将该字段的文本小写。默认为不小写。

tokenize:使用该字段对字符串进行标记的函数连续的例子。如果是"spacy",则spacy标记器为

used。如果一个非序列化函数作为参数传递,那么该字段将无法序列化。默认值为string.split。

tokenizer_language:要构造的标记赋予器的语言。(目前仅支持SpaCy的各种语言)。

include_length:是否返回带填充的minibatch和的元组,一个包含每个示例长度的列表,或者只是一个填充的minibatch。默认值为False。

batch_first:是否先生成batch dimension的tensor。默认值为False。

pad_token:用作填充的字符串令牌。默认值为“<pad>”。

unk_token:用于表示OOV单词的字符串令牌。默认值为“<unk>”。

pad_first:在开始处填充序列。默认值为False。

truncate_first:在开始时截断序列。默认值为假

stop_words:预处理步骤中要丢弃的令牌。

is_target:该字段是否为目标变量。影响batch上的迭代。默认值为False。

在Field类中,除了__init__(),还有四个特殊函数。它们为Field类中的特殊函数,并非关键代码,此处不再赘述。

下篇博客会继续介绍Field类中的其他的关键重要的函数。

知识图到文本的生成——叁相关推荐

  1. 知识图到文本的生成(六)

    2021SC@SDUSC 本文将就数据迭代部分和数据集产生部分的代码进行详细分析 首先我们对mkiters函数进行分析,详细分析如下 args = self.args     train = data ...

  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. 根据文本自动生成UML时序图(draw.io格式)

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

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

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

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

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

  8. 生物医学文献知识图创建的关系提取

    生物医学文献知识图创建的关系提取 Paper: https://arxiv.org/pdf/2201.01647 摘要 生物医学研究正以如此指数级的速度增长,以致于科学家.研究人员和从业人员不再能够处 ...

  9. 论文浅尝 | 常识问答中的忠诚知识图解释

    笔记整理:邹铭辉,天津大学硕士,研究方向为知识图谱 链接:https://aclanthology.org/2022.emnlp-main.743 动机 知识图谱通常被用作常识问答的信息来源,同时也可 ...

最新文章

  1. 2018-3-25论文(Grey Wolf Optimizer)自然界狼群的生活等级
  2. python打包发布到手机_Python打包操作与在线发布
  3. linux网络命令记录
  4. AndroidManifest.xml中Activity ConfigChanges属性的用法
  5. 树莓派4开机黑屏_树莓派4降价啦,2Gb内存的树莓派4降至35美元
  6. 德勤发布《 2020 亚太四大半导体市场的崛起》报告,美国收入占比达到47%,中国大陆仅占 5%
  7. 南孚电池:如何从0-1建立经营分析报表平台,助力集团转型?
  8. 算法题库 java实现_LeetCode算法题-Most Common Word(Java实现)
  9. 技术中台构建思路及进展_半年中台实践思考:落地中台,贵在其神,活用其形...
  10. Android使用谷歌插件,IT之家学院:教你如何在安卓手机上使用Chrome插件
  11. 证书格式简介及不同格式之间的转换方式
  12. 南阳oj-----n-1位数(多解法汇总)
  13. python中间件有哪些_python_21(Django中间件)
  14. zip gbk java,java 解压 ZIP 中文 乱码 GBK UTF-8 完美解决方案
  15. Conditional GET Request(缓存协商)
  16. c语言程序流程图怎么写,C语言课程设计————写下流程图! 谢谢
  17. Superset 实现可视化报表发布
  18. 电脑软件推荐安装列表
  19. 回归预测 | MATLAB实现GLM广义线性模型数据回归预测
  20. QQ丶微信分享URL Schemes填写

热门文章

  1. Three物体剪切clipping实例
  2. Linux Graphics 周刊(第 9 期)
  3. Java中使用SMTP协议发送电子邮件
  4. oracle中segment_name,Oracle segment_name为数字的怪象
  5. REDIS哨兵【Sentinel】模式+哨兵的核心知识点+redis哨兵主从切换的数据丢失问题+上一章铺垫的【异步复制数据丢失问题】+【集群脑裂】
  6. 基于电影爬虫及Spark数据分析可视化设计
  7. git提交如何忽略某些文件
  8. CMakeLists.txt 构建 Qt工程
  9. 哈尔滨 java_哈尔滨出差之行
  10. pageContext对象的用法详述