这周主要复习了一个开源项目,在cnew数据集上做文本分类,简单的记录一下,方便以后查看。
1.首先是数据集的介绍:
cnew是一个中文的新闻数据集,标签主要有[‘体育’,‘’]10个分类,分为训练集,验证集和测试集。
数据预处理部分就是一般的自然语言处理的标准过程(没有使用到分词工具,是按照字符级进行训练的),包括生成字典,把words和labels转换成对应的id, 生成批数据。
2.模型部分
模型主要使用了cnn和lstm,框架使用的是tensorflow。
模型分三个部分:
embedding层,使用tensorflow自带的函数embedding_lookup()将输入的句子的维度转换成[batch_size, max_length, word_embedding_dim]
特征提取层,这里使用两种不同的特征提取器。
cnn作为特征提取器时,一般是conv-dropout-activate,卷积核的大小是kernel_size,使用的卷积核的数目是filter_nums,经过卷积操作处理后的sequence的大小是[batch_size,max_length-kernel_size+1,filter_nums],如果使用池化操作,可以选择max_pooling, average_pooling等,大小是[batch_size, filter_nums]
lstm作为特征提取器,隐藏层的节点个是hidden_dim,本文使用的两层lstm(注意这里使用的两层lstm是同方向的,和双向lstm是不同的),在层之间可以使