text: textCNN实战记录
  在之前的文章中已经介绍过textCNN的模型结构以及论文中的一些细节，可以参考以下链接：CNN之TextCNN结构详解和本文主要讲解在实战中使用textCNN完成文本分类需要注意的一些细节。为了使本文理解起来更加清晰，本文内容可以概括为2大块，第一部分介绍textCNN模型的搭建，第二部分讲解根据训练语料构建模型输入的过程。整个实战过程还包括，模型训练、模型评估验证、绘制准确率曲线等，但是这些内容并没有什么特殊的地方，就是正常的调用fit方法，evaluate方法等，所以本文不再介绍这部分内容。一、模型搭建TextCNN的网络结构可以概括为：输入层 --》 一层(n个)卷积层 --》最大池化层 --》 全连接层（使用了dropout） --》输出结果1.首先是一些参数的定义filter_sizes指定了使用的卷积核大小和个数，这里使用了3个卷积核，大小分别是3，4，5num_words 指定了词库的大小，这里的embedding_matrix是词库中词语的向量化表示sequence_length指定用于分类的每个文本长度 （超过了就截取，不足的就填充）embedding_dimension 指词向量的维度，及embedding_matrix中每个词向量的维度2.然后实现卷积层和最大池化层3.最后构建从输入到输出的过程这里着重介绍下layers.Embedding层，Embedding层只能用作模型中的第一层，它将整数（索引值）转换为固定尺寸的稠密向量，在文章中详细介绍了embedding层的使用。二、从语料数据构建输入数据从第一部分中可以知道，模型通过Embedding层接收输入数据，我们使用word2vec预训练得到的embedding_matrix，embeddding层就是根据输入从embedding_matrix中查表的过程，因此输入数据（一个由多个单词构成的文本），应该转换成embedding_matrix词库中词语的索引表示，即用索引代替单词，一个文本是由多个索引表示的。知道了最终需要的输入数据格式，接下来就是如何构建了。训练数据示例如下：review是文本数据，sentiment是情感类别，包括01，用于二分类训练；rate是情感等级，0-8，用于多分类训练这里用伪代码介绍构建的思路：读取数据，取得reveiw和label，构建review列表和label列表；加载预训练word2vec词向量1.遍历review中每一个文本的每一个单词： 去除停用词； 去除不在word2vec中的词向量； 统计词频，去除低频词； 利用剩余词和word2vec构建embedding_matrix，同时记录每个词对应的索引，得到 word2idx字典。2.遍历label列表：  去重，得到label标签集，构建 label2idx 字典。3.根据word2idx和label2idx将review列表和label列表转换为索引表示的列表4.对索引表示的列表划分数据集，得到训练集和验证集之后就可以将训练集数据通过fit方法输入给第一部分构建的模型中了。整体的思路就是围绕如何构建embedding_matrix以及word2idx和label2idx，之后完成由原本词语组成的文本转换为由索引表示组成的文本，即可得到输入数据。