第2章 意图梳理基础
2.1知识库梳理搭建
点击对话搭建-问答对话后我们会发现平台提供两种问答型对话的搭建方式:基于关键词规则的问答,基于语义相似度匹配的问答。
- 基于关键词规则的问答——关键词匹配规则
- 可以通过手动添加、批量导入的方式,配置关键词规则。
- 配置关键词规则后,平台对用户消息中出现的关键词进行字符匹配,如果匹配成功,机器人回复这个规则下的答案。
- 基于语义相似度匹配的问答——知识库
- 可以通过手动添加、批量导入、语料聚类挖掘的方式,配置知识点。
- 配置知识点后,平台对用户消息与知识点相似问进行语义匹配,如果匹配后的相似分数达到阈值,机器人回复这个知识点配置的答案。
知识库更符合人类自然的思维习惯,所以在这里先介绍知识库,后介绍关键词匹配规则。
问答对话,指客户定制问答知识库,用户输入“问题式”文本请求,平台使用算法在问答知识库中检索,使用“答案”来回答用户的“问题”。
从问题新建一个知识点
在机器人平台打开问答对话界面,在这里我们可以看到整个知识库的架构,也能很方便的对机器人做各种方便的操作,点击新增知识点,我们可以快速开始体验一下机器人的能力。
可以在知识库页面点击新增知识点开始新建一个知识点,标准问题,相似问题必填,分类必须选择一个,没有新建分类时可以先选择默认分类。
有效的知识点相似问题一般建议在20个以上,知识库搭建初期,如指标符合要求,我们也能接受10个以上的相似问数量。
答案可以选择文字,图片等进行添加,未添加答案时会回复兜底设置的回复。选择“已生效”之后就可以将这个知识点简单的加入知识库了。
点击右下角的调试机器人可以对机器人的回复情况做快速的验证。
常见调试知识点未获得回复的原因:
- 知识点未生效,知识点创建的时候是默认未生效的
- 知识点缺少答案,知识点无答案的时候依旧回回复兜底设置的内容
知识点标准问题新建Tips
- 要具有代表性,标题的质量影响召回
- 使用标准普通话,容易理解,避免明显方言或个人习惯用语
- 避免错别字,网络用语,生僻词汇 e.g. 退火(货)有效期
- 语法完整,简明扼要,不要仅有词语,避免复杂的长句
- 不需要无用特殊符号,问候语,语气词等
特色专题1:句式的添加和使用
很多情况下,用户描述一个句子可能是用了特别具体的某个特征,可以看下面两个例子。
案例一:“什么时候发货”这个知识点,在用户的叙述中很可能是“今天有没有发货信息”、“周一能发货吗”、“18号当天能发货吗”;
案例二:“产品是不是正品行货”这个知识点,用户叙述的可能一般都是具体的产品,“X系列产品是正品吗”、“X产品X型号是真的吧”、“我买的XX是行货吧”;
像这种情况我们就可以添加句式来解决,那我们想可不可以让机器人把“XX系列”都当成一个变量,这样用户说产品的任意一个系列,我们这个知识点都能认识到了,用户说的时间和产品名称,型号,系列等关键信息就是实体。
那其实“XX系列”,“X型号”,“X色号”,“X规则”我们也想全都让机器人识别到任意一个配上后面的提问“是不是正品”等就能全部识别到这个知识点呢?那我们可以设定只要符合这些规则中的任意一个,就能放到这个模式下,让机器人来识别。盛放这些不同实体的工具我们叫做词槽。
那我们需要添加实体和词槽来帮助我们完成这件事。
首先需要将用户说的关键信息总结一下,先在词库里添加枚举实体,平台自身也配有如日期这种预设实体,有需要也可以直接使用。
第二步要在词槽管理新建词槽并关联实体。
第三步点击新增句式添加,在需要使用这些信息替代用户的具体说法的地方输入“@”调用这个词槽。
这样,无需穷举所有具体信息,就能覆盖所有模式一样的句子了。句式功能会在参与召回的时候将句式还原成具体的相似问题,参与计算评分。
2.2知识点
2.2.1知识点与知识库
知识点=标准问题+语义高度相似的多个说法(相似说法)+一个或多个回答
知识库:知识工程中结构化,易操作,易利用,全面有组织的知识集群,是针对某一领域问题求解的需要,采用某种(或若干)知识表示方式在计算机存储器中存储、组织、管理和使用的互相联系的知识点集合。
特色专题2:从语料中挖掘知识点
如果您有清洗过的用户对话语料(最好是3-50个字,仅用户方初次会话数据),可以先导入语料库,而后向挖掘模块导入挖掘库中指定的语料。
导入之后选择立即挖掘。
注:挖掘功能及其依赖的效果优化部分目前仅在基础版和专业版提供。
点击对应的代表问题后的筛选问题,可以查看机器聚类的的单簇结果。
聚类小剧场
老师拿来苹果和梨,让小朋友分成两份。
小明把大苹果大梨放一起,小个头的放一起.
老师点头,恩,体量感。
小芳把红苹果挑出来,剩下的放一起.
老师点头,颜色感。
小武的结果?不明白。
小武掏出眼镜:最新款智能眼镜,能看到水果里有几个籽,左边这堆单数,右边双数。
老师很高兴:新的聚类算法诞生了
那机器人会根据句子的特征和里面包含的实体进行聚类,含有实体的聚类的结果可以点击升级句式,做进一步处理,能得到更加精准的推荐。
上图所示就是句式携带实体时的聚类表现,我们可以再展开相应的相似问挑选相似问,注意要选择保留意图单一,非关键词,完整又不和其他知识点的意图重合的句子。
对挖掘出来的知识做必要的整理,根据聚类的结果对知识点进行命名,如添加相似问,选择分类,转移,删掉不相关意图的相似问之后,我们就能在下方将知识点入库了。
如果是属于现有知识点的相似说法,我们也可以点击转移到已有知识点进行添加,若还想找到更多相似问,可以尝试点击推荐相似簇和推荐相似问按钮。
为了保证一个较好的知识点质量,此时入库的知识点默认是未生效的,你需要手动更改生效状态,并编写合适的回复答案,才能在调试机器人处进行体验。
如果想针对具体的某一场景进行挖掘,可以使用关键词挖掘,在搜索框下方有机器推荐的出现频率较高的一些关键词,点击更多关键词可以逐步缩小挖掘的范围,也可以手动输入一些指定词汇进行挖掘。点击搜索后会出现一些推荐的种子问题,添加想要挖掘的种子问题,点击“开始挖掘”后几秒会有挖掘的结果。
筛选添加的处理方式和机器聚类的结果处理方式一致。
2.2.2编辑知识点页面
知识点页面是搭建和维护知识库的过程中我们经常使用的一个页面,可以在这个页面对于知识点的一些性质予以维护。一组答案可以最多设置为10条,可选依次回复全部或者随机回复一条。对于单条答案格式,参考以下要求:
文字:最多输入2000字符,约666个汉字
图片:支持上传2M以内的 jpg/jpeg/png/gif格式图片
图文:最长10万字节;图片支持:jpg.png.gif格式;超链接:http\:// hppts\://
文件:大小在10MB以内
语音:2M以内 播放长度不超过60s,仅支持上传amr格式的语音
视频:10M以内 仅支持MP4格式
卡片 :标题、描述不超过100个字 预览图宽高为900px*500
在知识点答案下方,可以添加关联的知识点,可以强调你想让用户了解的相关问题。这些问题,在用户提问到这个知识点的时候,会以链接等形式将标准问展示在上面,所以这就是我们第一节里给大家讲的知识点标准问题的重要性。
如果希望有自动化的推荐问题,我们还可以利用回复策略-机器人策略下的相似知识点设置。
此外,我们还能利用挖掘来丰富现有知识点的相似问。在知识点编辑卡片高级设置中有挖掘相似问题。系统会利用机器推荐的知识点对应的关键词找出符合关键词要求的句子,我们在使用时选取合适的相似问,点击加号后可以添加至相应知识点。
2.3分类
2.3.1新建分类
在知识库界面左侧是机器人知识点分类页面,点击分类名称旁边的“+”符号,可以新建此分类的下一级分类,鼠标悬停在对应分类上时还会有“编辑”、“删除”按钮浮出。当鼠标变成小手“ ✋🏻 ”形状,可以拖动当前分类,改变其隶属关系,注意不能拖动为其本身的下一级。
点击向右的小三角可以展开下一级分类,点击向下的小三角可以收起属于该分类下的所有分类。
为保证分类随知识库导出和导入正常,请不要在知识点分类中使用“/”、“\”等符号,另外也不允许任意两个分类名称一样。
知识库分类是按照知识点的特点和根据业务系统求解问题的需要将知识分为若干类,而每一类又分为若干子分类。一般子分类是母分类的基础,母分类是子分类的概括,子分类之间互不相容。
显然,当知识点逐渐变多后,我们需要一些合理的方式来对知识点的分类进行组织和管理。知识点组织的结构梳理有助于在知识库搭建过程中,给知识库一个方便归纳的方法论。
如果在开始没有梳理一个好的知识库分类构建体系,在知识库搭建过程中,实际操作人员会遇到对于知识点概念不清晰,相似问不知道往哪里放,知识库搭建效率低下等问题。
2.3.2分类梳理原则与实践经验
机器人知识库必须有良好的分类才能便于理解、学习与后期的维护。
如若工作面对的是一个分类糟糕的知识库,这将是一个可怕的场景。拿到一个用户提问后,假设是人类来根据知识库里的知识点来回答问题。他会发现这么几件事,同一个问题可能会有多个知识点同时含有类似的问题,而且每个知识点的答案还都不太一样,在比较的时候易发现知识点都在不同的分类下面,整体的分类逻辑也令人摸不着头脑。
取消分类也是不可行的,知识库有20个知识点以上的时候,就必须要通过分类进行管理,才能有效梳理,否则,面对体量大的知识库,每一次整理都是漫漫征途。不能想象每次工作都要分辨1个知识点与其他成千上万个知识点的关系。
所以,当知识点逐渐变多后,我们需要一些合理的方式来对知识点的分类进行组织和管理。知识点组织的结构梳理有助于在知识库搭建过程中,给知识库里的知识点一个方便归纳的方法论。
1.分类原则和系统操作
知识库分类是按照知识点的特点和根据业务系统求解问题的需要将知识分为若干类,而每一类又分为若干子分类。一般子分类是母分类的基础,母分类是子分类的概括,子分类之间互不相容,知识库分类的划分遵循MECE的原则。
Tips
MECE分析法,全称 Mutually Exclusive Collectively Exhaustive,中文意思是“相互独立,完全穷尽”。也就是对于一个重大的议题,能够做到不重叠、不遗漏的分类,而且能够借此有效把握问题的核心,并成为有效解决问题的方法。
在知识库界面左侧是机器人知识点分类页面,点击分类名称旁边的“+”符号,可以新建此分类的下一级分类,鼠标悬停在对应分类上时还会有“编辑”、“删除”按钮浮出。当鼠标变成小手“ 👆 ”形状,可以拖动当前分类,改变其隶属关系,注意不能拖动为其本身的下一级。
点击向右的小三角“ ▶ ”可以展开下一级分类,点击向下的小三角“ ▼ ”可以收起属于该分类下的所有分类。
PS:为保证分类随知识库导出和导入正常,请不要在知识点分类中使用“/”、“\”等符号。
2.分类方法简述
2.1.分类纵向划分方法
在知识库构建过程中主要按照最终用户参与时间顺序构建分类的方法叫知识库的纵向划分方法。
纵向划分目前看来是我们搭建知识库的主要方法,在终端类公司,当已经分配了单一的业务线之后,在单一知识库中,往往是根据最终用户的参与时间进行划分。
消费产品类公司一般会按照售前,售后来区分知识库,售前还可能细分意图为优惠、产品信息、物流选择、支付办法等,售后分为物流状态、质量问题、包装问题等情况。当然,不同公司对物流等规划不完全一致,也有些公司是根据产品是否到达用户手中确定的售前售后,可以根据具体情况和实际进行微调。
服务类项目也可参照对应逻辑进行区分,比如餐饮项目按照就餐前和就餐后,人事服务类可以按照员工入职、试用期、转岗、离职的流程进行区分。
2.2.分类横向划分方法
知识库的横向划分结构主要用在产品业务线较多的情况下,并且往往是针对次一级分类进行划分,比如公司售卖的不同产品,可能就属于孕期-产品分类-不同产品进行划分。
通常在具体的分类过程中,也会结合具体业务情况将纵向划分与横向划分结合起来进行梳理。不同公司的业务模式不同,需要根据自己的实际情况进行知识库结构的确定。
2.3.分类经验概述
在实践中,我们总结了如下的分类口诀,帮助大家记忆:
一条主线,其他靠边;出现重复,早做功夫。
“一条主线”是说首先确认知识点是否以用户生命周期的场景展开,针对这类知识点,一般以最终用户参与的时间顺序作为唯一主线进行。
“其他靠边”指如果分类下知识点不是随着用户的生命周期变更的,如小区地点,小区周边这样的信息不会随着时间变化而变化,此时这类知识点可以单独拿出来作为项目的基础信息。
“出现重复,早做功夫”如果在不同阶段会出现重复,有没有明显应归类的位置,我们一般将知识点放在场景中最早提问的地方。
如果有并行的情况,比如信用卡办理的项目,线下办理为主线,同时有APP、微信、小程序、支付宝等渠道作为副线,需要明确副线的占比。 如果副线中APP开办差异占比较大,微信、小程序等渠道差异不大,有以下解决方案:
可以将APP渠道单独分类,在对应知识点下设计第二组答案,根据提问者带过来的标签,设计同一知识点根据属性实体等划分为不同答案组来进行个性化回复。
这个方案优点是可以直接根据用户提问的渠道做出最优的回答,但是需要APP渠道带属性接入或需要客户提供实体信息。 具体操作可以查看特色专题3:个性化回复。
2.4.知识库分类实践
在实践中,根据知识库搭建是否有语料进行划分,我们有“从小到大”和“从大到小”的梳理方法。
何为从大到小呢?何为从小到大呢?其实二者的核心问题在于是否有语料,前者应该为无历史语料的场景下使用,后者则为有历史语料的情况下使用的。
1 从大到小
没有条件也要创造条件:业务框架
没有历史的语料情况下,我们普遍要依赖业务框架,那在没有业务框架情况下,首先要做的事情就是梳理业务框架,梳理好业务框架,往业务框架中不断地填充知识点及其相似问,用结构化的思想不断地界定知识库的边界,故为从大(业务框架)到小(知识点、相似问):
第一步:用户群体分析
首先必不可少的是先确认机器人面对的用户群体有哪几类,分别是谁?先以外卖场景为例:
外卖行业智能客服的用户群体
第二步:用户行为分析
把用户行为作为落脚点去分析,如外卖行业的消费者,他的用户行为可以分为三大类:售前、售中、售后;那商家的用户行为可以分为3大类:未入驻商家、已入驻商家、商家账号注销;而骑手应该是:取餐、配送中、配送后;而后可以继续根据该逻辑扩充框架。
外卖行业智能客服的业务梳理大框架
可是当遇到业务场景之间无明显逻辑的时候应该怎么办呢?
第三步:产品功能分析
可以把现有产品的功能作为落脚点去分析,以支付宝的市民中心页面的办事大厅为例,可以将页面上的一个个业务当作框架的枝干:
支付宝-市民中心-办事大厅页面
根据以上产品功能梳理出来以下业务框架:
市民中心办事大厅业务框架
当我们梳理好业务框架,有了这么一棵树,接着就是要不断地往里面扩充知识点及其对应相似问,纳入对应的业务场景下;好比在树干(业务框架)上长出树枝(知识点),树枝上再不断地长出叶子(相似问)。
2 从小到大
充分利用尚方宝剑:历史语料
当有历史语料的情况下,我们可以通过一个个的用户query去提取核心内容,根据核心内容反推业务框架,故为从小(一个个用户query)到大(业务框架)。
如以下用户query:
1.你们的蜂蜜产品有什么优势?
2.蜂蜜枇杷露都有什么功效?
3.低血压可以吃哪款产品?
4.服用了蜂蜜枇杷露出现头晕症状?
5.蜂蜜枇杷露为什么会有白色沉淀物?
通过用户query提取核心内容:
1.你们的蜂蜜产品有什么优势? ->售前问题-品牌优势
2.蜂蜜枇杷露都有什么功效? ->售前问题-产品功效
3.低血压可以吃哪款产品? ->售前问题-症状保健
4.服用了蜂蜜枇杷露出现头晕症状? ->售后问题-服用症状
5.蜂蜜枇杷露为什么会有白色沉淀物?->售后问题-产品质量
当对一批用户问题进行了核心内容的提取,需要从整体角度上去看知识点的颗粒度,以及对应的业务场景、用户群体是否一致,如果不一致还需要调整;并且在知识库搭建完成上线后,需要密切关注用户交互数据,查看是否有漏网之鱼。
总的来说,搭建知识库需要从业务场景出发,优先解决高频问题;这样搭建的知识库,能够较好的应对风险并方便后续的维护优化。
Tips 颗粒度
我们将知识点包含范围的大小称作颗粒度。颗粒度大的知识点可以做适当拆分,主要利用知识点编辑卡片中的搜索相似问和添加为新知识点。相应地,知识点颗粒度过小,没什么人问,对用户没什么帮助并且意思相似又集中的,可以适当合并,应用的是相似问转移到已有知识点功能。
梳理知识库的几点原则
一切从业务场景出发,优先解决高频知识点,其次才是低频知识点与时效性较强的知识点;即使是在上线阶段也会不断添加新的知识点,因此在搭建初期应当首先考虑最高频、最痛点的知识点。
明确知识库边界,并不是所有的用户语句都适合作为知识点;另外,不同的产品知识库内可能会出现部分通用类型的问题,该类问题到底应该按照产品分类去整理还是统一纳入通用知识库里,应当结合业务场景来综合考虑,选择合适的方式。 在进行知识点整理的时候,最好制定统一的命名规范,方便后面管理。
知识库规模越大,管理难度就越大,因此当数据增量到一定程度的时候需要采取抽样检查或定期检查等方式来确保数据库的健康程度。例如查看有无失效知识点,有无漏网之鱼等等。
虽然分类不影响效果,但是在搭建过程中对机器人和运营人员有很大帮助。我们来想一下,如果用户的问题维护人员都不知道存在知识库的哪个部分,机器人能会吗?
虽然分类不影响效果,但是在搭建过程中对机器人和运营人员有很大帮助,我们来想一下,如果用户的问题维护人员都不知道存在知识库的哪个部分,机器人能会吗?
2.4搭建知识库流程
当知识库分类做好之后,我们需要对聊天记录中可以聚类出来的相似问归类到合适的知识点中,以便取得更好的效果。
这里要说明的一点是,这个搭建流程针对的是有语料搭建,有语料的意思我们目前指的就是有聊天记录。
步骤1:数据清洗和提问抽取
从各个对话系统导出来的信息不尽相同,这就需要我们针对这些数据做一些处理,对数据这样的处理过程就是数据清洗。
本步骤所说内容,也可联系来也商务运营人员获取相应的清洗服务或工具。
通过大量数据的观察,我们会发现会话记录中,最重要的数据就是用户的首次提问,因为用户的二次提问很有可能根据之前的问题而变得有针对性,这种进一步理解的能力目前是需要应用知识图谱的能力实现的,我们也可以利用回复策略中的问答消息智能改写来实现,这里不做更多讲述。
清洗数据之前我们需要从原始的语料中阅读上百条(推荐200个对话-1000个对话)和客户之前的聊天记录,从中发现一些用户的说话特点,业务的重点范围,了解语料给出的格式。
注意清洗之后要保留一部分测试数据。
需要强调的是,因为使用的机器人不同,导出的数据方法不同,聊天记录的格式可能会形式非常不一样,但是一般来说我们都需要有以下要求:
- 能区分每一个客服和每一个客户的角色
- 如有机器人,可以区分机器人和客服
- 可以知道哪些上下文属于一个对话(常用会话、session等表示)
- 对话消息的时间(以便保留首轮对话)
然后我们在单轮对话中保留客户所说的有意义的首轮回复,注意排除用户重复的语句前,我们要保留用户的高频问题,以便后期测试。
可以这样处理,如果用户首轮仅有“你好,您好,在不在,在吗”等问候性话语,那么这种问题整行全部删除(即将用户的次轮会话拔为首轮对话)。
字数过短的要分开考虑,三个字以下可能更适合任务,关键词等机器人,或问答的问候等地方。
其余可以参考的处理方式如下:
(1)清洗掉代码类的内容,如下类信息几乎可以全部清除,链接如有需要可以保留:
{"operator_hint":0,"operator_hint_desc":"","answer_type":2,"cmd":60,"answer_label":"您是想问?","answer_flag":0,"answer_list":"[{"groupId":866504,"question":"XX贷额度","answer_flag":0},{"groupId":866524,"question":"分期XX不显示额度","answer_flag":0},{"groupId":866490,"question":"XXX公积金申请额度","answer_flag":0}]","answer_cnt":3}
(2)如果不需要客服回答部分的分析和聚类,需要将用户对话中混杂的客服会话去除掉,甚至可以向客服部门商讨原来使用的话术,如“请问有什么可以帮您”。
(3)针对专业性的领域需要去除掉一些专业上知识库搭建过程中不需要的东西,如不涉及具体基金或股票的问答,可以将所有含基金/股票代码、全称及简称的句子全部提取出来单独处理;在APP场景下可能是各种故障代码和提示。
(4)无意义的英文和数字,比如中文语境下,纯英文和纯数字都可以去掉
(5)去除表情和无意义符号
步骤2:分类创建
这一步可以参照我们上一节讲述的理论进行。
当然,如果构建知识库和使用知识库的不是同一批人的话,我们需要坐下来花一到两个小时,来梳理我们搭建的框架逻辑。并且将大家约定的主线和规则写成会议纪要,方便后期参照调整。
可选步骤:新词、实体发现及审核
这里的新词指的不是说新造的词,而是指对于系统来说比较陌生,没有办法很好的明白如何处理的词,主要的新词是指纯日常对话中不会涉及到的词汇,例如中国农业银行,北京大学,莱姆病等;对于大型项目来说,往往由于其专业性,往往需要这个步骤来让机器人认识这些专业词汇。
对于具体的业务来说新词可能是某一产品线的名称,营销活动名称,业务系统名称等。
在具体的业务场景中,同义词可能比一般意义上的同义词概念要更加宽泛一点,除了常见的中国农业银行也常被称作农行,农业银行,甚至在询问支持银行卡列表时,农行卡这种也是同义词;在天弘公司的业务场景中,实际上用户说了天虹、天宏、天鸿、天泓意思都是指天弘公司,当这里不会产生新的误解时,在这个场景下,这些词就能被当做同义词。
在平台系统里可以使用短语挖掘(实体挖掘)来帮我们快速的找到这些短语,使用导入语料选择导入了语料库中的语料,点击立即挖掘,会出现划词界面,标注其中的短语,点击下一步,就会发现机器人自己在找类似模式下的短语了。
注:平台基础版和专业版有短语挖掘功能。
针对找到的短语,我们对其进行筛选入库的操作就可以了。
所有工具挑出的短语,最后都要经过具体业务人员的确认,举个例子,在消费信贷对C端用户的场景下,借款是等同于贷款的;但在专业的同业操作场景下,借款和贷款是对立的。
为什么在这里我们尤其强调专有词汇和实体的作用呢?因为目前中文的知识库问答系统所做的第一步都是分词,专有词汇,实体的分词正确了,后续的匹配等动作才能正确。
不仅如此,平台的升级句式功能也十分依赖挑选好的枚举实体等。有了更好的实体维护,我们的挖掘效果也就更好。
所以,虽然这一步骤不是必须的,但是磨刀不误砍柴工,希望大家还是能够予以重视和完成。
步骤3:聚类和挖掘
将专有词汇,实体等在系统中设置好后,我们就可以规模化的来搭建一个知识库了,在线上系统,我们可以将数据抽取部分(一般600-2000条)留为测试数据后,将余下语料导入挖掘,参考从语料中挖掘知识点相关章节来新建知识点。
如果是有算法研究人员的帮助,我们也可以找对应工程师来帮助我们批量聚类形成一批知识点导入系统。
按问题直接聚类后的知识点导入文件一般如下(类似机器挖掘的聚类结果):
分类 | 标准问题 | 相似问题 | 答案 |
---|---|---|---|
未分类(一般命名为未分类) | 标准问(从相似问中选取第二或三个) | 相似问1|相似问2|相似问3|相似问4 | 答案:标准问 |
未分类 | 怎么看不到了 | 现在怎么看不到了||怎么看不到了||我怎么看不到呢||怎么都查不到 | 知识点:怎么看不到了 |
按照专有词汇聚类后的结果文件格式如下(类似关键词挖掘):
分类 | 标准问题 | 相似问题 | 答案 |
---|---|---|---|
未分类(一般命名为未分类) | 专业词汇1,专业词汇2 | 相似问1|相似问2|相似问3|相似问4 | 答案:标准问 |
未分类 | 如何,看不到 | 现在怎么看不到了||怎么看不到了||我怎么看不到呢||怎么都查不到 | 知识点:如何|看不到 |
所有的机器聚类结果和挖掘结果都需要经过人工审核,判定标准可以参考讲新建知识点和搭建知识库的注意事项来操作。
步骤4:完善知识库
完善知识库从狭义上来说是进行答案的添加与维护,从广义上来说,还包括分类的调整和新增,知识点的调整和新增。
基本构建好知识库后,我们要检查是否还有相似问数量少于10个的知识点等步骤,如果不完善,可以适当通过泛化工具补充相似问等。
步骤5:模型优化和语料评测
每天搭建到一个阶段时,我们可以利用模型效果验证方法、知识库优化方法来对知识库效果验证和优化(操作参见模型效果验证和优化知识库)。
主要操作有:
利用效果优化-知识库优化查看是不是相似问放错了知识点,利用相似说法学习补充结构已经完善的知识库中缺少的类似问法。
使用模型测评和在线标注来查看是否知识点结构缺失,召回率偏低;如果判断召回率偏低,认识的相似问数量偏少,可以利用导入相似说法学习来扩充已有知识点的相似问。
模型测评的来源是原本保留的语料测试集或者新产生的用户问话的首条有意义问题。
直到判断可以达到上线要求后,接入渠道上线。如果项目要求较高,还可以在上线前统一查看一下所有的相似问和答案,规避一些机器人没能自己发现的问题。
2.5搭建知识库的一些注意事项
虽然我们不可否认的是随着学术理论研究的一步步深入,生活中的很多概念都逐渐有了细致的解释,但是如果想要快速的搭建起一个知识库落地,看在具体的业务场景中,一个意图的实际意义可能更有效。
我们来看这样一个例子,在金融行业,借款是借入款项,从债务人角度讲;贷款是贷出款项,从债权人角度讲。而具体到一家消费信贷公司,对普通用户的角色来说,只可能是贷款,所以在这个场景下,用户所问的借款的实际含义其实只是贷款,在这里无需和用户强调借款和贷款的差异。
另外,在很多情况下,我们也需要对用户的一些模糊性提问做出澄清,这时主要参考的标准是实际业务发生时我们会怎么做。
除此之外,我们还有以下几点建议:
明确知识库、知识点范围,减少语义交叉,不猜测用户意图,入库时适当整理。
明确知识库范围是说问答对话解决的是通用的大量的,通用的,相似的头部问题,判断标准是知识库能否覆盖业务场景;知识点范围类似,要覆盖范围合理,答案能回答相似问;
减少语义交叉是说知识点之间的相似度要小,相似问不要错放,相似问不能含多个意图;
不猜测用户意图是说根据语句的实际内容标注,不对语句背后的意思进行人为理解和猜测,如“我试了下发现衣服大了”,不了解业务或不明确归类时,不要试图猜测是可能想退或想换,而应该按照业务实际进行归类,提问不完整,不能解析出明确含义的,不可以直接放在知识点里;
入库时适当整理就是说要判断是否能放,多意图拆分,少成分补全;
由于模型训练的需要,场景下包含的语料数量最好30条,且包含的问法尽量丰富;一个知识点质量的评估标准之一就是在此场景下能否应对绝大多数情况下顾客的提问;总体的相似问多少分布最好和用户的实际提问一致;初期我们也能接受10个以上。
相似问长度不要超过100个字符或25个词,一个汉字或一个字母、一个空格都算一个字符,在导入系统时会被截断,影响相似度计算;(任务触发中的相似问,也是一样的逻辑)
关键词和短语可以使用关键词来处理。
实际案例:
消费信贷场景下,一个客户面临的审核在办卡申请阶段,激活阶段,提款阶段都有可能发生,用户自身也不区分借款和贷款的区别。在这钟情况下,用户问的“审核要多久”,可能包含的意图有:
借款审核要多久;
贷款审核要多久;
激活审核要多久;
提款审核要多久;
审批审核要多久;
此时,我们可以采用的方法有:
- 根据用户不同的生命周期做分组答案,根据用户身上带的不同的生命周期和状态,自动推荐合适的答案。
- 将以上所有问题放在同一个知识点:审核要多久
- 将所有知识点分别隔开,一共有5小范围知识点+1个大范围知识点=6个不同的知识点,不同知识点之间相互关联,引导用户进一步提问。
- 做成任务对话,用户问到审核要多久进一步询问后给出答案。
实际客户最后采用的划分方法结合了实际业务场景,借款和贷款对用户来说其实是一个意思,因此可以合并;业务上每次提款都需要审批,所以提款和审批可以合并成一个知识点;激活审核单列出来;审核要多久给了一个比较全面的答案,在关联提问方面做了推荐关联问题。
2.6意图回复编写
搭建机器人从来都是个系统工程,所以面向客户的展示也就是机器人的回复,是影响用户体验的非常重要的因素,并不是机器人回答对了知识点就结束了。
有的时候用户认为机器人没能解决问题,不一定是因为机器人没有召回正确的知识点,而是该知识点的答案没能解决用户的问题。
经过我们的长期实践发现,对于历史项目覆盖率,准确率,召回率较高(皆为90%以上)的机器人,至少40%的转人工是因为答案不能解决用户的问题。
下面将重点介绍五个保障用户问答基本体验的原则:
1.准确
指准确解答用户的问题,没有错别字,不说错话;说话不含糊、无歧义是指避免笼统模糊,引发其他问题或误解,这是对答案最根本的要求。
2.简洁适用
能应答当前情况,不啰嗦,简单明了,信息量适当,太长用户是不喜欢的。
过长的答案,在回复的时候就需要适当提炼要点,改进展示形式。
3.说明所回答的问题
要讲明白自己当前回答的是什么问题,简单来说,是指带问题回复,给用户回应,让用户知道机器人识别到了他的问题。
X 错误示例
Q:产检假请假流程中需要上传什么内容?
A:上传XXX附件,具体可咨询部门人事专员等相关人员。
答案没表明是针对产检假请假的答案。
在真实场景中我们发现这个问题往往是因为用户重复了这个问题好几次,机器人反复的回答他这个答案。
对于机器人训练师来说,这个答案对应产检假上传附件的知识点,但用户是不知道的。
〇 正确示例
Q:产检假请假流程中需要上传什么内容?
A:产检假请假流程中需要上传XXX附件,具体可咨询部门人事专员等相关人员。
这个答案就很直白的体现了知识点的标题,让用户能知道这个回复确实是正确的。
也有些机器人在配置时选择了知识点标题和回复一起发送的方式,但这显然不符合下面的这个自然友好原则。
4.自然友好
自然即和客服回复方式一致,像人,不要太机械,生硬,可适当措辞多样化。
友好是说有温度,关心用户的感受,一定不能辱骂侮辱胁迫用户,这个要求往低了说只要通顺即可,但是好的答案能让客户感觉如沐春风,心情愉悦。
5.无答案引导
这指的是在没有答案或者兜底时给用户指导获取信息的途径。
因为对于用户来说,我们提供的服务可能是完全陌生的,用户不会知道我们的服务范围或能力,这就需要我们告诉用户可操作范围或步骤。
〇 服务范围引导示例
Q:你好
A:你好呀,我是机器人小吾,我可以回答关于五险一金,个税扣缴相关的问题~您可以尝试问我“社保缴纳记录在哪里查询”。
这个引导我们也可以应用在用户打开后欢迎语等环节。(平台支持的渠道可以在“对话搭建-个性化体验-用户事件-进入事件”进行配置后体验到。)
〇 兜底回复引导示例
Q:*……%¥#@¥%…
A:抱歉,您问的问题我还不知道呢,要不您换种问法问问我吧~~
您也可以点击窗口右下角的“转人工”按钮来获得人工客服的帮助。
必要的时候可以指引用户操作(一般用任务对话实现)或给出跳转链接,需要注意的是这个操作在关键词对话搭建也很常见。
〇 关键词回复引导示例
Q:社保
A:请问您想问关于社保的什么问题呢?
测试体验
试运行可以这样测试答案,让用户按照给定的知识库范围进行提问,自己使用即时沟通的机器人辅助人工进行回复的方式尝试回答。
Tips: 即时沟通即平台自带的轻量客服系统,在自有渠道上可以接入用户提问,模拟客服进行回复,在回复时,输入上方会自动弹出机器人推荐的答案。
当你想要调整答案进行回复的时候,就说明原本的答案和处理方式可能是不够合适的。
机器人表现的智慧都是人类教与机器人的,在答案编写的角度上表现的尤其明显,优化机器人的诀窍就是像人像人再像人。
答案编写注意事项
使用标准普通话,容易理解,避免明显方言或个人习惯用语
避免错别字,网络用语,生僻词汇 e.g. 退火(货)有效期
语法完整,简明扼要,不要仅有词语,避免复杂的长句
不需要无用特殊符号,问候语,语气词等
长答案整理范式
标准问的描述部分+是什么答案(简洁版除了标题不超过10个字)。
遇到的情况1有以下解决办法:
解决方案1;可以进入XX-XX页面(点击链接直达),进行XX操作。
解决方案2;
遇到的情况2有以下解决办法:
解决方案1;
……
如果坚持要XXX,可以XXX(极端情况再补充)
如果还不能解决,考虑是XXX。附件截图示例如下:
图片1.
与答案相关的关联推荐知识点。
特色专题3:个性化回复
一般来说,知识点中相似问越多,效果越好。但一味增加反而会导致知识点下相似问的冗余。
很多情况下,用户描述一个句子可能是用了某个很具体的特征,可以看下面两个例子。
案例一:“什么时候发货”这个知识点,在用户的叙述中很可能是“今天有没有发货信息”、“周一能发货吗”、“18号当天能发货吗”;
案例二:“产品是不是正品行货”这个知识点,用户叙述的可能一般都是具体的产品,“X系列产品是正品吗”、“X产品X型号是真的吧”、“我买的XX是行货吧”;
那我们想可不可以让机器人把“XX系列”都当成一种特征,而这些特征反复的出现在我们的知识中,可以单独进行维护,这样用户说产品的任意一个系列,机器人对这个知识点也能认识。
句式的产生
含有“XX系列”,“X型号”,“X色号”,“X条件”,这种情况的相似问题,我们就可以添加句式来解决,用户说的时间和产品名称,型号,系列等关键信息就是实体。
这时用户说XX系列是真的吗?就可以升级成句式“@产品系列 是真的吗?”。
句式是相似说法的模板。当你需要在一个知识点中添加大量句子结构类似的相似说法时,就可以使用句式来减少相似说法的数量。
其实“XX系列”,“X型号”,“X色号”,“X规则”我们也想全都让机器人识别到任意一个配上后面的提问“是不是正品”等就能全部识别到这个知识点呢?
那平台现在是可以设定只要符合这些规则中的任意一个,就能放到这个模式下,让机器人来识别。
盛放这些不同实体值的工具我们叫做词槽,大家可以简单的理解为一个篮子。
加上词槽之后,这个句式就变成了“@产品:产品系列,产品型号,产品色号 是真的吗”。
其中,产品是盛放不同实体值的词槽,符合产品系列,产品型号,产品色号这些实体规定规则的值或文本,类似于金装(奶粉系列),3600X(CPU型号),999(口红色号),我们称作实体值。
产品系列,产品型号,产品色号是不同的实体,是判定用户语句是否包含或符合特定规则的筛选工具。
实体和词槽的作用
那我们需要添加实体和词槽来帮助我们完成这件事。
首先需要将用户说的特征信息总结一下,先在对话搭建的词库菜单里添加枚举实体等,平台自身也配有如日期,数字这种预设实体,有需要也可以直接使用。
第二步要在词槽管理新建问答词槽并关联实体。
第三步新建知识点或在已有知识点点击新增句式添加,在需要使用这些信息替代用户的具体说法的地方输入“@”调用对应词槽。
这样,无需穷举所有具体信息,就能覆盖所有模式一样的句子了。
而机器人会将句式在参与召回的时候将句式还原成具体的相似问题,参与计算评分。这样做了之后,句式的评分和相似问题的评分就变得可以比较了。
句式的评分和相似问题的评分可以比较后,平台的召回逻辑理解起来就很简单了。
平台也支持使用更多的词槽来描述一个具体的问题,比如“@产品系列:产品系列 的@产品型号:产品型号 介绍一下?”,这样避免了一个问题仅有一个重要特征来描述不够精确,容易无召回或误召回的问题。
通过实体而不是同义词的方法,能让我们区分出不同的实体值,甚至可以根据不同的实体值,比如说产品型号,给用户个性化的回复,又不增加更多的泛化相似问题投入。
个性化回复的设置
不同的产品型号系列的对应答案,为了方便整理,可以放置到一个表格中,这样就能精准的找到应该回复用户的问题了。
商品编号 | 系列 | 阶段 | 答案 |
---|---|---|---|
100001 | 天启 | 二段 | 天启二段奶粉…… |
100002 | 天启 | 三段 | 天启三段奶粉…… |
100003 | 美赋 | 三段 | 美赋三段奶粉…… |
其实在很多知识在业务中,也都是使用表格存放的,所以如果直接能将表格中的内容组织后回复出来,对机器人搭建来说是非常高效的。
个性化回复的答案我们可以在对话搭建-个性化体验-个性化回复创建表格并添加。
目前平台支持创建多个表格,每个表格可以有一万行,可以添加10组用来定位条件的属性列,以及20组答案列;答案列中的答案可以点击添加,支持文字、图片、图文、卡片、文件、语音和视频格式;答案也可以批量导入,批量导入的答案只支持文字。
关联表格也很简单,只需要开启个性化回复,选择表格,配置查询条件,返回的答案所在列就行了。
保存后,我们就可以在调试机器人,体验版网页或其他正式渠道看到效果了。
可以在调试机器人处看到对应的句式,知道这个问题是哪个知识点,甚至是哪个句式影响下才发送回复的,这可以支持我们进行快速准确的进行调优。
查询的条件现在还支持用户的询问语句结合用户自身的属性一起使用,可以实现不同地区,身份,渠道的用户提问可以回复不一样的答案。
现在,平台机器人对话平台可以在配置这样结构的知识点后,精准的回复用户诸如“帮我找一下X城市的门店地址”,“X系列产品有X功能吗”这样的问题,并且可以减少很多低水平重复的相似问添加工作。
多个知识点可以利用同一张表格,更加节省配置的工作量。
所以,通过知识点关联表格,用句式来查询表格并回复答案这个方案非常的精准,避免了仅采用词向量、句向量和自然语言查表查数据库的能力进行召回,效果难以干预和修复问题。
简单的知识图谱类需求,我们可以转化成问答调用表格进行回复,大大降低搭建和维护知识图谱的成本。
个性化回复的其他使用技巧
针对句式和读表我们也做了大量的优化,以使这个过程更具有实操性和落地性。
在搭建时,完全不需要英文单词,不需要代码或者任何接口,只要准备好表格,我们就能创建这样一个知识点。
在配置过程中,也可以将已输入的相似问题,简单点击就能升级为句式。
原有的知识库可以很方便的升级为带句式和个性化回复的知识库。
知识库也支持了携带句式的导入导出,方便在其他APP复用知识库。
在任务对话中,也可以利用句式来填槽和触发,这样在触发的同时,我们也能精准的收集到用户说的关键信息。
添加了词槽之后,使用句式可以精准的将诸如出发地和到达地这样的信息精准的收集到。
例如,“帮我买一张@出发地:城市 到@到达地:城市 的@出行类型:交通方式 票”,就可以识别如帮我买一张上海到北京的高铁票这样的需求,并且精准的将出发地填入上海,到达地填入北京,出行类型填入高铁。
那如果有新增的品类或者给另外的产品线使用,我们只需要替换或者新增实体值就可以完美复用原来的知识点了。知识库的通用性和专业性都能得到保证。
除此之外,我们还针对这类知识点的相似说法挖掘能力做了大量优化。
如果您有清洗过的和用户对话记录,可以先导入语料库,而后从挖掘机器人导入挖掘库中指定的语料。
导入之后选择立即挖掘。
注:挖掘功能及部分效果优化功能目前仅在基础版和专业版提供。
机器人会根据句子的特征和里面包含的实体进行聚类,含有实体的聚类的结果可以点击自动升级句式,得到更加精准的推荐,方便做进一步处理。
点击对应的代表问题后的筛选问题,可以查看机器自主聚类的的单簇结果。
上图所示就是句式携带实体时的聚类表现,我们可以再展开相应的相似问挑选相似问,可以看到机器人已经将类似于“X个月宝宝的正常体重”,“X个月宝宝X斤是否正常”这样的句子全都汇总在一起了。
点击簇后可以发现有些已经被机器人预选上了,另外一些没有,预选上的句子是机器人推荐入库的,其余的句子和已被预选的句子十分接近,不需要重复添加机器人也能回复正确。
更少但更有代表性的句子,也减少了我们后期维护知识库的难度。
筛选时仍然要注意注意要选择保留意图单一,非关键词,完整又不和其他知识点的意图重合的句子。
对挖掘出来的知识做必要的整理,根据聚类的结果对知识点进行命名,如添加相似问,选择分类,转移,删掉不相关意图的相似问之后,我们就能在下方将知识点入库了。
如果是属于现有知识点的相似说法,我们也可以点击转移到已有知识点进行添加,若还想找到更多相似问题,可以尝试点击推荐相似簇和推荐相似问按钮。