bert模型相关(二)

模型微调

模型用了bert的中文预训练模型,直接在runclassify.py上做的修改
修改后的模型示意图:
在这里插入图片描述

1. 去除segment层

因为直接采用了字符作文输入,不再需要segment层。

2. 去掉了[CLS] 和[SEP]

因为考虑到在预测的时候可能在句中出现[CLS]和[SEP]的label,但是这种标记不属于标点符号。

3. 替换bert分词器

对于作文中可能出现的英文单词还要考虑子词划分的问题,比如这里把playing 分成play 和##ing,原始的数据是words长度为200,对应的 labels 长度也为200。如果进行子词的切分,words 会增加,但是lable不变,label的处理会成为一个问题。所以对于英文句子采取split(‘ ‘)方法,用空格来进行分词,没有使用bert的分词器划分子词。因为没有划分子词,所以有些词在 bert 的 vocab 中找不到,对找不到的词统一替换为[UNK]。如果是中文的就可以很好的解决子词标记这个问题。

4. 添加全连接层
在bert的输出后简单地接了一个全连接层。之后用交叉熵算loss。

参考文献:https://github.com/w5688414/BERT-Punctuation-Prediction