【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

NLP 技术在宜信业务中的实践

  • 2020-02-11
  • 本文字数:12520 字

    阅读完需:约 41 分钟

NLP技术在宜信业务中的实践
导读:前面两篇我们介绍了NLP技术在宜信应用的背景《


敏捷AI | NLP技术在宜信业务中的实践【背景篇】


》,以及应用场景之一《


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


》。本篇为另一个场景,也就是在业务中如何构建客户画像,敬请收看~


    <section style="margin: 0px -7px 0px 0px; padding: 0px; width: 9px; height: 9px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; background-color: rgb(245, 228, 36); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;"></section>
<section style="margin: 0px; padding: 0px; width: 15px; height: 15px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; border: 1px solid rgb(211, 211, 211); transform: rotate(0deg); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;"></section>
<section style="margin: 0px 0px -18px -12px; padding: 0px; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;"></section>
<section class="" style="margin: 0px; padding: 6px 1.8em; display: inline-block; letter-spacing: 1.5px; color: rgb(90, 91, 92); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;">**作者简介**</section>
<section style="margin: -18px -12px 0px 0px; padding: 0px; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;"></section>
<section style="margin: 0px; padding: 0px; width: 15px; height: 15px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; border: 1px solid rgb(211, 211, 211); transform: rotate(0deg); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;"></section>
<section style="margin: 0px 0px 0px -7px; padding: 0px; width: 9px; height: 9px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; background-color: rgb(245, 228, 36); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;"></section>
<section style="margin: 0px 0px -10px -9px; padding: 0px; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important;"></section></section>
复制代码


1547716825149018970.png


井玉欣


毕业于北京大学信息科学技术学院,获博士学位,研究方向包括计算机软件与理论、逻辑推理等,目前就职于宜信技术研发中心,从事人工智能、机器学习、自然语言处理以及知识工程等方面的研究。


    <section style="margin: 0px -7px 0px 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 9px; height: 9px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; background-color: rgb(245, 228, 36); background-position: initial initial; background-repeat: initial initial;"></section>
<section style="margin: 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 15px; height: 15px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; border: 1px solid rgb(211, 211, 211); transform: rotate(0deg);"></section>
<section style="margin: 0px 0px -18px -12px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); background-position: initial initial; background-repeat: initial initial;"></section>
<section class="" style="margin: 0px; padding: 6px 1.8em; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; display: inline-block; letter-spacing: 1.5px; color: rgb(90, 91, 92);">**高级场景之构建客户画像**</section>
<section style="margin: -18px -12px 0px 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); background-position: initial initial; background-repeat: initial initial;"></section>
<section style="margin: 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 15px; height: 15px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; border: 1px solid rgb(211, 211, 211); transform: rotate(0deg);"></section>
<section style="margin: 0px 0px 0px -7px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 9px; height: 9px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; background-color: rgb(245, 228, 36); background-position: initial initial; background-repeat: initial initial;"></section>
<section style="margin: 0px 0px -10px -9px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); background-position: initial initial; background-repeat: initial initial;"></section></section>
复制代码


在许多企业中,每天业务人员和客户的沟通都会产生大量记录,这些记录可能包括了客服的沟通数据(通话记录、通话小结),也可能包括了各式各样的报告数据(陪访报告、征信报告等)(见图 1)。


1547716494419079549.jpg


图 1 业务人员与客户产生沟通记录


前者可能口语会多一些,后者则主要是书面用语。但两者之间有一个共同的特点,就是其中都蕴含着丰富的客户信息。想要把这些信息提取出来,我们就需要利用到(NLP)技术。


图 2 为一段客户陪访报告的节选,观察其文本特征,发现有许多业务所关注的信息,比如职业方面,客户是“大学教授”;在可投资产方面,理财金额有“100 万”,投资类型是“银行理财”,对公司的态度是“不了解”等。


1547716507198013733.jpg


图 2 客户陪访报告示例


所以我们完全可以通过 NLP 分析文本,对其中的客户特征进行标签化提取,最终利用得到的标签构建出客户画像。这样做的好处很多,比如方便我们的业务人员随时发现关键问题,便于跟进;自动化处理,提高工作效率。根据挖掘出的信息构建出客户标签画像之后,就可以方便地盘点特定时间范围内的需求特点,为新产品设置提供系数参考,或者补充、验证结构化字段内容。


总体的实施路线如图 3 所示,先通过业务分析来定义业务关注的标签库,然后针对定义出来的标签训练相应的提取模型,最后利用模型对数据进行分析,得到一系列客户标签,再对其进行汇总,最终形成客户画像。


1547716519652041041.jpg


图 3 总体实施路线


总体的路线是这样的,但具体的实施过程中我们也有一些细节需要关注。通过对之前的数据进行分析,我们发现了一些特征,比如文本之中信息高度集中,信息表述通常以短句为单位,但是单一短句语义存在模糊性,还需要结合一定的上下文对其进行分析。所以我们需要对复杂句进行适当的切割,确定合适的数据粒度,同时配合一个适当大小的短句滑动窗口来捕获相关的上下文语义。


此外对于内部的业务文本来说,其内容涉及大量产品的专有实体名称和术语,以及较多的数字。针对这种情况,我们建立了专门的词库和实体库,对相应的实体名称和术语进行准确的切割和识别。对于数字的处理,我们先后比较字向量、标识符替换、规则识别+后处理等等技术方案,并且选择了其中效果最好的方法。


当然我们也面临着普遍存在的标注语料不足的问题,因此在这个项目中,我们侧重于研究怎么在小样本条件下进行 Few-shot learning。


实际中,在大多数专业领域 AI 项目实施过程中,都存在着标注数据不足的情况,所以针对小样本进行学习的 Few-shot learning 也越来越凸显其重要性。Few-shot learning 包括很多种技术,有常见的迁移学习+fine-tuning 技术,典型的如 Bert;也有基于半监督训练的一些技术,如基于相似性度量的一些神经网络模型,基于最近邻算法的样本标注扩散这些技术等;还有 meta learning 的相关技术,例如 OpenAI 在 ICLR 2018 上的 best paper;甚至还有一些图网络的相关技术。


在以上种种技术当中,比较适合工程化的、比较容易实施的还是基于迁移学习的方法。在我们的项目中,发现迁移学习,也就是基于预训练模型,迁移到目标训练任务上,再加上半监督学习的标注辅助,可以比较好的满足我们的需求。


下面介绍一下我们的算法流程:先对复杂句进行清洗与切割;之后可以选择性的加入一些过滤规则,快速地去除那些比较明显的噪音数据;然后将数据流入到标签提取模型之中,得到具体的标签;最后在画像构建阶段对得到的所有标签进行去重、消歧,形成最终的客户画像。


具体到算法模型,我们也先后比较许多方法,本质上我们认为标签识别模型是一个短文本分类算法,我们尝试了基于统计的方法(SVM, Random Forest, XgBoost),也尝试了基于神经网络的模型(FastText,Text CNN/RNN/RCNN, HAN),最终我们选择了 HAN 模型,也就是层次注意网络(Hierarchical Attention Network)模型,通过在词一级和句一级分别进行 RNN 和 Attention 计算,最终得到一个合理的文本向量表征,用于最后的分类,整个过程如图 4 所示。


1547716532289030453.jpg


图 4 HAN 模型架构


图 5 是本实例的总体处理流程,经过数据预处理之后,文本被并行地分配到各个业务关注标签提取模型之中,输出各个业务标签,最终汇总到客户画像构建模块,在此进行去重、消解歧义和矛盾,最后得到客户的画像。


1547716544619062534.jpg


图 5 实例处理总体流程


另外我们结合公司的敏捷实时数据平台设计了一个相应的实时 AI 解决方案,如图 6 所示,这里用到了我们团队开源的一些技术,包括 DBus(数据总线平台),Wormhole(流式处理平台),Moonbox(计算服务平台)以及 Davinci(可视应用平台),这四个平台构成了敏捷大数据平台栈。


在这个方案里,我们通过 DBus 来采集各类数据存储中的自然语言数据,经过一些可选的技术(如 ASR 等)得到相应的文本;再通过 Wormhole 来进行实时的流式处理,标签模型在 Wormhole 的实时数据流上运行,对数据流中的文本自动提取相应的标签,再由 Wormhole 输出到指定的数据存储中;之后由 Moonbox 对标签进行后续的汇总处理,先从存储介质之上把之前计算得到的标签提取出来,使用画像模型对画像进行构建,输出到如 Redis 之类的存储介质之中,最后推送给业务系统供其使用。这就是我们实现的一个实时用户画像处理流程。


1547716556313012641.jpg


图 6


此外,在图 6 下方的数据流分支里,我们通过在 Wormhole 上流转的生产数据流进行一个选择性抽样,之后同样利用标签模型和画像模型,计算出客户画像,此后将原始数据、标签数据和客户画像通过 Davinci 展示给我们的模型维护人员,用于评估检查模型的运行情况,这样就实现了一个实时的模型效果监控系统。综合这两者,我们就得到了一个实时的、基于文本分析的画像构建系统。


    <section style="margin: 0px -7px 0px 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 9px; height: 9px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; background-color: rgb(245, 228, 36); background-position: initial initial; background-repeat: initial initial;"></section>
<section style="margin: 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 15px; height: 15px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; border: 1px solid rgb(211, 211, 211); transform: rotate(0deg);"></section>
<section style="margin: 0px 0px -18px -12px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); background-position: initial initial; background-repeat: initial initial;"></section>
<section class="" style="margin: 0px; padding: 6px 1.8em; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; display: inline-block; letter-spacing: 1.5px; color: rgb(90, 91, 92);">**总结**</section>
<section style="margin: -18px -12px 0px 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); background-position: initial initial; background-repeat: initial initial;"></section>
<section style="margin: 0px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 15px; height: 15px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; border: 1px solid rgb(211, 211, 211); transform: rotate(0deg);"></section>
<section style="margin: 0px 0px 0px -7px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 9px; height: 9px; border-top-left-radius: 100%; border-top-right-radius: 100%; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; background-color: rgb(245, 228, 36); background-position: initial initial; background-repeat: initial initial;"></section>
<section style="margin: 0px 0px -10px -9px; padding: 0px; max-width: 100% !important; box-sizing: border-box !important; word-wrap: break-word !important; width: 1px; height: 1.2em; background-color: rgb(211, 211, 211); transform: rotate(30deg); background-position: initial initial; background-repeat: initial initial;"></section></section>
复制代码


随着各企业实体对自然语言数据愈发关注,NLP+AI 技术在各领域都成了非常重要、核心的基础技术服务。领域知识与 NLP 技术的结合带来了新的技术产品,创造出了新的商业价值,比如我们目前常用的一些产品:Siri、小爱同学等等,这种 Conversational UI 带来的不仅是一种全新的交互模式,更是开辟了一个新的产品领域。


在数据方面,虽然自然语言的数据存量很大,但目前来看无论是通用领域还是专业领域,经过加工整理的高质量自然语言语料数据资源还是比较缺乏,因此其具有非常高的价值。领域语料的积累可以极大提升 AI 产品的效果,在一定程度上帮助企业形成新的数据壁垒、技术壁垒。


在 NLP 的算法方面,就未来一段时间来看,如前文所述,面对小语料任务的 Few-shot Learning 会越来越受关注,尤其是以 Bert 为代表的迁移学习技术,将给现在的一些 NLP 任务带来一场革命。此外还有针对 NLP 语料的数据增强技术,我们知道在图像领域数据增强技术已经比较成熟,是一种常见的数据处理方式,但是在 NLP 领域数据增强技术的发展还不够成熟,如果能在这方面有所突破的话,相信会对各类 NLP 任务都有很大帮助。


NLP技术的发展还需要业界各企业、各位算法与工程专家的共同努力,相信未来我们能够更准确、更快速、更方便地理解各领域的自然语言数据。


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/215


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-02-11 20:20493

评论

发布
暂无评论
发现更多内容

👊 【Spring技术特性】带你看看那些可能你还不知道的特性技巧哦!

洛神灬殇

Java spring Spring特性 10月月更

【架构实战营作业】模块五——微博评论计算架构

聆息

人工智能解决方案 --- 智能运维(AIOps)

micklongen

人工智能 AIOPS 知识图谱 智能运维 数据工程

API网关Kong实战

Fox

kong api 网关 API Gateway

linux【redhat&ubuntu】下ffmpeg-3.1安装编译及视频转码

程序员架构进阶

架构 ffmpeg 视频流 10月月更

Go 扇入 / 扇出

baiyutang

golang 10月月更

微博评论高性能高可用计算架构设计

看,有只猪

Spring 框架学习

风翱

spring 10月月更

【设计模式】第四篇 - 简单工厂

Brave

设计模式 工厂模式 10月月更

CPU、指令集、微架构概念学习

轻口味

10月月更

在线字符串哈希/散列工

入门小站

工具

Kafka 生产环境部署指南

Se7en

linux之awk使用技巧

入门小站

Linux

【LeetCode】环形链表Java题解

Albert

算法 LeetCode 10月月更

018云原生之基础架构

穿过生命散发芬芳

云原生 10月月更

【产品】论增长黑客思维如何让B端产品爆发式增长

极光一号。

云原生 用户增长 b端产品经理 增长黑客

Gas 机制是如何运作的

Rayjun

以太坊

01-设计模式概述

千羽的编程时光

设计模式

初始化 Ubuntu 工作环境

看山

ubuntu 10月月更

Linux system hardening: adding hidepid to /proc mount point

卓丁

Linux linux security proc hidepid

官方线索|科大讯飞全球1024开发者节

xcbeyond

1024我在现场

Prometheus 基础查询(四)修饰符

耳东@Erdong

Prometheus 10月月更

【Flutter 专题】133 图解自定义 ACEWaterButton 水波纹按钮

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

Win11安装PyTorch

IT蜗壳-Tango

10月月更

5分钟搞懂Monorepo

俞凡

git 架构

阿里P8面试官:如何设计一个扛住千万级并发的架构?

Java 程序员 架构 面试 高并发

看山聊 Java:IPv4 与 int 之间互相转换

看山

Java 10月月更

02-面向对象设计原则

千羽的编程时光

设计模式

谈 C++17 里的 Memento 模式

hedzr

设计模式 备忘录模式 Design Patterns c++17 Undo Manager

博鳌亚洲论坛国际科技与创新论坛第二届大会区块链分论坛紧密筹备中

时空云

区块链 博鳌 亚洲论坛

WEB图像优化

devpoint

性能优化 image 图像格式 10月月更

NLP技术在宜信业务中的实践_文化 & 方法_井玉欣_InfoQ精选文章