使用BERT模型的感想

为了参加一项比赛,作为nlp和deep learning小白的我不得不使用google的bert模型。
比赛类似与SQuAD2.0,只不过数据都是中文的。
首先,从github上下载了bert模型和代码,发现google发布了run_squad.py文件,也就是google用来对SQuAD2.0的数据集进行训练的文件。
这个文件可以说是很典型的利用bert的例子了。
我粗浅地认为bert就是一套生成好的embedding的工具,所以不是针对某一项具体的nlp任务。举个例子,如果想做句子分类,只要输入一部分带有标记的句子进行训练,fine-tuning后的bert模型就是一个良好的句子分类器。

Google的代码非常精致,虽然run_squad.py文件有一千多行,但是认真看起来并不费力。

除去一堆flags相关的设置部分,代码的主体就是下面这些函数。


image.png

image.png

并且只有其中

class SquadExample()
class InputFeature()
def read_squad_examples()
def convert_example_to_features()

这些部分,已经predictions的输出部分需要自己重写(改写),至于别的代码,都是google提供给我们的如何读取和使用pre-trained模型的现成代码。

class SquadExample()
def read_squad_examples()

上面这两是紧密联系的。read_squad_examples()的返回值是一个list,每一项代表一个input data,而每个data都转化为了SquadExample()的一个实例储存。

class InputFeature()
def convert_example_to_features()

上面这两个也是紧密联系的,在convert_example_to_features()中,每个input data都以InputFeature()的一个实例的形式放进了模型中。

你可能感兴趣的:(使用BERT模型的感想)