智能客服的一些内容

Python面面观

共 2418字,需浏览 5分钟

 ·

2021-05-26 15:15

主要介绍一些智能客服领域的内容,智能客服算是 NLP + 知识图谱 + 深度学习落地比较成熟的行业了。主要介绍智能客服领域的一些术语、 3 种机器人的应用场景和实体识别在多轮对话的运用。

智能客服领域一些术语

Intent:意图,用户通过自然语言表达方式来提出某种问题或达到某种目的。不同的人在意图层面会有极大的共性,同一个人在不同品类的商品购物时,也有类似的共性。机器人要解决用户的需求,首先需要识别用户的意图。例如,买家发送“给我推荐一款纸尿裤”,机器人会针对这句话切词,变成“给\我\推荐\一款\纸尿裤”,然后综合考虑 词特征、交叉特征、上文意图等因素,给出预测的意图。

实体:意图识别过程中需要进行实体抽取,主要抽取的是文本中的原子信息元素,如人名、组织/机构名、地理位置、事件/日期、字符值、金额值等。实体抽取可分为基于规则的方法抽取和基于模型的方法抽取。

实体面临的挑战

  • 上下文相关:同一个表达在不同的上下文中通常有不同的意义,比如“13”可以是“13 斤”,也可以是“13 厘米”,具体取值跟对话场景相关。
  • 歧义:自然语言存在多样性,也就是一个意思可以以不同的说法进行表达。例如说“空调”时,可以是电器里面的空调,也可以是某个纸尿裤系列“空调系列纸尿裤”。

分类

  • 被动意图:用户触发,机器人进行响应;
  • 对比意图:属于被动意图,但实体会保留多值;而其他意图的多个实体会随机给出一个;
  • 主动意图:机器人主动触发,按设定好的策略引导用户完成某项任务。需要结合被动意图使用;
  • Slot:槽位,对意图的补充,意图的属性。如,询问{Time}天气,槽位{Time}代表咨询哪天的天气;
  • Dialogue State:对话状态,含 0 时刻到 t 时刻的对话历史、用户目标、意图和槽值对的数据结构。对话管理中的一部分,记录整通对话的各种信息。例如,是一通对话的第几句,第几个意图;或者记录,当前意图有每个槽位是否填充;
  • Dialogue Policy:对话策略,依据给定上下文及当前 Query,如何进行下一步操作;
  • Session:一通对话,通常一天内的对话由多通对话组成;
  • Turn:对话中的每一句都可以称之为一轮。包括用户请求、响应的答案、当前识别的意图ID。

3 种机器人的应用场景

问答型机器人

问答型在特定领域的知识库中,找到和用户出的问题语义匹配的知识点,给出合理的答案。有明确的任务目标,但这类型的对话不需要把用户问话中的信息参数化,是针对一定固定规则的提问,都有固定、明确的答案。这类场景最简单。部分实现方式通过关键字识别都可以做。优势是配置简单,立即生效,缺点是时效性较强,维护成本高。

比如用户询问“发货用什么快递?” 机器人回答:“我们家快递都是韵达快递哦”

任务型机器人

定义:有明确的任务目标,这个目标其实就是用户的意图,同时也会有一些关键信息需要参数化,通过与用户多轮交互,达到任务目标。多轮交互,更接近人类的对话习惯,但是需要设计大量交互过程。

需要和用户询问更多信息的意图,例如尺码咨询问题。比如:用户给定身高、体重,希望了解自己适合的尺码。任务型对话的难点,如何准确识别用户的意图?比如:

  • 如何在意图无法识别的时候给出合理的推荐?
  • 如何抽取对话过程中的实体?
  • 如何感知用户的情绪?
  • 如何解决用户的追问?
  • 如何对用户的状态进行追踪?
  • 如何在主动和被动之间进行切换?
  • 如何做数据管理?
  • 如何根据具体意图执行某个动作?

推荐型机器人

定义:根据多维度的信息(用户画像、用户历史购买行为、用户对话中提供的信息等),给用户推荐合适的商品,提高用户寻找商品的效率,升购买转化率。比如:用户给定一些属性(如纯棉、修身),希望推荐合适的上衣。

精准的推荐能给用户带来价值,且用户行为也会反向提升推荐效果。但需要用户画像、购买行为、购买兴趣等信息作为支撑,信息不足时会导致推荐不精准。

实体识别在多轮对话中的运用

命名实体的定义:命名实体是具有类型的对象词。比如 “北京市”是一个命名实体,它的类型是 “地名”, 类似的还有 “李三” 是一个“人名”。

命名实体在多轮对话中的作用:对用户的输入的问题, 我们可以用下面的方式生成回答:

  1. 首先确定用户这句话是什么意图;
  2. 对于用户的话抽取实体;
  3. 走流程,返回一个答案。

例如,对于输入“我家宝宝17斤,可以穿多大码纸尿裤?”

  1. 意图是 “根据体重查尺码”
  2. 实体:体重:17斤, 品类:纸尿裤

根据上面这个例子,可以看出,命名实体现了用户的目标。对于用户的输入,如果不抽取实体,后台仅仅知道用户的意图是 "根据体重查尺码", 显然这个是不足以生成一个回答。如果抽取实体,可以知道用户想要的是 “根据体重查[纸尿裤]尺码, [体重]是[17斤]”, 这样可以精准的返回 “[17斤] 的宝宝适合 [M码] 的 [纸尿裤]”。

希望通过意图和实体来表示用户的问题是什么,用户问这个问题具体是想要什么。

命名实体识别方法概述:可以把目前碰到的命名实体分为两类:

  1. 不管这个词出现在什么语境里面,都很有可能是实体,比如纸尿裤,拉拉裤。那么可以简单认为只要这个词出现在用户的输入里面,那么这个词就是命名实体。可以称这类实体为垂直的行业相关的实体。对于这类实体,可以简单定义一个包含所有垂直实体字典,用查字典的方式识别。
  2. 这类实体的识别需要依据上下文, 比如 28 号, 可以是一个日期,门牌号,人的 id 等,需要根据语境去区分;再如 101 号,不可能是一个日期。我们知道日期还有很多其他的很细的复杂的模式,而且出现的规则比较复杂,所以需要用模型从训练数据里面去学习这些规则。这类实体一般都是可以跨行业共享的,通常称其为普通实体。
浏览 75
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报