前言

意图识别是通过分类的办法将句子或者我们常说的query分到相应的意图种类。举一个简单的例子,我想听周杰伦的歌,这个query的意图便是属于音乐意图,我想听郭德纲的相声便是属于电台意图。做好了意图识别以后对于很多nlp的应用都有很重要的提升,比如在搜索引擎领域使用意图识别来获取与用户输入的query最相关的信息。举个例子,用户在查询"生化危机"时,我们知道"生化危机"既有游戏还有电影,歌曲等等,如果我们通过意图识别发现该用户是想玩"生化危机"的游戏时,那我们直接将游戏的查询结果返回给用户,就会节省用户的搜索点击次数,缩短搜索时间,大幅提高用户的体验。再进一步说,做好意图识别以后,我们可以将一个用户的query 限定到一个垂直领域比如通过意图识别以后发现该用户输入的生化危机就是想找"生化危机"的游戏进行下载,那么我们在游戏这个领域下进行搜索可以得到更高质量的搜索结果,进一步提高搜索体验。

我们再举一个目前最火热的聊天机器人来说明一下意图识别的重要性。目前各式各样的聊天机器人,智能客服,智能音箱所能处理的问题种类都是有限制的。比如某聊天机器人目前只有30个技能,那么用户向聊天机器人发出一个指令,聊天机器人首先得根据意图识别将用户的query分到某一个或者某几个技能上去,然后再进行后续的处理。如果一开始的用户意图识别识别错了,那么后续的工作直接就是无用功了,会给用户带来非常不好的用户体验。

说了这么多,其实只是想说明意图识别是一件非常重要的工作。我们再来看看目前工业界的水平,就业界来看,目前一些公司的在特定领域的意图识别准确率已经可以达到96%甚至更高了,在可以预见的未来意图识别的准确率只会更高,覆盖范围只会更广, 在通用领域达到99%,甚至99.9%也只是时间早晚的问题。而这个时间也许在两到三年来就可以到来。

做好了意图识别以后,那种类似于电影场景里面人机交互就有了实现的可能,用户向机器发来的每一个query,机器都能准确的理解用户的意图,然后准确的给予回复。人与机器连续,多轮自然的对话就可以借此实现了。想起来真的是非常的激动。

意图识别的前提

在做这个工作之前,我们首先得想好意图的划分问题,这种划分业界有很多叫法,比如技能。我们的聊天机器人有30个技能,潜在意思便是我们的意图有30类。在2018年的CES上面,Google Assistant 号称有100万个技能,这个真的只能说太厉害了。还有一种很通用的叫法叫领域 或者doamin,搜索引擎中的垂域搜索的意思是把用户的query分为很多特定的领域比如电台领域,音乐领域。搜索的时候根据意图识别认为这个query属于电台领域,于是便在电台领域进行搜索。如果意图识别的准确率比较高的话,这样便可以大大加快搜素的速度和准确性。

很多Google Assistant的技能也许只是简单的堆叠,但是对于聊天机器人来说,我们业界一直有个观点,意图识别虽然是聊天机器人非常重要的一个部分,但是解析用户的语义已经慢慢不再成为对话机器人的核心,识别用户的意图以后提供的服务开始成为对话机器人的产品差异化的核心。Goole Home 的100万个技能,绝对是这个领域杀手级别的竞争力。

 其次是应该想好意图识别的可扩展能力,尤其是在搜索领域,对话系统领域,随着意图覆盖的范围急剧增加,如何保证意图的识别的准确率不下降甚至还能有提升其实是个很困难的事情,但是也非常的重要,甚至也许是意图识别最重要的一件事。不然你覆盖的技能数上去了,但是意图识别的准确率下来了,其实很多时候是没有什么意义的。

意图识别可扩展能力的另外一方面体现在简单技能的自动化生成,复杂技能的半自动化生成或者第三方开发者的开发技能的快速接入。在可以预见的未来,对话机器人的技能增加速度会非常的快。类似于Google Assistant 的100万个技能,单凭人力或者某一家公司去开发100万个技能,得开发到猴年马月去了。自动化生成对话系统的技能,并且保持足够的开放性是每一家有追求的聊天机器人厂商应该严肃思考的问题。从业界来看,很多国内聊天机器人的公司这一块可能才刚刚起步,嘴上说着要开放,内心其实比较抗拒,工作排期排的很后。至于技能自动化生成也许还没有思考到这一步来。

   最后一个方面是技能的评价问题,当一个开发者开发完一个技能或者模型自动化生成一个技能以后如何评价一个技能生成的好坏也是非常重要的。简单一点来说虽然我们生成了一个技能,但是也不能生成一个技能就接入到我们的搜素引擎当中或者对话系统中来,必需得符合一定的标准。比如我们在搜索引擎当中开发了音乐 domain的垂域搜索.当我们的意图识别准确的判别用户的query"我想听周杰伦的歌"属于音乐这个domain,并将query分过来到音乐领域进行垂域搜索。如果音乐的垂域搜索做的很差给用户返回的都是陈奕迅的歌。用户体验也不会很好。就我看来,技能评价应该至少包括两个方面评价。第一个方面是效果上面的,如果我们用precision和recall来评价的话,每一个接入的domain或者技能 的F1值必需大于某个值才可以接入。第二个方面是工程上面的,每个接入的技能都必须考虑到访问量大了以后不能宕机。这个对本公司开发的技能不会有大的问题,但是第三方开发的技能,很多时候只考虑了功能的实现和效果上面的问题,往往不会考虑访问量或者qps大了以后怎么处理,结果就会造成整体服务超时。所以这一点也是需要慎重考虑的。

意图识别的基本方法

   1.基于词典以及模版的规则方法

不同的意图会有的不同的领域词典,比如书名,歌曲名,商品名等等。当一个用户的意图来了以后我们根据意图和词典的匹配程度或者重合程度来进行判断,最简单一个规则是哪个domain的词典重合程度高,就将该query判别给这个领域。这个工作的重点便是领域词典便须得做的足够好。

 2.基于查询点击日志

如果是搜索引擎等类型业务场景,那么我们可以通过点击日志得到用户的意图。

   3.基于分类模型来对用户的意图进行判别

使用分类方法是我们本次博客的重点,我们将会使用paddle作为模型的基本框架以CNN外接softmax 和LSTM外接softmax来进行意图识别方面工作的探索。本系列也初步定为三篇博客,本篇会作为开端篇做一些意图识别方面的介绍。第二篇是会使用LSTM+softmax来进行文本分类。第三篇会使用CNN 外接softmax来进行文本分类。

意图识别的难点

当前意图识别工作的难点有很多,在之前的介绍中也提到了一些,但是最大的难点其实是在于标注数据的获取。目前标注数据的获取主要来自两方面,一方面是专门的数据标注团队对数据进行标注,一方面是通过半监督的方式自动生成标注数据,我后续会在调研以后,来专门进行这方面的介绍。本次会利用已有的标注数据来进行介绍。

总结

   本次介绍了意图识别是什么,意图识别的重要性,意图识别的难点以及后续的博客计划,本质上来说意图识别是属于文本分类的一种,和情感分析这类工作没有什么很大的区别。但是相比于情感分析,意图识别的分类种类要比之前多了很多,准确性以及可扩展性的要求也高了不少。敬请期待后续博客的更新。

如何使用padlepadle 进行意图识别-开篇的更多相关文章

  1. 使用LSTM和Softmx来进行意图识别

    前言 在前面我们大致介绍了什么是意图识别,把这个问题抽象出来其实是一个分类问题.在结构上面,我们使用LSTM来提取特征,Softmax来进行最后的多分类.由于语料的限制,我们目前仅考虑电台,音乐,问答 ...

  2. 计算广告(5)----query意图识别

    目录: 一.简介: 1.用户意图识别概念 2.用户意图识别难点 3.用户意图识别分类 4.意图识别方法: (1)基于规则 (2)基于穷举 (3)基于分类模型 二.意图识别具体做法: 1.数据集 2.数 ...

  3. 智能问答中的NLU意图识别流程梳理

    NLU意图识别的流程说明 基于智能问答的业务流程,所谓的NLU意图识别就是针对已知的训练语料(如语料格式为\((x,y)\)格式的元组列表,其中\(x\)为训练语料,\(y\)为期望输出类别或者称为意 ...

  4. 浅谈意图识别各种实现&数学原理

    \[ J_\alpha(x) = \sum_{m=0}^\infty \frac{(-1)^m}{m! \Gamma (m + \alpha + 1)} {\left({ \frac{x}{2} }\ ...

  5. Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)

    所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的 ...

  6. 任务型对话(一)—— NLU(意识识别和槽值填充)

    1,概述 任务型对话系统越来越多的被应用到实际的场景中,例如siri,阿里小密这类的产品.通常任务型对话系统都是基于pipline的方式实现的,具体的流程图如下: 整个pipline由五个模块组成:语 ...

  7. 【NER】对命名实体识别(槽位填充)的一些认识

    命名实体识别 1. 问题定义 广义的命名实体识别是指识别出待处理文本中三大类(实体类.时间类和数字类).七小类(人名.机构名.地名.日期.货币和百分比)命名实体.但实际应用中不只是识别上述所说的实体类 ...

  8. 搜索系统核心技术概述【1.5w字长文】

    前排提示:本文为综述性文章,梳理搜索相关技术,如寻求前沿应用可简读或略过 搜索引擎介绍 搜索引擎(Search Engine),狭义来讲是基于软件技术开发的互联网数据查询系统,用户通过搜索引擎查询所需 ...

  9. Microsoft Azure Project Oxford 体验

    2015年4月29日,微软在Build 2015大会上发布了一个震撼人心的项目: Project Oxford, 可以帮助直接实现图像理解.人脸识别.语音识别.语音合成等功能.虽然说这是号称研究院的项 ...

随机推荐

  1. php编码的一些小规范

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/104 最近在整理线上的hhvm warning,虽然每天产生百万 ...

  2. shader 2 : use shaderToy in unity

    shadertoy 原型,https://www.shadertoy.com/view/XslGRr 先说几个概念 Shader language目前有3种主流语言:基于OpenGL的GLSL(Ope ...

  3. 搭建redis cluster

    1  下载 redis安装包 tar zxvf redis-3.0.2.tar.gz cd redis-3.0.2/ make make install 2安装ruby sudo apt-get in ...

  4. UWP 手绘视频创作工具技术分享系列 - Ink & Surface Dial

    本篇作为技术分享系列的第四篇,详细讲一下手绘视频中 Surface Pen 和 Surface Dial 的使用场景. 先放一张微软官方商城的图,Surface 的使用中结合了 Surface Pen ...

  5. VS代码生成工具ReSharper使用手册:配置快捷键(转)

    原文:http://blog.csdn.net/fhzh520/article/details/46364603 VS代码生成工具ReSharper提供了丰富的快捷键,可以极大地提高你的开发效率. 配 ...

  6. 微信小程序入门指南

    本文同步发布在 https://www.cssge.com 因为下个项目需要用微信小程序来开发,所以就找了小程序开发文档来研究.下面记录一下微信小程序的主要开发流程和语法. 账号注册 开发小程序的第一 ...

  7. CSS3 banner图片的标签效果

    放body看,你懂的:)

  8. qt中建立图片资源文件

    qt中如果你要添加图片资源文件我们需要执行以下步骤: (1)先找好一张图片,这里就不多说了,网上资源很多. (2)把我们找好的文件统一放到一个文件夹,然后拉到工程文件所在的文件夹下 (3)在qt中新建 ...

  9. 解决 iPhone 微信 H5 无法自动播放音乐问题

    使用 wx sdk 在html导入sdk js文件.(如果网站是https导入的sdk也要使用https!) 然后在 wx.ready 中设置 play 方法并复制给全局变量 fm,当需要使用的时候再 ...

  10. 《algorithms Unlocked》读书笔记3——计数排序

    <Algorithms Unlocked>是 <算法导论>的合著者之一 Thomas H. Cormen 写的一本算法基础,算是啃CLRS前的开胃菜和辅助教材.如果CLRS的厚 ...