人工智能A7论坛 >> Tensorflow和深度学习笔记_论坛版 >> 6 CNN 在自然语言处理中的应用

6.4 实战:基于CNN的query意图分类模型

训练数据:分析某行业query对应的意图;一共有十几类意图,通过人工标注几万条。

训练10epoch,基于这10epoch来评价三种方案的效果:  

方案1:不使用pre-trained 词向量

Dev集  92.3%  测试集 92.8%

说明:数据分为“训练集 交叉验证 测试集”三种,Dev集就是交叉验证的数据集

 

方案2:使用预训练的词向量,但embedding层通过fine-tuning进行调整。

我们使用pre-trained 词向量(50维),但是pre-trained 词向量只赋初值,embedding层的权重在训练过程中可以变化。

这里我使用的是自己通过医疗行业几千万bidword训练出的词向量,不过有时候如果要偷懒,也可以使用网上公开的词向量(效果会略微差点):

https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md

 

训练效果(准确率)

Dev 集  94.4%   测试集  93.4%

 

方案3:使用预训练的词向量,且embedding层不许在训练时改变。

embedding不接受训练时 训练效果(准确率):

Dev集:93.6%  测试集:94.3%

 

由于我们最终希望的是结果能够有比较好的泛化,因此,pre-trained 的词向量在赋给embedding层以后不许再修改,似乎是一种最好的方式。

通过预训练的词向量,我们的准确率提升了1.5%。效果还是很明显的。