Bert中文文本分类全网最详细教程+源码+数据集

概述

Bert是当前最先进的自然语言处理工具之一。最起码要会使用这个强大的工具。
为了童鞋们能顺利运行,我把数据集改小了。

开始吧

一,运行环境
需要下载两个包,然后解压,但要记住位置,后面要使用到。
1)Bert下载地址:https://github.com/google-research/bert,选择Clone or download;
2)预训练数据(pre-training):Bert-base Chinese,下载地址:https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip,如果做英文分类,请下载对应的包;
3)TensorFlow的版本必须大于1.11.0
4)非必须,如果您使用的是Anaconda,想使用GPU加速(显卡在1060 6G以上),配置Tesnflow-gpu 非常简单,只需一句代码:conda create -n gpu_env tensorflow-gpu,能够完成所有环境的安装;

二,代码修改
需要对bert里的run_classifier.py文件进行修改,有2处:
1)添加我们自己的类,此类与已有的类并列即可;标签可以根据需要自定义,这里我自定义了三个;

class MyTaskProcessor(DataProcessor):
  """Processor for my task-news classification """
  def __init__(self):
    self.labels = ['体育', '财经', '房产']
  def get_train_examples(self, data_dir):
    return self._create_examples(
      self._read_tsv(os.path.join(data_dir, 'train.tsv')), 'train')

  def get_dev_examples(self, data_dir):
    return self._create_examples(
      self._read_tsv(os.path.join(data_dir, 'val.tsv')), 'val')

  def get_test_examples(self, data_dir):
    return self._create_examples(
      self._read_tsv(os.path.join(data_dir, 'test.tsv')), 'test')

  def get_labels(self):
    return self.labels

  def _create_examples(self, lines, set_type):
    """create examples for the training and val sets"""
    examples = []
    for (i, line) in enumerate(lines):
      guid = '%s-%s' %(set_type, i)
      text_a = tokenization.convert_to_unicode(line[1])
      label = tokenization.convert_to_unicode(line[0])
      examples.append(InputExample(guid=guid, text_a=text_a, label=label))
    return examples

2)继续在该文件中进行修改,添加我们刚刚创建的类,具体如下:

def main(_):
  tf.logging.set_verbosity(tf.logging.INFO)

  processors = {
      "cola": ColaProcessor,
      "mnli": MnliProcessor,
      "mrpc": MrpcProcessor,
      "xnli": XnliProcessor,
      "mytask": MyTaskProcessor,
  }
	

三,数据准备
完成上述两步之后,离成功不远了。
1)数据的第一列是标签,第二列是文本数据。注意,两者之间必须用Tab隔开,否则需要修改读取方法;
2)新建一个文件夹,记住位置,里面放三个文件,分别是 train.tsv,test.tsv,val.tsv, .txt 的文件可以直接修改成 .tsv,同时注意格式为无BOM的utf-8格式
3)新建一个文件夹,专门放置模型的输出
至此,已经有四个文件夹了,请记住位置,后面需要。

四,配置训练脚本
里面的路径都是绝对路径,以我的为例,input文件夹放的训练、验证、测试数据集;out放的是模型输出;chinese放的中文预训练数据;bert-base放的是bert。如果您的显存不够大,可以把max_seq_length和train_batch_size修改小一点。

非常重要的是,在具体使用时,将下面的命令行变成一行,每一行用空格隔开,复制,然后在Anaconda对应的环境中打开Terminal,然后粘贴,回车,即可运行

python C:\Users\qct20\A_Python_Code\googlebert\bert-base\run_classifier.py
--task_name=mytask
--do_train=true
--do_eval=true 
--data_dir=C:\Users\qct20\A_Python_Code\googlebert\input\
--vocab_file=C:\Users\qct20\A_Python_Code\googlebert\chinese\vocab.txt
--bert_config_file=C:\Users\qct20\A_Python_Code\googlebert\chinese\bert_config.json
--init_checkpoint=C:\Users\qct20\A_Python_Code\googlebert\chinese\bert_model.ckpt 
--max_seq_length=128
--train_batch_size=8
--learning_rate=2e-5
--num_train_epochs=3.0
--output_dir=C:\Users\qct20\A_Python_Code\googlebert\out

五,配置预测脚本
预测与训练的配置稍有不同,最大的不同是,init_checkpoint的路径为模型的输出,这点非常重要,具体如下。最后运行的操作同上,在输出文件夹out中会有关于每个测试的类别预测概率,注意查看。

python C:\Users\qct20\A_Python_Code\googlebert\bert-base\run_classifier.py
--task_name=mytask
--do_predict=true
--data_dir=C:\Users\qct20\A_Python_Code\googlebert\input
--vocab_file=C:\Users\qct20\A_Python_Code\googlebert\chinese\vocab.txt
--bert_config_file=C:\Users\qct20\A_Python_Code\googlebert\chinese\bert_config.json
--init_checkpoint=C:\Users\qct20\A_Python_Code\googlebert\out
--max_seq_length=128
--output_dir=C:\Users\qct20\A_Python_Code\googlebert\out

六,祝成功

thucnews数据集是用于文本分类任务的一个常用数据集BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer模型的预训练语言表示模型。 在thucnews数据集上进行BERT文本分类任务,需要经过如下步骤: 1. 数据预处理:首先,需要读取thucnews数据集,将数据集划分为训练集、验证集和测试集。可以使用Python中的pandas库来读取和处理数据。 2. 数据标记:对于文本分类任务,需要为每个文本标注相应的类别标签。可以使用整数或独热编码来表示类别标签。 3. 数据向量化:BERT模型只接受固定长度的输入,因此需要将文本转换为向量表示。可以使用词嵌入技术(如Word2Vec、GloVe)将每个词转换为向量,然后使用句子级别的池化操作(如平均池化、最大池化)将文本表示为固定长度的向量。 4. 构建BERT模型:接下来,需要构建BERT模型。可以使用基于TensorFlow或PyTorch的开源实现,如transformers库。 5. 训练BERT模型:使用训练集对BERT模型进行训练。可以设置合适的超参数,如学习率、批大小、迭代次数等。 6. 模型评估:在训练过程中,可以使用验证集对模型进行评估,计算准确率、召回率、F1得分等指标。根据验证集上的性能调整模型参数。 7. 测试模型:最后,使用测试集对训练好的BERT模型进行测试,评估模型的泛化能力和性能。 总结起来,使用thucnews数据集进行BERT文本分类任务需要进行数据预处理、数据标记、数据向量化、构建BERT模型、训练模型、模型评估和测试模型等步骤。这些步骤可以使用相应的Python库和开源实现来实现。最终,我们可以根据测试集上的表现来判断BERT模型在thucnews数据集上的分类性能。
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值