[nlp]意图分类是怎么实现的

如何进行意图分析

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

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

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

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

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

数据准备

假设有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, '气': 
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值