数据集使用bert模型出现bug修改(自用)

数据集使用bert模型

1.文件处理流程

  • 把数据集按比例划分train,test和dev
  • 在excel里把train,test和dev使用=RAND(),打乱排序。
  • 分类从0开始,不允许有负值。
  • 转换成txt格式,编码要为“utf-8”
  • 内容和格式的分隔符要记得查看在在内容里是是否存在相同的分割符,如果存在相同的分隔符,需要处理掉(目的是防止程序识别错误,分割错误)
  • 导入自己语料时,经常出现的错误。“超过所需要的值”,提示:去检查自己的内容和标签分割问题,检查语料。

数据集使用bert模型出现bug修改(自用)_第1张图片

                if len(lin.split('\t')) == 2:
                    content, label = lin.split('\t')#数据集中两个内容中间以\t分割,于是通过split方法拆分出content和label

                    token = config.tokenizer.tokenize(content)#BertTokenizer.from_pretrained(self.bert_path).tokenize(content)
                    token = [CLS] + token#token拼接[CLS],bert用做分类任务必需需要的一个字符
                   #[CLS]与本文中已有其他字词相比,这个无明显语义信息的符号会更“公平”的融合文本中各个字|词的语义信息
                    seq_len = len(token)#句长
                    mask = []
                    # 需要打印后查看,猜测应该是一个与vocab.txt中进行角标对应的过程
                    token_ids = config.tokenizer.convert_tokens_to_ids(token)#为了输入过程中的进一步输入进入bert进行位置embedding等

                    if pad_size:#如果小于指定的pad_size,对不足的文本进行pad补充
                        if len(token) < pad_size:#如果小于指定的pad_size,对不足的文本进行pad补充
                            #对mask进行拼接=前边token_ids长度个数*1+0*长度不足需要补齐的0
                            mask = [1] * len(token_ids) + [0] * (pad_size - len(token))
                            # vocat.txt中角标是0的位置对应的是[PAD]->个人感觉一般来说vocab.txt中的第0位应该都是[PAD]
                            token_ids += ([0] * (pad_size - len(token)))#由于token_ids的后半部分没有补东西,现在也把token_ids的最后补上0
                        else:#len(token) >= pad_size,mask就不设置任何忽略,
                            mask = [1] * pad_size#mask就不设置任何忽略,
                            token_ids = token_ids[:pad_size]#同时把token_ids进行截取,
                            seq_len = pad_size#并重置seq_len
                    contents.append((token_ids, int(label), seq_len, mask))#把每一条数据放入contents
                #vocab.txt中的角标、类别int类型,文本长度,一个待使用的mask
            return contents

bertpoic内容

使用的

  • 训练模型:

    • distiluse-base-multilingual-cased-v1

      模型名称 隐层数 张量维度 自注意力头数 参数量 训练语料
      distilbert-base-uncased6 6 768 12 66M /
      distilbert-base-multilingual-cased 6 768 12 66M /

distilbert-base-uncased: 基于bert-base-uncased的蒸馏(压缩)模型, 编码器具有6个隐层, 输出768维张量, 12个自注意力头, 共66M参数量.
distilbert-base-multilingual-cased: 基于bert-base-multilingual-uncased的蒸馏(压缩)模型, 编码器具有6个隐层, 输出768维张量, 12个自注意力头, 共66M参数量.
预训练模型说明:

所有上述预训练模型及其变体都是以transformer为基础,只是在模型结构如神经元连接方式,编码器隐层数,多头注意力的头数等发生改变,这些改变方式的大部分依据都是由在标准数据集上的表现而定,因此,对于我们使用者而言,不需要从理论上深度探究这些预训练模型的结构设计的优劣,只需要在自己处理的目标数据上,尽量遍历所有可用的模型对比得到最优效果即可.
————————————————
版权声明:本文为CSDN博主「LeeZhao@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36722887/article/details/118191949

你可能感兴趣的:(毕设,bert,bug,机器学习)