使用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()的一個實例的形式放進了模型中。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。