更新进度:■■■■■■■□□□□□□□□□□□□□□□□|30%
理论上一周更一个经典论文
刚刚开始学习,写的不好,有错误麻烦大家留言给我啦
目录
- 理论知识
- 文本表示:
- 文本分类方法:
- 基于规则的文本分类
- 基于特征的文本分类方法
- 基于卷积神经网络的文本分类
- 学习目标:
- 模型构成:
- 感受野
- 代码复现
- 数据集
- 词向量模型
- 程序结构
- 代码可学习技巧
题目 | 期刊名/文献类型 | 年份 | 解决问题 | 解决对策 | 创新点 | 论文不足 | 下一步工作 | 技术难点 | |
理论知识
文本表示:
词袋子:one_hot 不考虑文本的序列信息,就像将信息放进了一个袋子里。有多少词就需要有多少维度,数据处理的压力会比较大
词嵌入:Word2Vec(2013年Efficient Estimation of Word Representations in Vector Space) 更多的考虑了语义关联,很大程度缩小了存储空间。
文本分类方法:
基于规则的文本分类
一句话出现很好很快,就认为这句话的表述是好的
基于特征的文本分类方法
基于卷积神经网络的文本分类
学习目标:
模型构成:
为什么将感受野设置成(3,4,5)?
感受野
写的很好的解释 输出的feature map中的一块是由原始图像(不是上一层图像)的a*a来的,他的感受野就是a
卷积器的数量为什么是100?
超参数设置:
使用一维卷积
代码复现
数据集
原论文中使用了七个数据集,本代码使用了两个数据集
MR和TREC
数据集github
词向量模型
很多公司都提供了预训练好的词向量模型
本程序使用的是谷歌公司的"googlenews-vectors-negative300.bin"
程序结构
torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
- in_channels(int) – 输入信号的通道。在文本分类中,即为词向量的维度
- out_channels(int) – 卷积产生的通道。有多少个out_channels,就需要多少个1维卷积
- kernel_size(int or tuple) - 卷积核的尺寸,卷积核的大小为(k,),第二个维度是由in_channels来决定的,所以实际上卷积大小为kernel_size*in_channels
- stride(int or tuple, optional) - 卷积步长
- padding (int or tuple, optional)- 输入的每一条边补充0的层数
- dilation(int or tuple, `optional``) – 卷积核元素之间的间距
- groups(int, optional) – 从输入通道到输出通道的阻塞连接数
- bias(bool, optional) - 如果bias=True,添加偏置
代码可学习技巧
- 从字典中读取变量,变量定义更直观
params =
{
“MODEL”: options.model,
“DATASET”: options.dataset,
“SAVE_MODEL”: options.save_model
}
params[“MODEL”]
- Gensim的model.keyedvectors模块,KeyedVectors.load_word2vec_format() 加载原始二进制格式的模型
参考文章:
写的很好的博客PyTorch中的nn.Conv1d、nn.Conv2d以及文本卷积
Keras之文本分类实现一维卷积(1D-CNN)、二维卷积(2D-CNN)、三维卷积(3D-CNN)
Convolutional Neural Networks for Sentence Classification阅读笔记及复现
论文《Convolutional Neural Networks for Sentence Classification》总结
Convolutional Neural Networks for Sentence Classification论文解读