精华内容
下载资源
问答
  • 主要讨论根据查询的意图进行分类的研究工作,从查询分类的诞生背景、关键技术、所使用的分类方法和评价方法方面进行综述评论,提出了查询意图分类面临的问题和挑战。认为缺乏权威的评测标准、在大规模数据集上的未经...
  • 行业分类-作业装置-一种文本分类方法及系统、意图分类系统和机器人.zip
  • 语音意图分类

    2019-02-13 14:50:08
    本发明公开了一种自动外呼系统基于自动分类技术的语音意图判定方法,应用语音识别技术和自动分类技术建立新的高正确率的科学地通过判定用户语音中所包含意图的方法。
  • 基于时间和频率特征的运动意图分类
  • 查询意图分类可以通过澄清用户查询和解释信息需求来提高用户满意度,从而解决该问题。 在对查询意图进行分类时,已经解决了两个主要挑战:一个是如何有效表示简短和模棱两可的查询。 另一种是如何生成一组适当的...
  • 对话意图分类在人机交互系统中起着重要作用。 在本文中,我们提出了一种混合卷积神经网络和双向门控递归单元神经网络(CNN-BGRU)架构,以对白对话的意图进行分类。 首先,对字符嵌入进行训练并将其用作所提出模型的...
  • 面向人机对话意图分类的混合神经网络模型.pdf
  • 基于双通道卷积神经网络的问句意图分类研究.pdf
  • 深度学习算法在问句意图分类中的应用研究.pdf
  • [nlp]意图分类是怎么实现的

    千次阅读 2017-09-21 03:28:00
    如何进行意图分析之前开始做语义理解的时候,笔者采用的是比较粗暴的方法进行匹配。...本文只是简单的阐述一下意图分析的典型思路和方法,并实现一个基本的意图分类器,而无意系统的探究意图分类。更详细的

    如何进行意图分析

    之前开始做语义理解的时候,笔者采用的是比较粗暴的方法进行匹配。随着语料的积累,语料库的规模变得越来越大,匹配的效率也随着越来越低,对语料进行意图分类的想法也就随着产生。

    当用户输入之后,系统首先对输入进行意图分类,然后对分类下的语料进行匹配,从而减轻计算量,提高系统的匹配效率。

    本文只是简单的阐述一下意图分析的典型思路和方法,并实现一个基本的意图分类器,而无意系统的探究意图分类。更详细的探讨后文再进行。

    本文按照如下流程进行叙述:

    • 数据准备
    • 特征提取
    • 模型准备
    • 训练模型
    • 使用模型

    数据准备

    假设有3个场景:吃饭、打招呼、再见。那么三个场景下会有什么样的对话呢?
    比如:

    • 今天这个菜真好吃!
    • 嗨!今天天气不错!
    • 今天很开心,明天见!

    很明显,人眼一看就能看出对应的句子应该是哪个类别了:

    • 今天这个菜真好吃! ->吃饭
    • 嗨!今天天气不错! ->打招呼
    • 今天很开心,明天见! ->再见

    到这里,我们模型需要的数据就有了。可以很清晰的写出下面的代码:

    list_sen=['今天这个菜真好吃!','嗨!今天天气不错!','今天很开心,明天见!']

    需要的数据就有了,下一步是提取特征。

    特征提取

    特征的提取是为了方便进行分类计算,每一个特征都具备一定的权重,表明它的权值。通过特征的权值,就能够确定句子属于哪一个类别。这里我们将每一个字作为一个特征,1/(字出现的总次数)作为权值。
    首先构造一个字典,key为字,value为频率:

    dict_voc=dict()
    for s in list_sen:
        for w in s:
            if w in dict_voc.keys():
                dict_voc[w]+=1
            else:
                dict_voc[w]=1

    输出为:

    {'这': 1.0, '嗨': 1.0, '好': 1.0, '气': 1.0, '真': 1.0, '错': 1.0, '不': 1.0, '个': 1.0, '心': 1.0, '天': 0.2, '菜': 1.0, '今': 0.3333333333333333, ',': 1.0, '!': 0.25, '吃': 1.0, '明': 1.0, '见': 1.0, '很': 1.0, '开': 1.0}
    

    到这里字典构造完毕,下一步就是构造类别的特征了。
    前面说了,我们把每一个类别下的每一个字作为特征,代码也就可以写出来了。

    features_one=dict()#吃饭  {字:频率}
    features_two=dict()#打招呼
    features_three=dict()#再见
    for w in list_sen[0]:
        if w in features_one.keys():
            features_one[w]+=1
        else:
            features_one[w]=1
    for w in list_sen[1]:
        if w in features_two.keys():
            features_two[w]+=1
        else:
            features_two[w]=1
    for w in list_sen[2]:
        if w in features_three.keys():
            features_three[w]+=1
        else:
            features_three[w]=1
    print(features_one)
    print(features_two)
    print(features_three)
    
    #{'好': 1, '天': 1, '真': 1, '吃': 1, '!': 1, '菜': 1, '今': 1, '个': 1, '这': 1}
    #{'不': 1, '!': 2, '气': 1, '嗨': 1, '错': 1, '今': 1, '天': 2}
    #{'明': 1, '心': 1, '开': 1, '见': 1, ',': 1, '很': 1, '今': 1, '天': 2, '!': 1}
    

    到这里特征的提取已经完成

    模型准备

    模型准备需要的是建立分类模型。这里我们通过给每一个特征赋予一个得分,然后将句子中每一个字的特征得分进行相加,然后就可以得到句子在某一个类别下特征的总得分,从而能够对句子进行分类。

    比方说:今天的工作就到这里吧,大家早点回去,明天再继续吧。
    这句话在每一个类别下的得分为:

    特征命中:今、天、这、天
    类别:吃饭
    得分:4
    
    特征命中:今、天、天
    类别:打招呼
    得分:3
    
    特征命中:今、天、明、天、,、,
    类别:再见
    得分:6
    

    这里,我们假设每一个字的权重为1,。显然,得分6最高,所属的类别应该是:再见。
    到这里,我们所需要的模型就已经建立起来了。

    训练模型

    上一节有一个问题,比如今天在所有的类别都出现了,拜拜只出现在了再见类别,菜也只出现在了吃饭类别。这是不是意味这每一个特征应该具备不同的权重呢?或者说有些字的辨识度应该更高,有些字的辨识度应该更低呢?

    是的,我们在这里通过1/(字出现的总次数)来对字的特征得分进行加权。

    特征命中:今(0.3)、天(0.2)、这(1)、天(0.2)
    类别:吃饭
    得分:1.73
    
    特征命中:今(0.3)、天(0.2)、天(0.2)
    类别:打招呼
    得分:1.13
    
    特征命中:今(0.3)、天(0.2)、明(1.0)、天(0.2)、,(1.0)、,(1.0)
    类别:再见
    得分:4.13
    

    结果还是属于类别再见。

    有了前面的叙述,可以很方便的进行编码实现:

    sen='今天的工作就到这里吧,大家早点回去,明天再继续吧。'
    score1=0.0
    score2=0.0
    score3=0.0
    print('class1:')
    for w in sen:
        if w in features_one:
            print('word:',w,features_one[w],dict_voc[w])
            score1+=features_one[w]*dict_voc[w]
    print('score1:',score1)
    print('---------------------')
    print('class2:')
    for w in sen:
        if w in features_two:
            print('word', w,features_two[w],dict_voc[w])
            score2+=features_two[w]*dict_voc[w]
    print('score2:',score2)
    print('---------------------')
    print('class3:')
    for w in sen:
        if w in features_three:
            print('word', w,features_three[w],dict_voc[w])
            score3+=features_three[w]*dict_voc[w]
    print('score3:',score3)
    print('---------------------')

    输出如下:

    class1:
    word: 今 1 0.3333333333333333
    word: 天 1 0.2
    word: 这 1 1.0
    word: 天 1 0.2
    score1: 1.7333333333333332
    ---------------------
    class2:
    word 今 1 0.3333333333333333
    word 天 2 0.2
    word 天 2 0.2
    score2: 1.1333333333333333
    ---------------------
    class3:
    word 今 1 0.3333333333333333
    word 天 2 0.2
    word , 1 1.0
    word , 1 1.0
    word 明 1 1.0
    word 天 2 0.2
    score3: 4.133333333333334
    ---------------------

    总结

    以上就完成了意图分类模型的建立。本文只是对意图分类进行了简单的探讨,实际上的意图分类并不是这么简单,当然,这就是后话了。

    展开全文
  • 意图分类是怎么实现的

    千次阅读 2018-01-08 14:57:21
    随着语料的积累,语料库的规模变得越来越大,匹配的效率也随着越来越低,对语料进行意图分类的想法也就随着产生。 当用户输入之后,系统首先对输入进行意图分类,然后对分类下的语料进行匹配,从而减轻计算量,...

    如何进行意图分析

    之前开始做语义理解的时候,笔者采用的是比较粗暴的方法进行匹配。随着语料的积累,语料库的规模变得越来越大,匹配的效率也随着越来越低,对语料进行意图分类的想法也就随着产生。

    当用户输入之后,系统首先对输入进行意图分类,然后对分类下的语料进行匹配,从而减轻计算量,提高系统的匹配效率。

    本文只是简单的阐述一下意图分析的典型思路和方法,并实现一个基本的意图分类器,而无意系统的探究意图分类。更详细的探讨后文再进行。

    本文按照如下流程进行叙述:

    • 数据准备
    • 特征提取
    • 模型准备
    • 训练模型
    • 使用模型

    数据准备

    假设有3个场景:吃饭、打招呼、再见。那么三个场景下会有什么样的对话呢? 
    比如:

    • 今天这个菜真好吃!
    • 嗨!今天天气不错!
    • 今天很开心,明天见!

    很明显,人眼一看就能看出对应的句子应该是哪个类别了:

    • 今天这个菜真好吃! ->吃饭
    • 嗨!今天天气不错! ->打招呼
    • 今天很开心,明天见! ->再见

    到这里,我们模型需要的数据就有了。可以很清晰的写出下面的代码:

    list_sen=['今天这个菜真好吃!','嗨!今天天气不错!','今天很开心,明天见!']
     
    • 1

    需要的数据就有了,下一步是提取特征。

    特征提取

    特征的提取是为了方便进行分类计算,每一个特征都具备一定的权重,表明它的权值。通过特征的权值,就能够确定句子属于哪一个类别。这里我们将每一个字作为一个特征,1/(字出现的总次数)作为权值。 
    首先构造一个字典,key为字,value为频率:

    dict_voc=dict()
    for s in list_sen:
        for w in s:
            if w in dict_voc.keys():
                dict_voc[w]+=1
            else:
                dict_voc[w]=1
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出为:

    {'这': 1.0, '嗨': 1.0, '好': 1.0, '气': 1.0, '真': 1.0, '错': 1.0, '不': 1.0, '个': 1.0, '心': 1.0, '天': 0.2, '菜': 1.0, '今': 0.3333333333333333, ',': 1.0, '!': 0.25, '吃': 1.0, '明': 1.0, '见': 1.0, '很': 1.0, '开': 1.0}
    
     
    • 1
    • 2

    到这里字典构造完毕,下一步就是构造类别的特征了。 
    前面说了,我们把每一个类别下的每一个字作为特征,代码也就可以写出来了。

    features_one=dict()#吃饭  {字:频率}
    features_two=dict()#打招呼
    features_three=dict()#再见
    for w in list_sen[0]:
        if w in features_one.keys():
            features_one[w]+=1
        else:
            features_one[w]=1
    for w in list_sen[1]:
        if w in features_two.keys():
            features_two[w]+=1
        else:
            features_two[w]=1
    for w in list_sen[2]:
        if w in features_three.keys():
            features_three[w]+=1
        else:
            features_three[w]=1
    print(features_one)
    print(features_two)
    print(features_three)
    
    #{'好': 1, '天': 1, '真': 1, '吃': 1, '!': 1, '菜': 1, '今': 1, '个': 1, '这': 1}
    #{'不': 1, '!': 2, '气': 1, '嗨': 1, '错': 1, '今': 1, '天': 2}
    #{'明': 1, '心': 1, '开': 1, '见': 1, ',': 1, '很': 1, '今': 1, '天': 2, '!': 1}
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    到这里特征的提取已经完成

    模型准备

    模型准备需要的是建立分类模型。这里我们通过给每一个特征赋予一个得分,然后将句子中每一个字的特征得分进行相加,然后就可以得到句子在某一个类别下特征的总得分,从而能够对句子进行分类。

    比方说:今天的工作就到这里吧,大家早点回去,明天再继续吧。 
    这句话在每一个类别下的得分为:

    特征命中:今、天、这、天
    类别:吃饭
    得分:4
    
    特征命中:今、天、天
    类别:打招呼
    得分:3
    
    特征命中:今、天、明、天、,、,
    类别:再见
    得分:6
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这里,我们假设每一个字的权重为1,。显然,得分6最高,所属的类别应该是:再见。 
    到这里,我们所需要的模型就已经建立起来了。

    训练模型

    上一节有一个问题,比如今天在所有的类别都出现了,拜拜只出现在了再见类别,菜也只出现在了吃饭类别。这是不是意味这每一个特征应该具备不同的权重呢?或者说有些字的辨识度应该更高,有些字的辨识度应该更低呢?

    是的,我们在这里通过1/(字出现的总次数)来对字的特征得分进行加权。

    特征命中:今(0.3)、天(0.2)、这(1)、天(0.2)
    类别:吃饭
    得分:1.73
    
    特征命中:今(0.3)、天(0.2)、天(0.2)
    类别:打招呼
    得分:1.13
    
    特征命中:今(0.3)、天(0.2)、明(1.0)、天(0.2)、,(1.0)、,(1.0)
    类别:再见
    得分:4.13
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    结果还是属于类别再见。

    有了前面的叙述,可以很方便的进行编码实现:

    sen='今天的工作就到这里吧,大家早点回去,明天再继续吧。'
    score1=0.0
    score2=0.0
    score3=0.0
    print('class1:')
    for w in sen:
        if w in features_one:
            print('word:',w,features_one[w],dict_voc[w])
            score1+=features_one[w]*dict_voc[w]
    print('score1:',score1)
    print('---------------------')
    print('class2:')
    for w in sen:
        if w in features_two:
            print('word', w,features_two[w],dict_voc[w])
            score2+=features_two[w]*dict_voc[w]
    print('score2:',score2)
    print('---------------------')
    print('class3:')
    for w in sen:
        if w in features_three:
            print('word', w,features_three[w],dict_voc[w])
            score3+=features_three[w]*dict_voc[w]
    print('score3:',score3)
    print('---------------------')
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    输出如下:

    class1:
    word: 今 1 0.3333333333333333
    word: 天 1 0.2
    word: 这 1 1.0
    word: 天 1 0.2
    score1: 1.7333333333333332
    ---------------------
    class2:
    word 今 1 0.3333333333333333
    word 天 2 0.2
    word 天 2 0.2
    score2: 1.1333333333333333
    ---------------------
    class3:
    word 今 1 0.3333333333333333
    word 天 2 0.2
    word , 1 1.0
    word , 1 1.0
    word 明 1 1.0
    word 天 2 0.2
    score3: 4.133333333333334
    ---------------------
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    总结

    以上就完成了意图分类模型的建立。本文只是对意图分类进行了简单的探讨,实际上的意图分类并不是这么简单,当然,这就是后话了。

    展开全文
  • rasa框架意图分类embedding算法

    千次阅读 2019-05-20 11:05:00
    把训练样本和意图编码到同一个向量空间,设计损失函数,使得样本与真实意图更相近,样本与其他意图更相反,意图之间编码更相反,达到意图分类的目的。 举个例子说明,假设有两条训练样本“我要充话费”和“我要订...

    算法模型
    intent_classifier_tensorflow_embedding
    点击此处获取算法代码


    算法框架

    13395740-76b42a0e3dc504b8.jpg

    算法框架

     


    算法思想
    把训练样本和意图编码到同一个向量空间,设计损失函数,使得样本与真实意图更相近,样本与其他意图更相反,意图之间编码更相反,达到意图分类的目的。
    举个例子说明,假设有两条训练样本“我要充话费”和“我要订机票”,有四个意图“订机票”、“查天气”,“充话费”,“查运势”,意图分类算法的目的就是把“我要充话费”分到“充话费”上,“我要订机票”分到“订机票”上。
    样本与真实意图更相近就对应“我要充话费”和“充话费”向量相似度更高,同理,“我要订机票”和“订机票”向量相似度更高;
    样本与其他意图更相反就对应“我要充话费”和“订机票”、“查天气”、“查运势”向量相似度更小;
    意图之间编码相反就对应“订机票”、“查天气”,“充话费”,“查运势”向量相似度更小。


    网络结构
    1、样本输入x
    输入层采用bag-of-word方式,只考虑词频,n_words是词汇表词语总数
    MLP有两个隐含层,采用relu激活函数,并配置 dropout和L2正则
    2、意图输入y
    输入层是意图数*意图数的方阵,对角线元素为1,其余为0,方阵的第一行是样本的真实意图,剩下行数是其他意图(负样本)
    3、embedding层
    样本输入和意图输入的embedding层维度均为20


    相似度计算
    向量相似度计算采用常见的余弦相似度。但是本算法计算两个相似度,一个是sim,即样本与意图之间的相似度;另一个是sim_emb,即意图之间的相似度。


    损失函数

    max_sim_neg = tf.reduce_max(sim[:, 1:], -1)
    max_sim_emb = tf.maximum(0., tf.reduce_max(sim_emb, -1))
    loss1 = tf.reduce_mean(tf.maximum(0., self.mu_pos - sim[:, 0]) +
                                      tf.maximum(0., self.mu_neg + max_sim_neg))
    loss = (loss1 +
                 # penalize max similarity between intent embeddings
                 tf.reduce_mean(max_sim_emb) * self.C_emb +
                 # add regularization losses
                 tf.losses.get_regularization_loss())
    

    损失函数定性理解,损失=样本与真实意图的相似度取反+样本与最相近的其他意图的相似度取正+真实意图与最相近的其他意图的相似度取正
    最小化损失相当于,训练过程中逐渐让样本的编码向量与真实意图的编码向量更相近,样本的编码向量与其他意图的编码向量更相反,不同意图之间的编码向量更相反。

    展开全文
  • 基于自适应神经网络模糊系统(ANFIS)的空中目标意图分类.pdf
  • CCL2018中移在线客服领域用户意图分类冠军1st方案
  • 随着语料的积累,语料库的规模变得越来越大,匹配的效率也随着越来越低,对语料进行意图分类的想法也就随着产生。 当用户输入之后,系统首先对输入进行意图分类,然后对分类下的语料进行匹配,从而减轻计算量,提高...

    之前开始做语义理解的时候,笔者采用的是比较粗暴的方法进行匹配。随着语料的积累,语料库的规模变得越来越大,匹配的效率也随着越来越低,对语料进行意图分类的想法也就随着产生。

    当用户输入之后,系统首先对输入进行意图分类,然后对分类下的语料进行匹配,从而减轻计算量,提高系统的匹配效率。

    本文只是简单的阐述一下意图分析的典型思路和方法,并实现一个基本的意图分类器,而无意系统的探究意图分类。更详细的探讨后文再进行。

    本文按照如下流程进行叙述:

    • 数据准备
    • 特征提取
    • 模型准备
    • 训练模型
    • 使用模型

    数据准备

    假设有3个场景:吃饭、打招呼、再见。那么三个场景下会有什么样的对话呢? 
    比如:

    • 今天这个菜真好吃!
    • 嗨!今天天气不错!
    • 今天很开心,明天见!

    很明显,人眼一看就能看出对应的句子应该是哪个类别了:

    • 今天这个菜真好吃! ->吃饭
    • 嗨!今天天气不错! ->打招呼
    • 今天很开心,明天见! ->再见

    到这里,我们模型需要的数据就有了。可以很清晰的写出下面的代码:

    list_sen=['今天这个菜真好吃!','嗨!今天天气不错!','今天很开心,明天见!']

    展开全文
  • 鼻祖:查询意图分类 (query分类)

    千次阅读 2012-08-12 19:35:42
    这篇文章应该是每个从事查询意图分类的人写得论文中,放在第一位引用的文章了。这个文章所提出的的3个分类标准,影响深远。论文题目是《A taxonomy of web search》,翻译过来是“Web搜索分类“,作者是broder。 在...
  • 尽管本文为意图分类和实体提取提供了基准,但我们仅关注意图分类。 我们计算每个语料的f1分数和整体f1 : 平台\企业 聊天机器人 询问Ubuntu 网络应用 全面的 机器人燃料 0.98 0.90 0.80 0.91 路易斯 0.98 ...
  • 鼻祖:查询意图分类

    千次阅读 2010-11-01 09:51:00
    这篇文章应该是每个从事查询意图分类的人写得论文中,放在第一位引用的文章了。这个文章所提出的的3个分类标准,影响深远。论文题目是《A taxonomy of web search》,翻译过来是“Web搜索分类“,作者是broder。
  • 意图分类学习笔记

    2021-08-06 13:28:41
    监督嵌入:意图分类器 TensorFlow 嵌入 意图分类器intent_classifier_tensorflow_embedding,它不是使用预训练的嵌入并在此基础上训练分类器,而是从头开始训练词嵌入。它通常与intent_featurizer_count_vectors...
  • 意图分类和范围外预测的评估数据集 随附存储库。 常见问题 1.有哪些相关文件? 请参阅data/data_full.json以获取“完整”数据集。 这是表1(“完整”列)中使用的数据集。 该文件包含150个“范围内”的意图类,每个...
  • 创建用于意图分类的NLU API 简介: 此存储库包含多个笔记本和脚本,这些笔记本和脚本处理在创建用于意图分类的NLU API时遇到的问题。 Q1。 分析培训和评估数据。 在这一部分中,我们将分析训练和测试集。 这里的...
  • 基于维基百科的用户意图分类

    千次阅读 2010-10-28 22:23:00
    查询意图分类问题目前面临的三个挑战:(1)意图表示:定义一个语义表示,使之能够精确的明白和区分用户意图;(2)领域覆盖率:对于一个领域,怎样才能保证能够将查询 覆盖尽量得多,也就是怎样让一个查询能够准确...
  • 在此基础之上,结合 Web内容、格式进一步对导航类查询用户意图的信息需求进行分析,并分类为直接导航和间接导航2类,给出了具体算法。实验结果表明,该算法不仅能很好地自动分类导航类用户意图,而且能基于该意图...
  • (五)问答意图分类 本文研究了SP->O、SPP->O、PO->S、OP->S、SO->P五种类型的问答,使用bert4keras中的情感分类task_sentiment_albert.py,加载ALBERT模型训练,经测试,可以较好识别问答意图 。...
  • 为了更好地验证决策边界的作用,这里我们只选取简单的交叉熵损失函数,结合有标签已知意图分类任务对模型进行预训练: 3.2 决策边界定义 决策边界是影响开放意图分类的关键性因素,合适的决策边界不仅能保证更多的...
  • :rocket: 自然语言分类器样本应用程序 此Node.js应用演示了某些自然语言分类器服务功能。 IBM Watson:trade_mark:自然语言分类器服务应用了深度学习技术,以针对短句子或短语的最佳预定义类做出预测。 这些类可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,652
精华内容 11,460
关键字:

意图分类