NeuralNLP-NeuralClassifier的使用記錄,訓練預測自己的英文文本多分類
NeuralNLP-NeuralClassifier是騰訊開發的一個多層多分類應用工具,支持的任務包括,文本分類中的二分類、多分類、多標簽,以及層次多標簽分類。支持的文本編碼模型包括 FastText, TextCNN, TextRNN, RCNN, VDCNN等。這篇博客將介紹如何使用這個項目實現文本的多標簽多分類任務。
這里記錄本人的英文文本分類,總共分6類。數據背景是:
2023 國際高等教育數學成型競賽-A題 購物評論的數據分析的英文評論數據。
NeuralNLP-NeuralClassifier項目代碼地址:
GitHub項目原開源代碼
文章末有本次實驗全部代碼和數據。上傳百度網盤,下載解壓即可使用
項目目錄介紹:
|--conf # config文件存放目錄
|--data # 所有數據和schema存放目錄
|--dataset # 構建dataloader所需腳本
|--evaluate
|--model|--classification # 項目中使用到的所有特征編碼器|--attention.py|--embedding.py|-- ...... 各模型通用的一些模塊
|--predict.txt # 執行預測生成的預測結果
|--checkpoint_dir_{} # 訓練過程中保存下來的權重文件目錄
|--dict_{} # 加載數據時產生的緩存文件目錄
|--train.py # 官方提供的訓練腳本
|--eval.py # 官方提供的評估腳本
|--predict.py # 官方提供的預測腳本
一、構建自己的數據集格式
數據樣式很簡單,逐行的json格式,包括四個字段,使用者需要按照如下的形式去組織數據:
{"doc_label":["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"],"doc_token": ["I", "love", "deep", "learning"],"doc_keyword": ["deep learning"],"doc_topic": ["AI", "Machine learning"]
}"doc_keyword" and "doc_topic" are optional.
"doc_label"就是這篇文檔對應的所有標簽構成的list,如果是單分類任務,list的長度為1,層次分類任務,各層之間用“–”進行分隔;
"doc_token"是這篇文檔對應的所有token,中文可以使用各種分詞工具進行分詞。
“doc_keyword” 和"doc_topic"是在fasttext算法中提供額外的輸入特征的,可以不提供,但是這兩個字段必須要有,可以置為空。
二、構建自己的數據集:
自己數據數據處理成JSON文件,一段英文文本的標簽,以及它的文本的詞等等…
如何構建自己數據集url
編寫自己數據的文本標簽類別,我這里是數字標簽,也可以文本標簽,代表自己數據集總共有哪些標簽。
后面的訓練配置文件需要填入該文件的路徑
三、訓練:
模擬conf/train.json,自己數據就得寫訓練配置參數:
訓練配置參數主要修改:
訓練命令:
終端命令界面:
python train.py conf/english_train_conf.json
訓練完后會生成相應的文件夾:有保存模型權重的、以及記錄訓練的:
驗證命令:
python eval.py conf/english_train_conf.json
運行完后會生成混淆矩陣,評價指標:
四、預測:
預測時,構造預測數據,類似于訓練的數據集,只是label為空:
處理待測的數據集,處理成JSON文件,如何處理,請看另一篇博文:
NeuralNLP-NeuralClassifier的使用記錄(二),訓練預測自己的【中文文本多分類】
放入文件夾:
預測命令:
python predict.py conf/english_train_conf.json englishdata/pridetct.json
預測完后:
會生成predict.txt文本,txt里每一行就是每一個英文文本的預測分類:
代碼獲取:
鏈接:https://pan.baidu.com/s/1PSA_0rMAzVBNGUmZQBczdw
提取碼:2023