2019-09-12 12:33:54 qq_16555103 阅读数 723
  • 让机器读懂你的意图——人体行为预测入门视频教学

    机器视觉的主要任务是让机器看懂世界,而世界的主要组成是人类社会。我们一直在围绕物和人的识别展开研究:物品检测识别和行人检测与跟踪+人脸识别。因而,人体行为预测越来越多的进入了研究者的视线中。人体行为预测相当于识别人的动作,从而甚至可以揣摩人的意图:事实上人的很多意图是通过肢体语言表达出来的。因而可以更丰富的让机器读懂人。

    2292 人正在学习 去看看 CSDN讲师

 一、意图识别应用领域

1、搜索引擎
2、对话系统:基于意图识别了解用户想要什么 业务 或者 闲聊,并采用不用的子模型来处理
    1.1 闲聊
            技术:闲聊机器人需要有较高的召回率,因此常常用:seq2seq + attention  / transformer / bert .... 
    1.2 基于业务,例如 电商、买票、查询天气
            技术:基于上述应用场景需要极高的精确率,因此常常用:① 基于业务规则模板、基于语义匹配 ② 
3、智能物联网
4、机器人

二、意图识别的难点

1、用户输入不规范,输入方式多样化,甚至非标准的自然语言
2、表意表现出多意图
       仙剑奇侠传
       游戏?--> 游戏软件?……
       电视剧?--> 电视剧下载?相关新闻?……
3、意图强度,表述不同表现出不同的需求强度
       天气很好啊-->弱意图(心情,闲聊模式)          今天天气怎么样-->强意图(业务模式)
4、意图存在时效性变化,就是随着时间的推移相同问题的意图会发生变化      ******* 难点
5、没有固定的评估的标准

三、意图识别的主要方法

   1、意图识别的类别

(1)导航型 
       将用户导航到相应的领域或相应的流程中
            例:百度 *** 导入到某个网站
(2)信息型 
       提供给用户想知道的信息
            例:百度 *** 的个人信息    ----- 类似百度百科
(3)事务型 
       给用户提供流程中的各个实现环节
            例:百度 *** 坏了         ----- 类似百度知道

   2、规则模板意图识别

     (1)词表穷举法

                     特点:必须一一命中才行,因此模型的召回率较低,精确率极高 

   (2)规则模板解析    

                规则模板解析: 需要基于  分词、词性标注、命名实体识别、依存句法分析、语义分析 的前提下 才能完成

                                           而且数据中使用的也是字典形式(key hash 结构),查询速度较快。

1、适用于查询非常符合规则的类别,通过规则解析的方式来获取查询的意图。
    例:
        北京到上海今天的机票价格,可以转换为:[地点]到[地点][日期][汽车票/机票/火车票]。
            执行过程:
                    第一步:寻找领域,获取子类模板字典
                    第二步:选取模板,这里面命中模板不是所有的内容都全部命中,只需要命中一部分。
                    第三步:采取 反问模板 与用户沟通缺失了模板的那些内容,并补全这些内容(即上述问句没有日期)
                    第四步:给出 完整的模板信息 并 等待用户确认。
        1吨等于多少公斤,可以转换为:[数字][计量单位]等于[数字][计量单位]。
    对规则性较强的query有较好的识别精度,能够较好的提取准确信息。
    缺点:需要人工参与较多,很难自动化实现。
    实用指数:4★
    场景:搜狗通用搜索、小i智能客服、机器人、智能物联网、支付宝分控系统有10000多个模板。

                 特点:规则性较强的query精确率较高,召回率也不错 

  •    案例:搜狗搜索 意图识别

                     规则意图识别的一般技术

                            1. 判断领域:采用实体-主域-模板的整体框架来判别识别领域

                                      注意:主题    ------ 大类别 ;主域  ------- 子类别 ; 模板

                            2. 判断意图:命中主域后,模板采用意图动词(下载、查询等)或意图疑问词(怎么样、为什么等)判别意图

                            3. 区分弱意图和强意图,针对性提供解决方案;判断实体强度

                                搜索引擎意图识别领域判别表:仙剑奇侠传

                 计算过程 

                          第一步:主体(大类)计算

                          第二步:主域(子类)计算 

  •  规则模板解析优化 
4.  query改写包括:query纠错,query扩展,query删除,query转换。
         a. 进行同义词扩展     eg:我去旅游   我要旅游       ------- 技术:① word2vec ② 
         b. 删除一些修饰,扩大召回                          ------- 技术:① booststriping信息抽取 ② 语义分析(三元组)
         c. 通过近义或同义转化,扩大召回                    ------- 技术:① word2vec ② 

    3、深度学习意图识别

1、机器学习和深度学习方法
    意图识别可以看做是一个分类问题,针对于垂直产品的特点,定义不同的查询意图类别。
    对于用户输入的query,根据统计分类模型计算出每一个意图的概率,最终给出查询的意图。             
    缺点:主要是数据获取和更新较困难,数据的标注也需要较准确才能训练出较好地模型。
    实用指数:4★
    场景:京东JIMI、美团垂直搜索

2、深度学习 意图识别常见 模型:
    ① LSTM + attention
    ② BERT网络 分类意图识别

                   特点:模型召回率很高 

  •     案例:京东JIMI  意图识别

                      一、 大致结构

                   二、模型网络

京东JIMI意图识别(baseline)
    深度学习CNN模型,可用于求解一个分类问题,将用户的问题映射到一个具体的分类。最终在算法选型上,采用深度学
    习CNN模型,其中模型参数:
        词向量采用100维
        每个样本限定30个字以内,超出30截断,不足30补充随机向量
        单层CNN网络,第一层卷积核大小3*50

 

 

2019-10-21 19:07:58 Mr____Cheng 阅读数 242
  • 让机器读懂你的意图——人体行为预测入门视频教学

    机器视觉的主要任务是让机器看懂世界,而世界的主要组成是人类社会。我们一直在围绕物和人的识别展开研究:物品检测识别和行人检测与跟踪+人脸识别。因而,人体行为预测越来越多的进入了研究者的视线中。人体行为预测相当于识别人的动作,从而甚至可以揣摩人的意图:事实上人的很多意图是通过肢体语言表达出来的。因而可以更丰富的让机器读懂人。

    2292 人正在学习 去看看 CSDN讲师

意图识别也可视为分类问题。

如何实现意图识别?

  • haffner提出的基于SVM的意图识别模型
    将多个SVM二分类器组合,得到一个多分类器,来实现意图的多分类任务。
  • Ang的极大熵模型
  • 深度学习模型LSTM网络和CNN
2018-06-11 10:12:42 nanjifengzi 阅读数 1873
  • 让机器读懂你的意图——人体行为预测入门视频教学

    机器视觉的主要任务是让机器看懂世界,而世界的主要组成是人类社会。我们一直在围绕物和人的识别展开研究:物品检测识别和行人检测与跟踪+人脸识别。因而,人体行为预测越来越多的进入了研究者的视线中。人体行为预测相当于识别人的动作,从而甚至可以揣摩人的意图:事实上人的很多意图是通过肢体语言表达出来的。因而可以更丰富的让机器读懂人。

    2292 人正在学习 去看看 CSDN讲师

本次尝试,采用了 深度学习和 机器学习两种方式去考虑相关的。前者采用embedding的词嵌入的方式基于lstm-dssm模型做司机问题和库文件中标准问题做相似度匹配。后者对数据少的信息采用smote方式扩容,采用tfidf和bow方法基于随机森林的方式训练。

数据集总共 1万8千条数据,130个类。标记为null的数据达到1万3千条,数据分布也极为不均衡,所以模型很容易出现 忽略小样本的问题 。


(1) lstm-dssm 记录输入句子的上下文, Lstm 这个模型更为擅长,因此又有了一种 Lstm 来构造的 DSSM 模型

由于 没有对文本特殊处理,采用 1对多个负样本,训练模型。最后输出准确率达到88%左右,大部分偏向了 1万3千个 样本的数据。


(2)随机森林

对 次数出现大于6次和不会NULL的50个分类的数据分析,采用bow和tfidf 对文本信息表达,

采用五折交叉验证,得到的准确率为 98.3%


采用第二种方式 的预测例子:

预测的结果,基本符合前期要求,设计公司的信息,就不展示了。

可以看出尝试了 多次测试,相关的问题不大部分都能分到对应的 标准问题里,对于分类错的数据,暂时归于语料 太少。

2020-01-20 12:56:51 qq_42746595 阅读数 20
  • 让机器读懂你的意图——人体行为预测入门视频教学

    机器视觉的主要任务是让机器看懂世界,而世界的主要组成是人类社会。我们一直在围绕物和人的识别展开研究:物品检测识别和行人检测与跟踪+人脸识别。因而,人体行为预测越来越多的进入了研究者的视线中。人体行为预测相当于识别人的动作,从而甚至可以揣摩人的意图:事实上人的很多意图是通过肢体语言表达出来的。因而可以更丰富的让机器读懂人。

    2292 人正在学习 去看看 CSDN讲师

自然语言处理意图识别

自然语言处理一直是机器学习方面的一个难题,最近在参加竞赛时需要进行意图识别的相关探索学习,本文大致对我个人对意图识别的理解和做法进行一个简要的整理。
开始时思考的其实并不容易,因为作为大学生对机器学习和深度学习的底子比较薄,并且做过的跟机器学习有关的项目勉勉强强只能算是有一个,所以开始整理思路时就参考了《美团机器学习实践》这本书,确实获益匪浅,光笔记我就用typora打了40多页,确实值得大家去看一下。
从中我大概了解了整个自然语言处理的综合步骤以及相关做法,然后对意图识别这个名词有了一定的了解,它可以说是电商搜索和推荐的开门砖,从用户的搜索输入中提取最为关键的分类信息,即查找用户搜索的相关商品的门类,再从本门类(无论一级分类如食物、旅游或者二级分类面食类、肉类等精细分类)搜索或者执行推荐算法推荐相似度较高的产品时(当然这种推荐不包括如adaboost这样的相关性商品推荐),会大大减小搜索耗时以及推荐复杂度,很好的节省了系统开销,可以说是大型互联网公司搜索系统的必备杀器。
其中不妨有参考各路大神的代码,如有雷同,还请见谅。
这次意图识别为了同时提高准确率和召回率,我选择使用组合模型进行相应的处理,通过结合ElasticSearch的精确以及快速搜索功能以及综合word2vec词语相似度和LSTM模型两种方法来完成意图准确识别
本文使用的工具和包较多,大体罗列下:

  1. ElasticSearch工具以及Elastic包
  2. jieba分词包(fool分词)
  3. gensim的word2vec相关模块
  4. keras深度学习包LSTM等模块
  5. sklearn的测试集抽取方法train_test_split方法
  6. pickle包进行词向量集以及索引集的保存
  7. json包进行LSTM训练保存
  8. flask框架
  9. mongodb数据库

那么对于意图识别实践我的基本思路是:

  1. 获取项目相关的语料库,进行预处理(最好能够获取比较纯净的与项目相关性较大的语料库),使用jieba分词,并将语句、分词结果、关键词等预处理内容保存入mongodb数据库中,方便后续训练。
  2. 通过语料库来训练gensim的word2vec模块来完成词向量模型的构建(这一步至关重要,直接决定模型最终成型情况),并将model以及词向量字典、索引字典进行保存,以便下次查询不需要重新进行训练。
  3. 训练LSTM模型并进行保存,训练模型的所有操作都应在另一个api或者线程进行,并且在使用之前就已经训练并保存完毕,这样将不影响接口的调用。
  4. 使用jieba包对测试的中文语句进行HMM以及搜索模式分词以及提取关键词,当然选择傻瓜分词fool也未尝不可。
  5. 优先选择使用elasticsearch进行索引快速搜索,对句子中的关键词进行快速全局搜索,取得最大匹配分值的词语所在类别即可完成意图识别,当然这里要设定最小匹配分值,最小匹配分值可以根据实际情况动态调配,在性能和准确率之间进行综合衡量。
  6. 如果全局最大匹配分值低于最小要求匹配分值,即关键词在整个词库中没有记录,则进行LSTM模型预测或word2vec相似词类别加权平均预测。(当然进入到这一步必然会多消耗一定时间,所以最小匹配分值一定要相对合理)
  7. LSTM (长短时记忆神经网络)在自然语言处理处理上的性能相当优秀,由于它基于RNNs(循环神经网络),能够对上下文语境进行一定的反应,其准确性明显胜于词袋模型,但是损耗性能当然也是巨大的。
  8. word2vec相似词类别加权平均预测也算是本人的一个简单的理论创新,通过寻找在词库中已经存在的与现有关键词相似的词集通过相似度加权平均的方式来实现最终的意图判定。

具体代码会在之后博客里面慢慢分享给大家,一次写的太多可能确实也难以理解,我会把每一步的内容在以后的博客进行进一步细致分析和整理,感谢大佬们!

2019-04-01 14:35:20 vivian_ll 阅读数 1715
  • 让机器读懂你的意图——人体行为预测入门视频教学

    机器视觉的主要任务是让机器看懂世界,而世界的主要组成是人类社会。我们一直在围绕物和人的识别展开研究:物品检测识别和行人检测与跟踪+人脸识别。因而,人体行为预测越来越多的进入了研究者的视线中。人体行为预测相当于识别人的动作,从而甚至可以揣摩人的意图:事实上人的很多意图是通过肢体语言表达出来的。因而可以更丰富的让机器读懂人。

    2292 人正在学习 去看看 CSDN讲师

意图识别是通过分类的办法将句子或者我们常说的query分到相应的意图种类。
在做这个工作之前,我们首先得想好意图的划分问题,这种划分业界有很多叫法,比如技能。

意图识别的基本方法

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

不同的意图会有的不同的领域词典,比如书名,歌曲名,商品名等等。当一个用户的意图来了以后我们根据意图和词典的匹配程度或者重合程度来进行判断,最简单一个规则是哪个domain的词典重合程度高,就将该query判别给这个领域。这个工作的重点便是领域词典便须得做的足够好。
基于模板的方法在小规模数据集上容易实现且构建简单,缺点为难以维护、可移植性差、模板有可能需要专家构建。
基于规则模板的意图识别方法一般需要人为构建规则模板以及类别信息对用户意图文本进行分类
[13]。 Ramanand 等人[14](2010)针对消费意图识别,提出基于规则和图的方法来获取意图模板,在单一领域取得了较好的分类效果。 Li 等人[15](2015)研究发现在同一领域下,不同的表达方式会导致规则模板数量的增加,需要耗费大量的人力物力。所以,基于规则模板匹配的方法虽然不需要大量的训练数据,就可以保证识别的准确性,但是却无法解决意图文本更换类别时带来重新构造模板的高成本问题。

2.基于查询点击日志(适用于搜索引擎)

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

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

基于统计特征分类:
基于统计特征分类的方法,则需要对语料文本进行关键特征的提取,如字、词特征、 N-Gram 等,
然后通过训练分类器实现意图分类。常用的方法有朴素贝叶斯(Naive Bayes, NB)[16] (1998)、 Adaboost[17](2000)、支持向量机(Support vector machine,SVM) [18](2003)和逻辑回归[19](2007)等。
基于深度学习:
意图识别通常使用分类的方法将句子分为相应的意图种类。可以使用paddle作为模型的基本框架以CNN外接softmax 和LSTM外接softmax来进行意图识别方面工作的探索。
训练数据多为句子,每个句子一个标签。

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

整体的流程为:首先是利用对语料语料进行预处理,包括去除语料的标点符号,去除停用词等等。将语料初始化以后便是利用word2vec生成词向量, 生成词向量以后便是利用LSTM来进行特征提取,最后便是利用softmax来完成我们的意图分类工作。
参考网址:使用LSTM和Softmx来进行意图识别

3.2 使用CNN和Softmx来进行意图识别

CNN对于长文本的分类效果还是不错的,但是在短文本上相较RNN还是有一些差距。
既然CNN比不上RNN,为什么还是选取了CNN,我的想法是文本分词后一般会有粒度和语义的矛盾,粒度太大,分词效果不好,粒度太小,语义丢失,而CNN核心过程是卷积,我们可以通过CNN的卷积将分完词之后的词的语义结合在一起,从而获得更加准确的词向量。
(textCNN)基本的结构为:输入层->第一层卷积层->池化层->全连接层+softmax层
与传统的人工特征提取方法相比,不仅减少了大量的特征工程,而且可以得到更深层次的特征表示。但是 CNN 只能提取到意图文本的局部语义特征,不能保持语义的连贯性。
参考网址:NLP系列学习:意图识别

3.3 使用BTM-BiGRU来进行意图识别

基于短文本主题模型(BTM)和双向门控循环单元(BiGRUb)。将意图识别看作分类问题,使用主题特征,首先通过BTM对用户聊天文本逐句进行主题挖掘并量化,然后送入BiGRU进行完整上下文学习得到连续语句最终表示,最后通过分类完成意图识别。
BTM:采用词对共现模式代替传统的词共现模式,可以更好地对短文本进行主题特征挖掘。
GRU:不仅保持LSTM可以对文本的上下文信息进行有效刻画,解决文本长期依赖问题的优势,而且只有两个门的计算,参数减少,节省训练时间。
BiGRU:解决LSTM和GRU从左往右推进,后面的输入比前面更重要的问题,完整捕捉上下文信息,聊天中各语句平权。
参考网址:聊天机器人中用户就医意图识别方法

RasaNLU

Rasa NLU 是一个开源的、可本地部署并配套有语料标注工具(rasa-nlu-trainer)的自然语言理解框架。其本身是只支持英文和德文,中文因为其特殊性需要加入特定的 tokenizer 作为整个流水线的一部分,Rasa_NLU_Chi 作为 Rasa_NLU 的一个 fork 版本,加入了 jieba 作为中文的 tokenizer,实现了中文支持。
智能机器人的关键核心有二,语义理解和对话管理。在一堆开源项目中,同时具备的并不多见。Rasa项目囊括了这二者,Rasa NLU主要功能是用户问句的意图识别和关键要素抽取(也叫词槽抽取,或实体提取),Rasa Core提供了机器学习策略处理的对话管理。
参考网址:机器人意图识别和词槽抽取RasaNLU解析

其他方法

参考:人机对话系统中意图识别方法综述_刘 娇, 李艳玲, 林 民

意图识别的难点

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

参考网址:聊天机器人|PaddlePaddle|从意图识别开始(一)

没有更多推荐了,返回首页