本文主要是介绍自然语言处理任务之文本分类入门详解(未完待续),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 0. 文本分类简介
- 1. 数据集介绍
- 2. 模型选择
- 3. 数据预处理
- 3.1. n-gram特征构造
参考链接: https://developers.google.com/machine-learning/guides/text-classification
0. 文本分类简介
文本分类在很多软件产品中都占据重要位置,很多智能应用都用到了文本分类模型。有的是将文本分类的结果作为输入以便进行后续其他任务,例如对话系统中的意图识别;有的是直接将文本分类结果最为任务的输出,例如垃圾邮件过滤、评论情感分类等等。无论何种场景,文本分类的准确程度都是一个很关键的指标。
1. 数据集介绍
Internet Movie Database (IMDb) movie reviews dataset
该数据集搜集了人们的影评数据,包含正面和负面两类,是情感分类的常用数据集。
数据集的主要信息如下:
- 样本数量(训练集25000条,测试集25000条)
- 类别数量(2)
- 每一类的样本数量(12500)
- 每条样本的单词个数(中位数174)
- 每个单词在数据集中的频率
- 每条样本的长度的分布
2. 模型选择
模型选择包含一下几方面的考虑:
- 选择何种文本表示方法?(将文本数值化的方法)
- 选择何种分类模型?
- 模型参数如何确定?
根据google的实验,我们可以参考他们总结出的以下几条经验:
- 计算(样本个数)/(每个样本内的单词数),简记为S/W,其中分母一般取所有样本里面的单词书的中位数。
- 如果上述比例小于1500,则采用bag-of-words(词袋)特征(n-grams+tf-idf),然后利用传统的分类模型(SVM,MLP,LR等)即可,具体见后文
- 如果上述比例大于1500,则采用神经网络(CNN,RNN),将文本序列作为输入特征,它们可以学习到词与词之间的前后关系。
本文涉及的数据集,S/W=144,因此我们可以采用n-gram+MLP作为数据预处理和分类模型的选择方案。
3. 数据预处理
- 随机打乱数据。主要是为了划分训练集和测试集的时候,能够保证训练集和测试集中各类别的样本分布比较均匀。当然,更严谨的一种做法是对label分层抽样。
- 将数据划分为80%的训练集和20%的验证集。有时还要再划分出一个测试集。
- Tokenization:把训练样本切分为一些更小的文本,它们是组成词袋(或者叫词表、词库)的元素,称之为“词”。这样能够泛化样本和label之间的关系,也即更利于模型去学习到样本与label之间的对应关系。
- Vectorization:对词的数值化表示
3.1. n-gram特征构造
这篇关于自然语言处理任务之文本分类入门详解(未完待续)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!