前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | ​NLP数据处理工具——torchtext

干货 | ​NLP数据处理工具——torchtext

作者头像
AI研习社
发布2019-09-25 16:28:45
2K0
发布2019-09-25 16:28:45
举报
文章被收录于专栏:AI研习社

本文为 AI 研习社社区用户 @Dendi 独家投稿内容,欢迎扫描底部社区名片访问 @Dendi 的主页,查看更多内容。

01.概述

在处理NLP任务时除了需要优秀的神经网络还需要方便、高效的数据预处理工具。今天介绍一款优秀的NLP数据处理工具torchtext

NLP常见的数据预处理工作如下:

  1. Load File:数据文件加载;
  2. Tokenization:分词;
  3. Create Vocabulary:创建字典;
  4. Indexify:将词与索引进行映射;
  5. Word Vectors:创建或加载词向量;
  6. Padding or Fix Length:按长度对文本进行补齐或截取;
  7. Dataset Splits:划分数据集(如将数据集划分问训练集、验证集、测试集);
  8. Batching and Iterators:将数据集按固定大小划分成Batch;

使用torchtext完成以上工作:

  • 使用 torchtext.data.Field 定义样本各个字段的处理流程(分词、数据预处理等);
  • 使用 torchtext.data.Exampletorchtext.data.Field 处理成一条样本;
  • 使用 torchtext.data.Datasettorchtext.data.Example 处理成数据集,也可对数据集进行划分等工作;
  • 使用 torchtext.data.Iteratorstorchtext.data.Dataset 按照 batch_size 组装成 Batch 供模型训练使用;
  • 使用 torchtext.data.vocabtorchtext.data.Vectors 创建词典、词和索引的一一对应、下载或使用预训练的词向量等;

02.安装

  • 使用如下命令安装:pip install torchtext

03.文档

  • 官方教程:https://torchtext.readthedocs.io/en/latest/index.html

04.主要的Package

  1. torchtext.data
    • torchtext.data.Dataset:数据集;
    • torchtext.data.Example:样本;
    • torchtext.data.Fields:样本的属性(如:content、label);
    • torchtext.data.Iterators:将数据集封装成Batch,并提供迭代器;
  2. tochtext.vocab
    • torchtext.vocab.Vocab:词典相关;
    • torchtext.vocab.Vectors:词向量相关;

05.实践

  • 05-1.Field
API
代码语言:javascript
复制
class torchtext.data.Field(

重要的参数:

  1. sequential:是否是可序列化数据(类似于字符串数据),默认值是 True
  2. user_vocab:是否使用 Vocab 对象,如果取 False,则该字段必须是数值类型;默认值是True
  3. tokenize:是一个 function 类型的对象(如 string.cutjieba.cut 等),用于对字符串进行分词;
  4. batch_first:如果该属性的值取 True,则该字段返回的 Tensor 对象的第一维度是 batch 的大小;默认值是False
  5. fix_length:该字段是否是定长,如果取 None 则按同 batch 该字段的最大长度进行pad;

重要函数:

  1. build_vocab:为该Field创建Vocab
Code Demo

数据集(第一个字段是 label , 第二个字段是 content ):

代码语言:javascript
复制
0 我不退我也不买。我就看戏

代码:

代码语言:javascript
复制
# 分词函数
  • 05-2.Example
API
代码语言:javascript
复制
class torchtext.data.Example:

该类有5个类函数,可以从 csvjsondictlisttree等数据结构中创建Example,常用的是 fromlist

  • 05-3.Dataset
API
代码语言:javascript
复制
class torchtext.data.Dataset(examples, fields, filter_pred=None)

重要参数:

  1. examples:Example对象列表;
  2. fields:格式是List(tuple(str, Field)),其中 strField 对象的描述;
Code Demo
代码语言:javascript
复制
# 读取数据
  • 05-4.Vocab
API
代码语言:javascript
复制
class torchtext.vocab.Vocab(

重要参数:

  1. countercollections.Counter 类型的对象,用于保存数据(如:单词)的频率;
  2. vectors:预训练的词向量,可以是torch.vocab.Vectors类型,也可以是其他类型;
Code Demo
代码语言:javascript
复制
# 为 CONTENT 字段创建词向量
  • 05-5.Vectors
API
代码语言:javascript
复制
class torchtext.vocab.Vectors(name, cache=None, url=None, unk_init=None, max_vectors=None)

重要参数:

  1. name:保存word vectors的文件;
  2. catch:word vectors文件的缓存目录,默认是.vector_cache
  3. url:如果缓存文件夹中不存在 word vectors文件,则去该url下载;
  4. unk_init:是一个function 类型的对象,用来初始化词典中不存在的词向量;默认是Tensor.zero_
  5. max_vecotrsint类型的数据,限制词典的大小;
Code Demo
代码语言:javascript
复制
# 使用预训练词向量

结果:

06.结语

torchtext 是一个很好用的文本处理工具,本文只是介绍了torchtext常用的功能,可以查看官方文档进一步学习。

* 封面图来源:https://www.developereconomics.com/nlp-wit-luis-api-ai

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 02.安装
  • 03.文档
  • 04.主要的Package
  • 05.实践
    • API
      • Code Demo
        • API
          • API
            • Code Demo
              • API
                • Code Demo
                  • API
                    • Code Demo
                    • 06.结语
                    相关产品与服务
                    NLP 服务
                    NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档