本发明涉及人工智能技术领域,尤其涉及一种对话意图识别方法及装置
背景技术:
随着搜索引擎技术的发展,现代搜索引擎、问答系统以及对话机器人需要的不再是简单的相关性信息检索,而是能够深刻理解用户的信息需求,以便准确为用户提供所需的服务,而正确识别用户的意图是实现这一目标的关键步骤。
现有技术的对话意图识别方法主要有基于关键词、基于模板匹配和基于机器学习模型的方法。但是这些方法都只利用对话中用户在当前时刻输入的文本信息来判断用户的意图,无法准确判断用户当前的对话意图,对于用户来说,体验感极差。
技术实现要素:
针对上述所显示出来的问题,本方法基于利用历史对话数据中用户意图的概率来预测当前输入文本中用户意图来识别用户的当前对话意图。
一种对话意图识别方法,包括以下步骤:
统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列;
根据预设分类模型,预测当前输入的文本属于用户意图ai的概率q1;
利用先验知识序列,计算当前输入的文本属于所述用户意图ai的概率q2;
根据概率q1和概率q2,选择概率最大的意图作为当前输入的文本的当前意图。
优选的,统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列,包括:
利用对话日志收集历史对话数据,获取历史对话数据中的关键词;
根据关键词确定各历史用户意图;
对历史对话数据中含有各历史用户意图的对话语句进行标注;
利用下列公式计算历史对话数据中的用户意图ai的概率:
其中,ai为各历史用户意图的第i个用户意图,mi为用户意图ai在历史对话数据中出现的次数,p(ai)为用户意图ai在历史对话数据中出现的概率。
优选的,统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列,还包括:
根据下列公式计算出历史对话数据中在第一特定条件下出现用户意图ai的概率:
其中,aj为各历史用户意图中第j个用户意图,mij为ai在aj之后在历史对话数据中出现的次数,mj为aj在历史对话数据中出现的次数;
根据下列公式计算出历史对话数据中在第二特定条件下出现用户意图ai的概率:
其中,ak为各历史用户意图中第k个用户意图,mijk为ai在aj和ak之后在历史对话数据中出现的次数,mjk为aj和ak同时在历史对话数据中出现的次数。
优选的,利用先验知识序列,计算当前输入的文本中属于用户意图ai的概率q2,包括:
根据先验知识序列预测当前输入的文本属于用户意图ai的概率q2;
若序列长度大于等于第一预设阈值,q2=p(ai|b1,b2);
若序列长度等于第二预设阈值,q2=p(ai|b1);
若序列长度等于第三预设阈值,q2=p(ai);
其中,b1、b2为当前输入的文本所属的历史意图。
优选的,根据概率q1和概率q2,选择概率最大的意图作为当前输入的文本的当前意图,包括:
利用下列公式计算当前输入的文本属于用户意图ai的总概率q:
q=q1*q2;
输出总概率q最大的用户意图作为当前输入的文本的当前意图。
一种对话意图识别装置,该装置包括:
统计模块,用于统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列;
预测模块,用于根据预设分类模型,预测当前输入的文本属于用户意图ai的概率q1;
计算模块,用于利用先验知识序列,计算当前输入的文本属于用户意图ai的概率q2;
选择模块,用于根据概率q1和所述概率q2,选择概率最大的意图作为所述当前输入的文本的当前意图。
优选的,统计模块,包括:
获取子模块,用于利用对话日志收集历史对话数据,获取历史对话数据中的关键词;
确定子模块,用于根据关键词确定各历史用户意图;
标注子模块,用于对历史对话数据中含有各历史用户意图的对话语句进行标注;
第一计算子模块,用于利用下列公式计算历史对话数据中的用户意图ai的概率:
其中,ai为各历史用户意图的第i个用户意图,mi为用户意图ai在历史对话数据中出现的次数,p(ai)为用户意图ai在历史对话数据中出现的概率。
优选的,统计模块,还包括:
第二计算子模块,用于根据下列公式计算出历史对话数据中在第一特定条件下出现用户意图ai的概率:
其中,aj为各历史用户意图中第j个用户意图,mij为ai在aj之后在历史对话数据中出现的次数,mj为aj在历史对话数据中出现的次数;
第三计算子模块,用于根据下列公式计算出所述历史对话数据中在第二特定条件下出现用户意图ai的概率:
其中,ak为各历史用户意图中第k个用户意图,mijk为ai在aj和ak之后在历史对话数据中出现的次数,mjk为aj和ak同时在历史对话数据中出现的次数。
优选的,计算模块,包括:
预测子模块,用于根据先验知识序列预测当前输入的文本属于用户意图ai的概率q2;
第一输出子模块,用于若序列长度大于等于第一预设阈值,输出q2=p(ai|b1,b2),若所述序列长度等于第二预设阈值,输出q2=p(ai|b1),若序列长度等于第三预设阈值,输出q2=p(ai);
其中,b1、b2为当前输入的文本所属的历史意图。
优选的,选择模块,包括:
第四计算子模块,用于利用下列公式计算当前输入的文本属于用户意图ai的总概率q:
q=q1*q2;
第二输出子模块,用于输出总概率q最大的用户意图作为当前输入的文本的当前意图。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明所提供的一种对话意图识别方法工作流程图;
图2为本发明所提供的一种对话意图识别方法另一工作流程图;
图3为本发明所提供的一种对话意图识别装置结构图;
图4为本发明所提供的一种对话意图识别装置另一结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
随着搜索引擎技术的发展,现代搜索引擎、问答系统以及对话机器人需要的不再是简单的相关性信息检索,而是能够深刻理解用户的信息需求,以便准确为用户提供所需的服务,而正确识别用户的意图是实现这一目标的关键步骤。
现有技术的对话意图识别方法主要有基于关键词、基于模板匹配和基于机器学习模型的方法。但是这些方法都只利用对话中用户在当前时刻输入的文本信息来判断用户的意图,无法准确判断用户当前的对话意图,对于用户来说,体验感极差。为了解决上述问题,本实施例提供了一种基于利用历史对话数据中用户意图的概率来预测当前输入文本中用户意图来识别用户的当前对话意图。
一种对话意图识别方法,如图1所示,包括以下步骤:
步骤s101、统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列;
步骤s102、根据预设分类模型,预测当前输入的文本属于用户意图ai的概率q1;
步骤s103、利用先验知识序列,计算当前输入的文本属于所述用户意图ai的概率q2;
步骤s104、根据概率q1和概率q2,选择概率最大的意图作为当前输入的文本的当前意图。
上述技术方案的工作原理为:通过统计用户的历史对话数据中的各历史意图出现的概率,将上述概率作为先验知识序列,根据训练模型来预测当前输入的文本属于用户意图ai的概率q1;然后利用上述先验知识序列,计算当前输入的文本属于所述用户意图ai的概率q2;根据概率q1和概率q2,选择概率最大的意图作为当前输入的文本的当前意图。
上述技术方案的有益效果为:针对现有对话意图识别方法,本发明通过在训练模型中预测当前输入的文本属于某个用户意图的概率的基础上结合了在当前输入文本中插入先验知识序列来预测用户的当前意图,有效的解决了现有技术中只利用用户在当前时刻输入的文本信息来判断用户的意图而无法准确判断用户的当前意图的问题,增强了用户的体验感。
在一个实施例中,如图2所示,统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列,包括:
步骤s201、利用对话日志收集历史对话数据,获取历史对话数据中的关键词;
步骤s202、根据关键词确定各历史用户意图;
步骤s203、对历史对话数据中含有各历史用户意图的对话语句进行标注;
步骤s204、利用下列公式计算历史对话数据中的用户意图ai的概率:
其中,ai为各历史用户意图的第i个用户意图,mi为用户意图ai在历史对话数据中出现的次数,p(ai)为用户意图ai在历史对话数据中出现的概率。
上述技术方案的有益效果为:精确的采集了用户历史对话数据中的各个历史用户意图并且根据公式计算出各个用户意图的概率,将计算出来的概率作为先验知识序列来预测用户的当前输入文本中的用户意图概率,相比于现有技术,增加了一个预测的根据。
在一个实施例中,统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列,还包括:
根据下列公式计算出历史对话数据中在第一特定条件下出现用户意图ai的概率:
其中,aj为各历史用户意图中第j个用户意图,mij为ai在aj之后在历史对话数据中出现的次数,mj为aj在历史对话数据中出现的次数;
根据下列公式计算出历史对话数据中在第二特定条件下出现用户意图ai的概率:
其中,ak为各历史用户意图中第k个用户意图,mijk为ai在aj和ak之后在历史对话数据中出现的次数,mjk为aj和ak同时在历史对话数据中出现的次数;
特别的上述第一特定条件可以是在给定用户意图aj的条件下,上述第二特定条件可以是在给定用户意图aj和用户意图ak的条件下。
上述技术方案的有益效果为:计算出多种条件下ai出现的概率,丰富了先验知识序列的种类,针对用户当前输入文本用户意图的数量来精准的预测用户意图,一定程度上减小了预测的范围同时也增多了预测的种类和提高了预测的准确性。
在一个实施例中,利用先验知识序列,计算当前输入的文本中属于用户意图ai的概率q2,包括:
根据先验知识序列预测当前输入的文本属于用户意图ai的概率q2;
若序列长度大于等于第一预设阈值,q2=p(ai|b1,b2);
若序列长度等于第二预设阈值,q2=p(ai|b1);
若序列长度等于第三预设阈值,q2=p(ai);
其中,b1、b2为当前输入的文本所属的历史意图。
特别的,上述第一预设阈值可以为2,上述第二预设阈值可以为1,上述第三预设阈值可以为0。
上述技术方案的有益效果为:针对当前输入文本和上述先验知识序列结合起来分情况来预测用户的当前意图,可以更加有效的预测到当前输入文本中的用户意图,相比于现有技术,预测结果更加准确。
在一个实施例中,根据概率q1和概率q2,选择概率最大的意图作为当前输入的文本的当前意图,包括:
利用下列公式计算当前输入的文本属于用户意图ai的总概率q:
q=q1*q2;
输出总概率q最大的用户意图作为当前输入的文本的当前意图。
上述技术方案的有益效果为:将训练模型中预测的概率和先验知识序列预测的概率向结合可以更准确的预测出用户当前输入文本的用户意图。
在一个实施例中,包括:
第1步:数据收集与标注。
第1.1步:利用对话日志等信息收集大量的对话数据。
第1.2步:定义当前领域会涉及到的用户意图。如在订机票任务中,用户意图有:问候、告别、航班、时间、价格等。假设一共有n个不同的意图,其中第i个意图表示为ai。
第1.3步:对部分对话数据,人工对每一份对话中的每一句话进行标注,标明其属于1.2步定义好的意图中的哪一种。
第2步:先验知识的获取。
第2.1步:根据第1步中标注好的数据,统计意图ai出现的次数,记为mi,由此计算每个意图出现的概率
第2.2步:根据第1步中标注好的数据,统计意图ai在意图aj之后出现的次数,记为mij,由此计算意图ai在给定意图aj的条件下出现的概率
第2.3步:根据第1步中标注好的数据,统计意图ai在意图aj和意图ak之后出现的次数,记为mijk,由此计算意图ai在给定意图aj和意图ak的条件下出现的概率
第3步:在对话意图识别中融合先验知识。
第3.1步:根据用户输入的文本,用机器学习方法中的分类模型预测用户属于意图ai的概率q′(ai)。
第3.2步:根据本次对话的历史信息中的意图序列,预测用户当前时刻属于意图ai的概率q″(ai)。假设本次对话的历史意图序列为[b1,b2,…],其中上一个时刻的意图表示为b1。如果对话历史意图序列长度大于等于2,则q″(ai)=p(ai|b1,b2)。如果对话历史意图序列长度为1,则q″(ai)=p(ai|b1)。如果对话历史意图序列长度为0,则q″(ai)=p(ai)。
第3.3步:预测用户属于意图ai的概率q(ai)=q′(ai)×q″(ai)。
第3.4步:选择概率最大的意图作为用户的意图。
上述技术方案的工作原理和有益效果为:本方法提供了一种融合先验知识的对话意图识别方法,将意图识别视为阶马尔科夫过程,即在预测当前用户的意图时,还需要考虑前个意图来使得预测的结果更加的准确。相比于现有技术中的仅输入当前文本利用训练模型来进行用户意图的方法,本发明更是融合了先验知识。
本实施例还提供了一种对话意图识别装置,如图3所示,该装置包括:
统计模块301,用于统计历史对话数据中的各历史用户意图出现的概率以此作为先验知识序列;
预测模块302,用于根据预设分类模型,预测当前输入的文本属于用户意图ai的概率q1;
计算模块303,用于利用先验知识序列,计算当前输入的文本属于用户意图ai的概率q2;
选择模块304,用于根据概率q1和所述概率q2,选择概率最大的意图作为所述当前输入的文本的当前意图。
在一个实施例中,如图4所示,统计模块,包括:
获取子模块401,用于利用对话日志收集历史对话数据,获取历史对话数据中的关键词;
确定子模块402,用于根据关键词确定各历史用户意图;
标注子模块403,用于对历史对话数据中含有各历史用户意图的对话语句进行标注;
第一计算子模块404,用于利用下列公式计算历史对话数据中的用户意图ai的概率:
其中,ai为各历史用户意图的第i个用户意图,mi为用户意图ai在历史对话数据中出现的次数,p(ai)为用户意图ai在历史对话数据中出现的概率。
在一个实施例中,统计模块,还包括:
第二计算子模块,用于根据下列公式计算出历史对话数据中在第一特定条件下出现用户意图ai的概率:
其中,aj为各历史用户意图中第j个用户意图,mij为ai在aj之后在历史对话数据中出现的次数,mj为aj在历史对话数据中出现的次数;
第三计算子模块,用于根据下列公式计算出所述历史对话数据中在第二特定条件下出现用户意图ai的概率:
其中,ak为各历史用户意图中第k个用户意图,mijk为ai在aj和ak之后在历史对话数据中出现的次数,mjk为aj和ak同时在历史对话数据中出现的次数。
在一个实施例中,计算模块,包括:
预测子模块,用于根据先验知识序列预测当前输入的文本属于用户意图ai的概率q2;
第一输出子模块,用于若序列长度大于等于第一预设阈值,输出q2=p(ai|b1,b2),若所述序列长度等于第二预设阈值,输出q2=p(ai|b1),若序列长度等于第三预设阈值,输出q2=p(ai);
其中,b1、b2为当前输入的文本所属的历史意图。
在一个实施例中,选择模块,包括:
第四计算子模块,用于利用下列公式计算当前输入的文本属于用户意图ai的总概率q:
q=q1*q2;
第二输出子模块,用于输出总概率q最大的用户意图作为当前输入的文本的当前意图。
本领域技术用户员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。