1.数据
以某一双鞋子为例,评论结果作为标签(2分类:好评,差评)
【穿了一段时间,不错,喜欢的下单吧;好评】
【鞋子收到了,不是很满意。没有吊牌,一直都是还是只有我这一双是;差评】
数据处理步骤:
把所有评论数据集分词,去除停用词,然后构建word2index,然后表示“句子”,以“穿了一段时间,不错,喜欢的下单吧”为例子,分词后为【穿了/一段/时间/,/不错/,/喜欢/的/下单/吧】,则表示成【2/3/677/89/…】等等,这里句子长度为10,如果某个词作为停用词去掉,比如“的”,则在词汇表中映射不到index,用某个数字比如“0”填充。这里不需要每个句子的长度都统一固定。因为Embedding层能处理。
2.Embedding层的处理
Embedding层把“数据处理步骤”后得到的评论表示【2/3/677/89/…】重新解析为one-hot的表示形式,如果【2/3/677/89/…】的长度为46,则表示为【46 x 词汇表长度】,Embedding层的输入为(词汇表长度)个神经元,输出为(向量的表示长度,假设是128)个神经元,这里的Embedding层只有weight,没有bias。即【46 x 词汇表长度】则代表有46条数据,输入Embedding层,最终的输出为【46 x 128】。
3.CNN_Text 层
假设一条数据的句子长度为46,向量的表示长度128,则Embedding层的处理之后有46*128的一张“图”。
注意:假如下一条数据长度不是46,比如是68,则也是经过这个网络。所以,不需要固定句子长度。
参考
1.代码
2.《Convolutional Neural Networks for Sentence Classification》