接上一篇:
你所不知道的 Transformer!
超詳細的 Bert 文字分類原始碼解讀 | 附原始碼
章節:
- 背景介紹<p>
-
預處理
完整的 GitHub 專案程式碼地址:
https://github.com/sherlcok314159/ML/blob/main/nlp/practice/sentiment.md
背景介紹
這次的任務是中文的一個評論情感去向分類:
每一行一共有三個部分,第一個是索引,無所謂;第二個是評論具體內容;第三個是標籤,由0,1,2組成,1代表很好,2是負面評論,0應該是情感取向中立。
資料預處理
bert模型是可以通用的,但是不同資料需要透過預處理來達到滿足bert輸入的標準才行。
首先,我們創造一個讀入自己資料的類,名為MyDataProcessor。其實,這個可以借鑑一下谷歌寫好的例子,比如說MrpcProcessor。
首先將DataProcessor類複製貼上一下,然後命名為MyDataProcessor,別忘了繼承一下DataProcessor。
接下來我們以get_train_examples為例來簡單介紹一下如何讀入自己的資料。
第一步我們需要讀取檔案進來,這裡需要注意的是中文要額外加一個utf-8編碼。
讀取好之後,這裡模仿建立train_data為空列表,索引值為0。
程式碼主體跟其他的差不多,有區別的是我們這裡並沒有用DataProcessor的_read_tsv方法,所以檔案分割部分我們得自己寫。同時因為中文每行結束會有換行符(”\n”),需要換為空白。
至於dev和test資料集處理方式大同小異,只需要將名字換一下,這裡不多贅述,這裡放了處理訓練集的完整函式。
然後get_labels方法,裡面寫具體的labels,這裡是0,1,2,那麼就是0,1,2,注意不要忘了帶上英文引號就行。最重要的是去main(_)方法下面新增自己定義的資料處理類別
模型去bert官方下載中文的預訓練模型,其他的對著改改就好,相信看過我的文字分類(https://github.com/sherlcok314159/ML/blob/main/nlp/tasks/text.md)的剩下的都不需要多說。跑出來的結果如下,我用的是Tesla K80,白嫖Google Colab的,用時1h17min47s。