基于卷积神经网络的查询意图检测【论文笔记】

a 夏天 提交于 2020-01-13 21:56:33

原文:Query Intent Detection using Convolutional Neural Networks

主要贡献:

  • 使用卷积神经网络来提取查询向量表示作为查询分类的特征
  • 使用该特征来对查询意图分类
  • 能有效地检测出查询意图,具有较高的查准率和查全率

导言

  • 现代搜索引擎为了满足用户的搜索需求,需深入了解用户的查询,识别查询背后的意图。例如,查询“美国总统”将返回巴拉克奥巴马作为答案,查询“匹兹堡图片”将首先显示图像搜索引擎的结果。
  • 查询意图识别的挑战性:查询通常很短;识别用户意图需更多的上下文而不只是关键字;意图分类的数量非常大。大多数方法都需要大量的人力来为每个意图类定义模式。
  • 本方法是使用深度学习来对查询向量表示,然后将其用作特征来按意图对查询进行分类。

相关工作

两种主流方法来识别查询意图:

  • 基于规则的方法:使用预定义的规则将新查询与其意图匹配,如果能匹配上则一定是精确的,但可能缺少相应规则而覆盖率低,规则需要大量人力来设计
  • 基于统计的方法:监督或非监督学习,在监督方法中需要基于领域知识或特征工程
  • 本文自动生成生成查询向量作为特征,而不需人工设计分类特征。

查询意图识别

本方法

本模型包括两个步骤:

  • 离线时训练模型参数,利用标记了意图的查询样本学习卷积神经网络的参数和分类器
  • 在线时在新查询上运行模型,得到其意图分类结果
    在这里插入图片描述
    在离线训练阶段:
  • 将查询通过word2vec向量表示为矩阵
  • 通过卷积层和基于时间的最大池化层
  • 然后通过全连接的softmax层,再与实际的意图向量计算交叉熵来计算损失函数值
  • 训练步骤就是经典的用于分类的卷积神经网络,只不过卷积层和池化层都是一维的
    在这里插入图片描述

用于对比的方法

  • 基于规则的方法(Rule-based):通过人工制作和自动生成的正则表达式,利用实体标记器将查询映射到对应的命名实体。当查询有相应规则时该方法非常有效。该方法的缺点在于,关键词需要专家人工收集,缺乏扩展性。
  • 词袋特征(Unigram、Unigram+bigram):将查询的N元组作为特征,输入分类器来学习参数
  • 聚合词向量特征:将查询每个单词通过word2vec词嵌入生成词向量,在通过对所有的词向量相加(Sum w2v)或求平均(Average w2v)作为特征,输入分类器来学习参数

实验

数据和实验设置

  • 数据:从商业搜索引擎日志中收集,人工标注后低层次意图有3800个,高层次意图有350个。选择了10000个查询样本来实验。
  • 随机森林参数: 10折交叉验证,n_estimators=100(树的数量)
  • 本方法参数:使用窗口大小为2,3和4的三个卷积核(分别获取二元组、三元组和四元组信息),每个通道数为100,使用dropout(0.5),使用Rulu激活,minibatch大小是50.
  • 使用准确率和平均精确率,召回率以及Fscore作为性能指标
    方法的准确率=正确预测的查询意图数量/总的查询
    每个意图分类的精确率、召回率和Fscore分别为
    意图i的精确率P(i)=正确预测为意图i的数量/预测为意图i的数量
    意图i的召回率R(i)=正确预测为意图i的数量/真正的意图i的数量
    Fscore(i) = 2 * P(i) * R(i) / (P(i) + R(i))

实验结果

低层意图分类实验,基于规则的方法表现一般,聚合词向量特征可以与基于规则的方法媲美,Unigram是查询意图识别的较好特征,本方法性能略优于词袋特征。
在这里插入图片描述
高层意图分类实验中,查了Unigram达到最佳平均精度外,结果趋势与低层意图分类相当。
在这里插入图片描述
在查询聚类实验中,将对各查询从CNN提取出的嵌入用来对查询进行聚类,通过kMeans聚类,相似的查询被分组在同一类中。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!