• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用torchtext导入NLP数据集的操作

python 搞代码 4年前 (2022-01-09) 26次浏览 已收录 0个评论
文章目录[隐藏]

如果你是pytorch的用户,可能你会很熟悉pytorch生态圈中专门预处理图像数据集的torchvision库。

从torchtext这个名字我们也能大概猜到该库是pytorch圈中用来预处理文本数据集的库,但这方面的教程网络上比较少,今天我就讲讲这个特别有用的文本分析库。

简介

torchtext在文本数据预处理方面特别强大,但我们要知道ta能做什么、不能做什么,并如何将我们的需求用torchtext实现。虽然torchtext是为pytorch而设计的,但是也可以与keras、tensorflow等结合使用。

官方文档地址 https://torchtext.readthedocs.io/en/latest/index.html

# 安装	
!pip3 install torchtext

自然语言处理预处理的工作流程:

1、Train/Validation/Test数据集分割

2、文件数据导入(File Loading)

3、分词(Tokenization) 文本字符串切分为词语列表

4、构建词典(Vocab) 根据训练的预料数据集构建词典

5、数字映射(Numericalize/Indexify) 根据词典,将数据从词语映射成数字,方便机器学习

6、导入预训练好的词向量(word vector)

7、分批(Batch) 数据集太大的话,不能一次性让机器读取,否则机器会内存崩溃。解决办法就是将大的数据集分成更小份的数据集,分批处理

8、向量映射(Embedding Lookup) 根据预处理好的词向量数据集,将5的结果中每个词语对应的索引值变成 词语向量

上面8个步骤,torchtext实现了2-7。第一步需要我们自己diy,好在这一步没什么难度

"The quick fox<span style="color:transparent">本文来源gaodai#ma#com搞*!代#%^码网%</span> jumped over a lazy dog."	
# 分词	
["The", "quick", "fox", "jumped", "over", "a", "lazy", "dog", "."]	
# 构建词典	
{"The" -&gt; 0, 	
"quick"-&gt; 1, 	
"fox" -&gt; 2,	
...}	
# 数字映射(将每个词根据词典映射为对应的索引值)	
[0, 1, 2, ...]	
# 向量映射(按照导入的预训练好的词向量数据集,把词语映射成向量)	
[	
  [0.3, 0.2, 0.5],	
  [0.6, 0., 0.1],	
  [0.8, 01., 0.4],	
  ...	
]

一、数据集分割

一般我们做机器学习会将数据分为训练集和测试集,而在深度学习中,需要多轮训练学习,每次的学习过程都包括训练和验证,最后再进行测试。所以需要将数据分成训练、验证和测试数据。

import pandas as pd	
import numpy as np	
def split_csv(infile, trainfile, valtestfile, seed=999, ratio=0.2):	
    df = pd.read_csv(infile)	
    df["text"] = df.text.str.replace("\n", " ")	
    idxs = np.arange(df.shape[0])	
    np.random.seed(seed)	
    np.random.shuffle(idxs)	
    val_size = int(len(idxs) * ratio)	
    df.iloc[idxs[:val_size], :].to_csv(valtestfile, index=False)	
    df.iloc[idxs[val_size:], :].to_csv(trainfile, index=False)	
#先将sms_spam.csv数据分为train.csv和test.csv	
split_csv(infile='data/sms_spam.csv', 	
          trainfile='data/train.csv', 	
          valtestfile='data/test.csv', 	
          seed=999, 	
          ratio=0.2)	
#再将train.csv分为dataset_train.csv和dataset_valid.csv	
split_csv(infile='data/train.csv', 	
          trainfile='data/dataset_train.csv', 	
          valtestfile='data/dataset_valid.csv', 	
          seed=999, 	
          ratio=0.2)

1.1 参数解读

split_csv(infile, trainfile, valtestfile, seed, ratio)

infile:待分割的csv文件

trainfile:分割出的训练cs文件

valtestfile:分割出的测试或验证csv文件


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用torchtext导入NLP数据集的操作

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址