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格式,包括四个字段,使用者需要按照如下的形式去组织数据:
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