敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

2024-03-14 21:59

本文主要是介绍敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面:在上篇文章《敏捷AI | NLP技术在宜信业务中的实践【背景篇】请添加链接描述》中,我们大概了解了NLP技术的背景和发展情况,本文将介绍NLP技术在宜信应用的高级场景:智能聊天机器人。

一、高级场景之智能聊天机器人

前文我们介绍了NLP技术、数据、服务上相关演化发展的过程,接下来,我将结合两个具体的实例来分享我们在NLP领域的一些实施经验。今天要介绍的是:如何利用NLP技术以及智能聊天机器人来解决组织内部面临的大量的每日业务咨询问题。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

对于现代企业来说,智能聊天机器人有着非常广泛的业务需求。对外,我们有常见的客服机器人、智能投资顾问等;对内,我们有业务支持机器人、运维机器人以及个人助理等。

本实例是一个面向企业内部的信贷业务咨询机器人,为一个问答类QA-BOT。它的业务背景是:目前宜信的普惠业务在全国范围内有着500+线下门店,包括600+位营业部主管,3000+位业务专员以及20000+位一线销售。

每天这些一线同事在业务工作中都会产生大量的业务咨询问题,以往这些问题都是后台支持同事人工在IM中进行处理,工作非常枯燥,处理成本高、效率低;无法对问题进行有效的统计,不知道问题提问的频次,导致无法针对性的进行培训。长此以往,不利于业务的发展,也不利于团队的发展。

为了解决这个困境,我们研发了一个基于QA的问答机器人来支持这个工作,将人工的过程转为自动处理,从而实现一个全天候、7X24小时的全面支持机制。

对于问答机器人来说,其任务的核心和本质实际上就是基于检索的问答模型,我们给它半形式化地定义如下:

输入一个用户的问题Qx,在已有的QA数据库中,即(Q1,A1),(Q2,A2),…,(Qn,An)等QA问答对中,找到这样一组问答对(Qk,Ak),使得函数F(R(Qx),R(Qk))的值最大,其中F为语义相似度函数,R为文本表征函数。

上述定义就是说我们希望在所有QA问答对的问题中找到与用户提问最为相似的那个问题,它所对应的答案便是最合适反馈给用户的答案。

这其中的核心问题是求文本语义相似度,也就是求两个问题文本之间的相似度。解决这个问题有很多方法,例如我们可以直接构建一个Dual LSTM的神经网络,把用户的query从一侧进行输入,然后把知识库中问答对的question从另外一侧输入,通过RNN、CNN或者全链接的网络,在语料充足的情况下,就能够训练出一个模型,输出的概率值即为两个输入问题的相似度,如下图所示。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

然而,大多数情况下我们都面临样本不够充足的问题,尤其是在快速迭代的研发环境下,我们通常无法搜集到足够的语料。所以我们常把相似度问题拆分为两个子问题,即短文本语义表征和语义距离计算。两者间又以前者更重要一些,一旦我们即将处理的问题有了一个合理的语意表征,我们就可以通过简单的余弦距离、全链接网络等计算出两个表征之间的语义距离或者说语义相似度。

那我们怎样准确地表征短文本语义呢?

这也有很多方法,比如经典的词袋模型,还有一些无监督的表示方法(词向量加权、Doc2Vec、Skip-thought、Variational Auto-encoder)以及有监督的表示方法(DSSM、迁移学习)等。

但是我们要注意到之前所说的限制条件,也就是只能基于小规模语料和目前有限的QA问答对,而且业务要求快速实施、快速迭代。于是在方案的早期实施阶段,我们优先选择了“词袋模型+同义词扩展+tf-idf 权重”的这个方法,利用我们之前积累的相关术语的同义词、常用词的同义词,可以把一个问题进行基于同义词的复述,从而探索出来很多不同的问法,来提高用户提问在有限QA对数据库中命中的几率。通过上述方法构建出短文本的表征向量之后,再利用一些语义相似度的计算方法,就可以得到两个文本之间语义相似程度的分数。

这种方法最大的好处就是快,我们可以利用小规模的语料,1-2周之内在一个新领域上迅速上线一版效果表现非常不错的问答机器人。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

当然这个方案肯定不是终点,上述这个方案最重要的作用是迅速上线初版模型,利用这个模型我们就可以去收集用户提出的真实问题,滚动、积累更多问题数据,不断的补充进语料库和QA数据库,进而为我们训练更复杂的模型提供基础。而且随着QA数据库中的QA对越来越多,我们可以去回答更多类型的问题。

在有了一定的语料基础之后,我们构建了一版更为复杂的神经网络模型。这里我们采用了经典论文“Universal Language Model Fine-tuning for Text Classification”(by J. Howard et al)中的思想,在通用语料上先训练出一个language model(语言模型),再在领域语料上对该模型进行fine-tuning,最后将其迁移到最终的目标任务上,此外论文还提供了一些调参、优化的技巧。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

按照这个思想实施项目:在Wiki语料上训练语言模型之后,又在领域语料上进行了调优,然后迁移到相应的相似度计算网络上,最终得到了一个不错的测试效果。返回的答案列表中,正确答案排在首位的概率有88%,正确答案位于列表前三位范围以内的概率有94%,整体来看这个效果是不错的。

当然对于问答机器人来说,QQ相似度计算只是其中比较重要的一步,还有许多其他模型需要融合进来,协作提高问答的准确率。比如QA匹配模型,用来计算用户问题和知识库中所有问题对应答案的匹配程度。不过有了前面QQ相似度的计算基础,我们完全可以用同样的思路来构建一个QA匹配模型,输出QA匹配度值。最后将QQ相似度值和QA匹配度值进行加权重排,得到最终的答案列表,这才是返回给用户的答案。

此外还有一个扩展方向,即对于用户提问未能命中QA数据情况的处理。QA数据库是由人工提取或智能生成的QA问答对构成的,个数有限,因此对于用户可能会提问的各种各样的问题无法完全覆盖掉。一个有效的能力扩展方法就是开拓QA机器人的检索数据源(见下图),将机器人检索范围扩展到一些第三方API查询接口,QA问答对数据库,知识图谱以及文档等各个渠道的知识,从中找到答案。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

在我们的项目里,我们实施了“文档检索+关键信息提取”的保底方案,在问答数据库无法覆盖所有问题的情况下也尽可能为用户提供答案。

当然,我们还可以针对一些问题,通过槽值提取、实体关系识别等方法,实现在三方API上或者知识图谱上进行搜索,不过这个方法会稍微复杂一些,一般还需要会话的支持,此方面有专门的文章和报告,这里不再赘述。

不过提起多轮会话,我们还可以利用这个技术解决另外一个问题,即如何解决模糊提问。实际中,用户提出的某些问题非常模糊,无法找到准确答案,这常常会造成系统效果下降。例如用户问的问题非常简短,仅仅两三个字,这显然很难在QA 数据库里检索到一个准确答案。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

上图是一些资料上对机器人进行的划分,对话机器人在这里分为QA类和会话类两类机器人。QA类机器人就是在结构化和非结构化的数据上进行检索。而会话机器人则通常需要在多轮会话支持下,就一个问题多次与用户进行交流,捕获用户意图,给出对应的响应,比如闲聊机器人,任务机器人以及推荐机器人等。

我们认为QA机器人也会逐渐引入会话的概念,对于用户提出的模糊问题,完全可以利用对话状态分析、对话状态管理以及关键信息识别等方法来判断用户的意图是什么,缺失的信息有哪些,之后利用文本生成或追加提问等方法来要求用户补充更多信息。这样我们的机器人在有足够信息的条件下,就可以查找到更精准的结果。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

机器人处理主要流程

上图是机器人的处理流程,分为了预处理、分析分类、检索匹配、综合排序四个主要环节,各环节所涉及的技术也有枚举,报告之前我们着重介绍的QQ检索、QA匹配等任务。

另外,我们对聊天机器人这一相对高级的场景也提供了平台化的管理(见下图),其架构主要是在底层的自然语言处理平台上进行了进一步的场景化包装,在其基础之上增加了聊天机器人模块(包括Web/APP集成、对话管理、人工后台、外部API对接等),QA库管理模块(包括数据管理、实施发布等)和知识库管理模块(批量导入、内容管理、语料生成等)以及很重要的统计模块(包括统计挖掘和报表展示)。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

平台化高级场景管理

我们通过对场景中各功能进行封装和整合,以平台的形式提供一个一站式解决方案,用户在付出少量数据的情况下,就可以对模型无感知地迅速构建一个自己的业务问答机器人。

下面几张图为机器人的一些运行效果截图。其中下图为web版机器人交互界面,可以看到机器人回答的形式包括精准回答、相似问题、文档库搜索内容。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

机器人展示效果

下图是后台管理界面中的会话检索功能,可以在此方便地浏览机器人和系统用户所进行的会话,评估机器人效果,并可以把在会话过程中发现的、QA库里没有记录到的新问题识别出来,快速方便地添加到QA库之中。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

后台管理-会话检索页面

下图为模型管理模块,其中可以看到机器人所涉及的各类模型列表,每个模型后有相关操作按钮,可以对模型进行上线、更新、重启、停止等一系列管控操作。

敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】

后台管理-模型管理页面

以上便是NLP技术在宜信的应用场景之一:智能聊天机器人。下篇我们会为大家介绍另一个应用场景,构建客户画像。敬请大家期待~

作者:井玉欣

首发:宜信敏捷大数据

这篇关于敏捷AI | NLP技术在宜信业务中的实践【智能聊天机器人篇】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809841

相关文章

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio