赞
踩
这里介绍PyTorch官方用于自然语言处理(NLP)的工具包torchtext。自然语言处理也是深度学 习的一大应用场景,近年来随着大规模预训练模型的应用,深度学习在人机对话、机器翻译等领域的取得了非常好的效果,也使得NLP相关的深度学习模型获得了越来越多的关注。
torchtext的主要组成部分
torchtext可以方便的对文本进行预处理,例如截断补长、构建词表等。torchtext主要包含了以下的主要组成部分:
数据处理工具 torchtext.data.functional、torchtext.data.utils
数据集 torchtext.data.datasets
词表工具 torchtext.vocab
评测指标 torchtext.metrics
torchtext的安装 torchtext可以直接使用pip进行安装:pip install torchtext
第一步构建数据集 Field及其使用
Field是torchtext中定义数据类型以及转换为张量的指令。
torchtext 认为一个样本是由多个字段(文 本字段,标签字段)组成,不同的字段可能会有不同的处理方式,所以才会有 Field 抽象。定义Field 对象是为了明确如何处理不同类型的数据,但具体的处理则是在Dataset中完成的。下面我们通过一个例 子来简要说明一下Field的使用:
tokenize=lambda x:x.split()
text=data.Field(Sequential=True,tokenize=tokenize,lower=True,fix_length=200)
Label=data.field(sequential=false,use_vocab=false)
其中:
sequential设置数据是否是顺序表示的; tokenize用于设置将字符串标记为顺序实例的函数 lower设置是否将字符串全部转为小写;
总结:
Field一般来说是声明会如何处理数据
里面的参数:
~Field.sequential – 输入的数据是否是序列型的,如果不是,将不使用tokenzie对数据进行处理
~Field.use_vocab – 是否使用Vocab对象,也就是使用输入的词向量,这里以后会讲到,如果不使用,那么输入Field的对象一定是数字类型的。
~Field.init_token – 给example数据的开头加一个token,感觉类似标签
~Field.eos_token – 给example数据加一个结束token
~Field.fix_length – 设定序列的长度,不够的进行填充
~Field.dtype – 表示输入的example数据的类型
~Field.preprocessing – 将example数据在tokenize之后,但在转换成数值之前的管道设置,这个我没有用过,所以不确定具体怎么用
~Field.postprocessing – 将example数据在转换成数值之后,但在变成tensor数据之前的管道设置. 管道将每个batch的数据当成一个list进行处理
~Field.lower – 是否将输入的文本变成小写
~Field.tokenize – 设置一个tokenize分词器给Field用,这里也有内置的一些分词器可以用
~Field.tokenizer_language – 分词器tokenize的语言,这里是针对SpaCy的
~Field.include_lengths – 是否在返回文本序列的时候返回文本的长度,这里是对LSTM的变长输入设置非常好用
~Field.batch_first – 输出的数据的维度中batch的大小放到前面
~Field.pad_token – 用于填充文本的关键字,默认是
~Field.unk_token – 用于填充不在词汇表中的关键字,默认是
~Field.pad_first – 是否将填充放到文本最前面
~Field.truncate_first – 是否从文本开始的地方将文本截断
~Field.stop_words – 停止词的设置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。