本次项目是文本分类任务,在做这个任务之前犹豫过是不是先写有个文本生成类的,前段时间也做了个对中文的词预测(只有数据处理和用到的模型不一样),但是考虑到文本分类在NLP也是最普遍的,很多项目的开始都会出现,以下将整理我的知识点,必要的时候会放一些代码
一:数据处理准备
一:收集数据
可通过爬虫,下载,或者是huggingface中提取都可以
二:数据预处理
在这一步骤开始非常的重要,数据的质量会直观的影响分类的结果
1:解析类别:
本地中有多个文件数据例如(体育,股票,教育...),每个文件夹里面对应相关的文本信息,首先需要将每个文件夹定一个一个标签,例如(体育:A,股票:B,教育:C)
2:加载所有文件:
读取所有文件下的文本信息
3:词向量库准备
1:分词:使用jieba分词器进行分词,去除停用词
2:设置文本长度,过长了就裁剪,长度不够用pad补充
3:对分词之后的文本储存,并且另外存储出现的词,每次词出现的次数做个字典,进行排序(需要额外添加一个PAD),为预测不存在的词做准备
4:数据增强:随机截取文本,随机mask;采用此功能是为了增加模型的泛化能力,可以更好的处理不同的输入和输出
5:重采样:在文本分类的任务中,数据集的不平衡是一个常见的问题。这种不平衡导致了训练的过程中对出现量多的数据过拟合,对量少的数据容易忽略,因此实现每个epoch重采样,避免较多的类别没有加入训练
三:模型准备
采用TextCnn模型,是因为是采用了卷积神经网络CNN,模型通过嵌入,卷积层,池化层和全连接层结构提取特征,特征的提取更加适合分类的任务
四:训练模型
在准备好数据和模型,以下可以正式的开始训练模型,
1:数据给模型训练,使用交叉熵损失函数
2:梯度下降,反向传播,更新梯度
3:计算准确率,精准率
4:跟新学习率
五:总结
数据准备的时候可以使用训练好的词料库,也可以用word2vec,比上述我的方式都更加的适用,另外这个模型的项目采用到的都是一些常见的知识点,很多我都一句话概括。以下我放上代码以供参考。
链接: https://pan.baidu.com/s/1njA1pteHQVe2Q3vC_qlQRw 提取码: ey2i
--来自百度网盘超级会员v4的分享