利用CNN来做NLP(textcnn)

讲到nlp,我们常用的都是lstm/gru。
举个例子,因为我们总会说,因为句子经过embdding后,句子为一个三维张量,假设为:(None,20,300)。其中20为timestep,也就是一个句子的单词个数,300为embdding维度。为了更深的理解句子,剖析句子语意,我们假设接上一层lstm(num_units=128,return_sequence=True),那么输出的张量就为(None,20,128)。你会发现句子的embedding维度变了,我们可以说经过lstm后,我们用一种更高级的方式表示出了单词的维度,不再是300,而是128了。也就是句子变了。我们往往会接上两层这样的lstm,之后再接一些池化层、全连接层等等,一个基本的nlp分类网络就形成了~

那么如果我告诉你CNN同样可以改变句子的维度,就像lstm那样变成一个新的句子,且新句子更容易被网络理解,而且提供了n-gram的信息。是不是很神奇?

等一下。n-gram?他不是tfidf那边的东西吗?(如果不明白n-gram,请先自行百度)我们为了结合单词间的关系,我们把连续的2个词,3个词…称为一个term。在神经网络也可以完成这样的转换?是的,这就是textcnn。

OK。textcnn我不想讲太多,我建议直接看下面这篇博文,我自己写也写不了这么多,这么好。但是看完后,我会加一些自己的东西。

链接:[NLP] TextCNN模型原理和实现

看完之后我想你一定有一些体会,但是肯定还会有一些疑问。我想你的疑问不外乎这些:
1.我想知道textcnn每一步之后的输出张量的形状,这样我方便知道每一层发生了什么,显然上面的链接没有给你很直观的体验。
2.我想知道为什么用Maxpooling不用平均池化?
3.我想知道为什么要用池化。。。
4。卷积和池化和我以前在cv里看到的不一样。。看不懂。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值