TextCNN

首先导入了tensorflow与numpy包,然后代码主要是建立一个可复用的TextCNN类,类的初始化参数

sequence_length:CNN需要固定输入与输出,所以每个句子的输入都是定长*词向量长度,定长一般设为最大句子长度,如果输入的句子词数没到定长就补充零,补充的零对后面的结果没有影响,因为后面的max-pooling只会输出最大值,补零的项会被过滤掉

num_classes:输出的文本类别总数也就是文本中有几个类别

vocab_size:字典大小,在之前的文本预处理阶段需要对文本进行分词与对单词进行编号,在训练的时候也是输入单词的id然后再词向量化,字典大小用通俗的话来说就是文本中出现了多少个词

embedding_size:嵌入长度,指的是词向量长度也就是用一个多大维的向量来表示词语,一般来说根据文本的规模定词向量的维度大小,样本数太少时使用较大维的词向量会造成难以收敛与容易过拟合的问题,有的TextCNN在这里会有一些区别,有的会采用固定的word2vec、fasttext、glove预先训练好的词向量

filter_sizes:卷积核大小的List,TextCNN里面的卷积和大小其实对应了传统NLP的n元语法的概念,这里的卷积核都是filter_size*embedding_size,其实就是filter_size个词作为一个整体来考虑,也可以理解为中文中有的词是一个字有的词是两个字,在不同卷积核的情况下对应数量字数的词会表现出更好的效果

num_filters:每个卷积核大小对应的卷积核个数,这里为了偷了一点懒,将不同大小卷积核的数量都设为一个常量

l2_reg_lambda:这个就是L2正则的权值,就不多解释了

你可能感兴趣的:(TextCNN)