以下学习笔记来源于 Coggle 30 Days of ML(22年1&2月)
链接:https://coggle.club/blog/30days-of-ml-202201
比赛链接:https://aistudio.baidu.com/aistudio/competition/detail/45/0/task-definition
了解BERT和NSP
BERT
BERT的全称为Bidirectional Encoder Representation from Transformers,是一个预训练的语言表征模型。它强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练,而是采用新的masked language model(MLM),以致能生成深度的双向语言表征。在多个NLP任务中取得非常好的结果。
Next Sentence Prediction(NSP)
一些如问答、自然语言推断等任务需要理解两个句子之间的关系,而MLM任务倾向于抽取token层次的表征,因此不能直接获取句子层次的表征。为了使模型能够有能力理解句子间的关系,BERT使用了NSP任务来预训练,简单来说就是预测两个句子是否连在一起。具体的做法是:对于每一个训练样例,我们在语料库中挑选出句子A和句子B来组成,50%的时候句子B就是句子A的下一句(标注为IsNext),剩下50%的时候句子B是语料库中的随机句子(标注为NotNext)。接下来把训练样例输入到BERT模型中,用[CLS]对应的C信息去进行二分类的预测。
(参考自https://zhuanlan.zhihu.com/p/98855346)
使用BERT完成NSP任务
NSP简单来说就是预测两个句子是否连在一起,对于文本相似度任务中的两个句子text1和text2,若其相似,我们可以认为text2是text1的next sentence,反之则不是。千言数据集的文本相似度数据有bq、lcqmc和pawsx,我们分别读取这些数据并训练对应数据的模型,最后使用模型预测对应的测试数据集并提交结果(可以尝试将所有训练数据合在一起训练后预测测试数据,目前还没有试,不知道效果如何)。
导入基本库
import pandas as pd
import torch
from sklearn.model_selection import train_test_split
from torch.utils.data import Dataset, DataLoader, TensorDataset
import numpy as np
import pandas as pd
import random
import re
读取数据
#读取tsv文件的方法
def read_tsv(input_file,columns):
with open(input_file,"r",encoding="utf-8") as file:
lines = []
for line in file:
if len(line.strip().split("\t")) != 1:
lines.append(line.strip().split("\t"))
df = pd.DataFrame(lines)
df.columns = columns
return df
bq_train=read_tsv('./bq_corpus/train.tsv',['text1','text2','label'])
lcqmc_train=read_tsv('./lcqmc/train.tsv',['text1','text2','label'])
pawsx_train=read_tsv('./paws-x-zh/train.tsv',['text1','text2','label'])
bq_test=read_tsv('./bq_corpus/test.tsv',['text1','text2'])
lcqmc_test=read_tsv('./lcqmc/test.tsv',['text1','text2'])
pawsx_test=read_tsv('./paws-x-zh/test.tsv',['text1','text2'])
自定义DataSet
#数据集读取
class QYanDataSet(Dataset):
def __init__(self,encodings,labels):
self.encodings=encodings
self.labels=labels
#读取单个样本
def __getitem__(self,idx):
item={
key:torch.tensor(val[idx

本文介绍BERT模型及其NextSentencePrediction任务,并通过实例演示如何使用BERT解决文本相似度问题,包括数据处理、模型训练及预测。
最低0.47元/天 解锁文章
1852

被折叠的 条评论
为什么被折叠?



