1. 文本情感分类
1.1. 场景背景
文本分类是自然语言处理中一项基础且重要的任务,旨在对给定的文本内容进行分类,如:用户评论情感分类(消极,积极,中立),新闻标题分类(政治,娱乐,军事)等。
随着社交网络的普及,网络文本数据呈现爆发式增长。网络文本的分类极为重要,如:商家判断用户对商品的情感态度以此提升销售额,政府监控社会舆论走向等。
本文通过智能钛机器学习平台,提供快速搭建深度学习文本分类模型的方法。用户无须编写代码,只要拖动相应的组件搭建模型架构,便可以在二十分钟以内快速上手,解决文本分类场景下的实际问题。
1.2. 数据集介绍
在本次文本分类任务中,采用情感分类数据集rt_polarity(二分类数据集)。我们已为您准备好数据集,但如果您想要详细了解该数据可参考源下载地址。
源公开数据中包含两个数据集文件:rt-polarity.neg和rt-polarity.pos,它们分别收集了表征消极(neg)情感的句子和表征积极(pos)情感的句子,文件中的每一行为一个句子,如下图:
但在本次工作流中我们不直接使用原始数据集进行操作。我们做了以下数据集预处理工作:首先我们将neg和pos两个文件合并为一个文件,每行是一个句子,加上一个标签分隔符 label,再加上该句子的情感标签(0或者1:0表示消极情感,1表示积极情感),如下图:
我们对文件里的数据进行切分得到训练集和验证集比例为4:1,即抽取80%的数据作为训练集,20%的数据作为验证集。然后我们从验证集中抽取部分去掉标签的数据作为测试集。训练集用来训练模型, 验证集用于调节模型参数,测试集用来整体评估模型的性能。 本模型通过对测试集的分类准确率展示分类器对无标签数据良好的预测性能。
1.3. 整体流程
工作流整体流程如下:
在本次文本分类任务中,采用快速文本分类器FastText完成类别数为2的句子情感分类任务( FastText快速文本分类器的详情可参考官网)。整个模型完成预计需要3分钟时间,模型工作流主要分为2步:
- 数据准备:训练集,验证集,测试集
- 将训练集喂给FastText分类器进行模型训练,同时利用验证集进行模型选择,最后利用测试集评估模型性能
1.4. 详细流程
一. 数据准备
在智能钛控制台的左侧导航栏,选择【输入】>【数据源】>【 COS 数据集】,并拖入画布中,右键单击该组件【 重命名】为:训练集
填写 COS 路径地址:
${ai_dataset_lib}/rt_polarity/train.txt
注意:${ai_dataset_lib}是地址前缀,请全部复制输入
注意:请务必关闭【是否检查数据】
至此,我们将训练数集成功导入工作流,按照1,2 同样的操作我们可以将验证集、测试集拖拽入工作流,只需修改各自对应的COS路径地址:
验证集:${ai_dataset_lib}/rt_polarity/eval.txt
测试集:${ai_dataset_lib}/rt_polarity/predict.txt
并将组件对应重命名为:验证集和测试集
注意:请务必关闭【是否检查数据】
二. 文本分类器
选择合适的文本分类器,这里以FastText网络为例。
在 TI 控制台的左侧导航栏,选择【算法】>【深度学习算法】>【自然语言处理】>【FastText】
将【FastText】组件拖入画布
将【训练集】的输出桩连接到【FastText】左侧的输入桩上,将【验证集】的输出桩连接到【FastText】 右侧的输入桩上
填写参数:
训练数据输入、验证数据输入和模型目录的路径已根据连线自动生成。
分隔符: label
词向量维度: 300
批处理大小:32
训练epoch数:5
学习率:0.001
是否使用预训练好的词向量:False
GPUs: 深度学习网络用到了 GPU 资源, 可以极大地提高训练速度。 点击该选项,在对话框中选择合适的显卡型号和数量。 默认0
CPUs:宿主机CPU核数(建议设置成GPU卡数的三倍),默认1
其余参数可保持不变
- 此时,如果继续将【测试集】的输出桩连到【FastText】组件最左侧的蓝色漏斗处,并打开【模型运行方式】为自动运行(其余参数可保持不变),就能查看模型对测试集中句子的预测结果
查看预测结果的操作:
模型运行成功后,右键蓝色漏斗处选择【Tensorflow控制台】>【app详情】,在弹出框中点击“详细日志”【stderr.log】即可查看模型结果
三. 运行调度及训练进度查看
详情请参考 运行工作流。