摘录于下文,对NLP分类方法大概了解,内示例代码
入门 | CNN也能用于NLP任务,一文简述文本分类任务的7个模型
0.数据预处理
这一部分讲述了数据来源({0,1}情感数据)、测试集划分(1/10)、噪声清洗(http网址、#主题、@用户)
1.基于词级ngram的词袋模型
流程:提取n-gram特征,组成词-文档(计数)矩阵,再生成tf-idf矩阵作为特征,用LR训练分类模型
2.基于字符级的ngram词袋模型
与基于词的ngram类似,只是分词组合的对象是字符级别,也是生成tfidf后训练预测
3.基于词级 ngram 和字符级 ngram 的词袋模型
由1、2的train的tfidf特征矩阵合并而成,训练预测一致
总结一波:关于词袋模型
- 优点:考虑到其简单的特性,词袋模型已经很强大了,它们训练速度快,且易于理解。
- 缺点:即使 ngram 带有一些单词间的语境,但词袋模型无法建模序列中单词间的长期依赖关系。
4.无预训练词嵌入的RNN
Keras的Tokenizer进行分词(根据词频分词)->映射词表->词嵌入->spatial dropout->GRU->池化->全连接
#清洗后的数据
'breakfast time happy time'
#分词后映射词表
[530, 50, 119, 50]
#句子补0对齐35列
[0,0,0, ...,530, 50, 119, 50]
#嵌入300维,每个句子35*300矩阵
#spatial dropout等处理
#GRU从左到右/从右到左,双向扫描,输出100*2=200维
#最大池化,全连接输出
5.用GloVe预训练词嵌入的RNN
替换4中的嵌入部分,通过自己的语料库做word embedding
也可以用word2vec或其他方法
6.多通道卷积神经网络
用CNN做文本问题,通过设置不同大小的滤波器(下图的(2, 5) (3, 5) 和 (4, 5) ),列维度最大,行维度为不同窗口,类似n-gram
7.RNN+CNN
先RNN,GRU后用CNN来卷积