深入浅出PyTorch--PyTorch生态介绍

深入浅出PyTorch



1.torchtext主要组成

torchtext可以方便的对文本进行预处理,例如截断补长、构建词表等。torchtext主要包含了以下的主要组成部分:
1)数据处理工具 torchtext.data.functional、torchtext.data.utils
2)数据集 torchtext.data.datasets
3)词表工具 torchtext.vocab
4)评测指标 torchtext.metrics
安装代码

pip install torchtext

2.构建数据集

2.1Field及其使用

一个样本是由多个字段(文本字段,标签字段)组成,不同的字段可能会有不同的处理方式,故创造field。定义Field对象是为了明确如何处理不同类型的数据,但具体的处理则是在Dataset中完成的。

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)

1)sequential设置数据是否是顺序表示的;
​ 2)tokenize用于设置将字符串标记为顺序实例的函数
​ 3)lower设置是否将字符串全部转为小写;
​ 4)ix_length设置此字段所有实例都将填充到一个固定的长度,方便后续处理;
5)​ use_vocab设置是否引入Vocab object,如果为False,则需要保证之后输入field中的data都是numerical的。

from torchtext import data
def get_dataset(csv_data, text_field, label_field, test=False):
    fields = [("id", None), ("comment_text", text_field), ("toxic", label_field)]       
    examples = []
    if test:
        for text in tqdm(csv_data['comment_text']):
            examples.append(data.Example.fromlist([None, text, None], fields))
    else:
        for text, label in tqdm(zip(csv_data['comment_text'], csv_data['toxic'])):
            examples.append(data.Example.fromlist([None, text, label], fields))
    return examples, fields

这里使用数据csv_data中有"comment_text"和"toxic"两列,分别对应text和label。

train_data = pd.read_csv('train_toxic_comments.csv')
valid_data = pd.read_csv('valid_toxic_comments.csv')
test_data = pd.read_csv("test_toxic_comments.csv")
TEXT = data.Field(sequential=True, tokenize=tokenize, lower=True)
LABEL = data.Field(sequential=False, use_vocab=False)

train_examples, train_fields = get_dataset(train_data, TEXT, LABEL)
valid_examples, valid_fields = get_dataset(valid_data, TEXT, LABEL)
test_examples, test_fields = get_dataset(test_data, TEXT, None, test=True)

train = data.Dataset(train_examples, train_fields)
valid = data.Dataset(valid_examples, valid_fields)
test = data.Dataset(test_examples, test_fields)

可以看到,定义Field对象完成后,通过get_dataset函数可以读入数据的文本和标签,将二者(examples)连同field一起送到torchtext.data.Dataset类中,即可完成数据集的构建。

2.2评测指标

常用BLEU (bilingual evaluation understudy) score来评价预测文本和标签文本之间的相似程度。torchtext中可以直接调用torchtext.data.metrics.bleu_score来快速实现BLEU。

from torchtext.data.metrics import bleu_score
candidate_corpus = [['My', 'full', 'pytorch', 'test'], ['Another', 'Sentence']]
references_corpus = [[['My', 'full', 'pytorch', 'test'], ['Completely', 'Different']], [['No', 'Match']]]
bleu_score(candidate_corpus, references_corpus)

主要转自https://github.com/datawhalechina/thorough-pytorch/blob/main/%E7%AC%AC%E5%85%AB%E7%AB%A0%20PyTorch%E7%94%9F%E6%80%81%E7%AE%80%E4%BB%8B/8.4%20%E6%96%87%E6%9C%AC%20-%20torchtext.md

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值