1)modeling.py 定义bert模型的主体内容。从input_ids到sequence_output(词语的向量表示)以及pooled_output(句子的向量表示)。 这时后续任务的基础,比如文本分类任务就是得到pooled_output后,将它作为分类层的输入,最终得到分类结果。 input_ids --> BertModel -->sequence_output --> pooled_output 2)run_classifier.py 配置和启动Bert文本分类任务,包括输入样本为句子对的MRPC和输入样本为单个句子的CoLA 3)run_pretraining.py 用于bert的预训练,既使用masked language model和next sentence方法对bert模型本身进行训练。如果使用现有的预训练bert模型在文本分类或问答问题等任务上进行fine_tune,则无需使用run_pretraining.py 4)create_pretraining_data.py 定义了如何将普通文本转换成可用于预训练BERT模型的tfrecord文件的方法。如果使用现有的预训练BERT模型在文本分类/问题回答等任务上进行fine_tune,则无需使用create_pretraining_data.py。 5)tokenization.py 对输入的句子进行预处理: 转换为Unicode 切分成数组 去除控制字符 统一空格格式 切分中文字符(即给连续的中文字符之间加上空格) 将英文单词切分成小片段(如[“unaffable”]切分为[“un”, “##aff”, “##able”]) 大小写和特殊形式字母转换 分离标点符号(如 [“hello?”]转换为 [“hello”, “?”]) 6)run_squad.py 配置和启动基于bert在squad数据集上的问答任务。 7)extract_features.py 这个模块可以使用预训练的BERT模型,生成输入句子的向量表示和输入句子中各个词语的向量表示(类似ELMo)。这个模块不包含训练的过程,只是执行BERT的前向过程,使用固定的参数对输入句子进行转换。 8)optimization.py 用于BERT的optimizer,即加入weight decay功能和learning_rate warmup功能的AdamOptimizer。
参考: https://cloud.tencent.com/developer/article/1454853