文本分类发展过程:
- 词匹配法
- 知识工程
- 统计学习(Rocchio算法、朴素贝叶斯)
- 机器学习(KNN SVM)
- 深度学习(CNN LSTM)
FastText
TextCNN
TextRNN
TextRNN+Attention(处理长序列):等同HAN
TextRCNN:
FastText
词向量求平均+DNN
TextRNN
1.普通LSTM
使用最后一个状态
劣势:最后输出跟最近的输入有关,与输出远的内容不会保存
2.双向LSTM
每一步输出状态进行组合:拼接、pooling等
解决普通的劣势
TextRNN+Attention:HAN(Hierarchy Attention Netword)
层次结构:先训练词embeding再训练句子embedding(分层结构更符合现实理解)
增加attention机制(类似门机制),加权计算
TextCNN
- 一维卷积
应用到时间维度
Embedding长度就是输入通道数目
最后生成多少列就是输出通道数目
多种层次的卷积核 - 池化
在时间层次上pooling - CNN和RNN文本分类问题对比
CNN不能完美解决序列式问题
CNN卷积相当于N-Gram,LSTM提供更长的依赖
CNN模型并行程度高,更快
双向RNN会增强效果
都需要embedding,可以使用Pre-train的embedding,如word2vec
对embedding可使用压缩
TextRCNN文本分类
- 双向RNN对每步词语提取信息
上文信息
下文信息
当前词输出 - 三个信息合并后进行一维卷积
- Max_pooling
- 全连接层