Tensorflow实现《Convolutional Neural Networks for Sentence Classification》(附github代码)

一、任务需求

paper原文:Convolutional Neural Networks for Sentence Classification

作者采用卷积神经网络对评论进行分类,得到正面/负面类别,是CNN在NLP领域的应用。


二、所用工具

python(Anaconda3)

tensorflow 1.0.0

Ubuntu 16.04.1 LTS


三、代码框架

代码地址:https://github.com/zhuangchen-nlp/cnn-text-tf

代码参考了dennybritz,在实现上较朴素。

  • 对输入文本进行数据清洗。
  • 将输入文本转换为词ID表示形式,添加标签。划分训练、验证集,训练集分批次载入。
  • 构建CNN。先将输入词ID构成的句子转换为词向量矩阵,形成词向量矩阵。
  • 卷积层。filter_heights = [3,4,5],weight与词向量维度相同(均为128)数量均为128。卷积后得到三组feature map。
  • 池化层。采用max-pooling,得到三组1x1x128的feature map,将其reshape为[384]维度的特征向量。
  • 全连接层。输入为384维,输出为2维。
  • 按batch训练CNN。

四、实验结果

step:10 , loss:1.78979 ,acc:0.47
step:20 , loss:1.31648 ,acc:0.58
step:30 , loss:1.24183 ,acc:0.46
step:40 , loss:1.17655 ,acc:0.46
step:50 , loss:0.893627 ,acc:0.54
...
...
...
After 500 steps, in validation dataset, loss is 0.618283, acc is 0.651032
...
...
...
step:9600 , loss:0.0012076 ,acc:1
After 100 epochs, in validation dataset,final accuracy is 0.74015.

你可能感兴趣的:(自然语言处理,深度学习)