Datawhale组队学习NLP_情感分析Transformer学习笔记

本文为学习Datawhale 2021.9组队学习情感分析笔记
原学习文档地址:https://github.com/datawhalechina/team-learning-nlp/tree/master/EmotionalAnalysis


最后一个任务再重走一遍全流程

1 设置随机种子数

"""1.set seed"""
SEED = 1234

torch.manual_seed(SEED)
torch.backends.cudnn.deterministic = True
torch.cuda.manual_seed(SEED)
torch.cuda.manual_seed_all(SEED)

2 加载数据

baseline的数据处理方式

"""2.load data"""
# 设置分词 标记器spacy,并指定使用模型
TEXT = data.Field(tokenize='spacy', tokenizer_language= 'en_core_web_sm')
LABEL = data.LabelField(dtype = torch.float)

# 如果之前运行过,数据会保存在那个文件夹里,这里运行的时候就不会再下了,可以手动把数据放一份到该目录下的.data
# 可以点进函数里手动下载后再保存
train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)
# 设置seed确保每次的分割结果相同
train_data, valid_data = train_data.split(split_ratio=0.8, random_state=random.seed(SEED))

Transfomer模型实现的数据处理步骤需要进行分词,每一种Transformer模型都是使用特定的词汇进行训练的,所以我们需要使用每一种Transformer模型为我们提供的其专有的分词器(tokenizer)对我们的数据进行处理,除此之外还需要知道模型的最大输入长度和[CLS],[EOS]等特殊token对应的序号。

tokenizer = BertTokenizer.from_pretrained('distilbert-base-uncased')

max_input_length = tokenizer.max_model_input_sizes['bert-base-uncased']

init_token_idx = tokenizer.cls_token_id
eos_token_idx = tokenizer.eos_token_id
pad_token_idx = tokenizer.pad_token_id
unk_token_idx = tokenizer.unk_token_id

def tokenize_and_cut(sentence):
    tokens = tokenizer.tokenize(sentence)
    tokens = tokens[:max_input_length-2]  # 减去了开始和结尾两个标志
    return tokens


"""定义数据处理的字段"""
TEXT = data.Field(batch_first=True,  # Transformer模型要求输入的数据第一维是bs
                  use_vocab=False,  # 不需要切分数据了
                  tokenize=tokenize_and_cut,
                  preprocessing=tokenizer.convert_tokens_to_ids,
                  init_token=init_token_idx,
                  eos_token=eos_token_idx,
                  pad_token=pad_token_idx,
                  unk_token=unk_token_idx)

LABEL = data.LabelField(dtype=torch.float)

"""加载数据"""
train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)

train_data, valid_data = train_
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值