BERT源码详解
共四部分:
1.生成预训练数据:create_pretraining_data.py
,tokenization.py’
2.bert模型预训练:run_pretraining.py
3.bert主模型:modeling.py
4.fine-tuning: run_squad.py
第一部分:
生成预训练数据:create_pretraining_data.py,tokenization.py
1.设置tokenizer为fulltokenizer,负责对文本进行预处理:
tokenization.py
FullTokenizer():
1.load_vocab加载词典 ,建立词到id,id到词的映射关系
2.BasicTokenizer(): 对原始文本进行预处理,包括删除无效字符、转换空白字符为空格、将中文及部分韩文日文字符前后加空格、去除accent字符等,最后按空格分隔,返回tokens列表。
3.WordoieceTokenizer(): 把上面的结果再细粒度的切分为WordPiece,WordpieceTokenizer的目的是将合成词分解成类似词根一样的词片。例如,将"unwanted"分解成[“un”, “##want”, “##ed”]
2.构造训练样本:create_training_instances(), create_instances_from_document()
3.随机mask:返回mask后的样本,替换的index,替换的原始文本
4.假设原始两个句子为:”it is a good day”和”I want to go out”,那么处理后的TrainingInstance可能为:
1.tokens = ["[CLS], “it”, “is” “a”, “[MASK]”, “day”, “[SEP]”, “