知识图谱与KBQA——意图识别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vivian_ll/article/details/88942406

意图识别是通过分类的办法将句子或者我们常说的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|从意图识别开始(一)

展开阅读全文

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