当前位置: 首页 > 编程日记 > 正文

京东618:智能机器人JIMI的进击之路

ArchSummit全球架构师峰会深圳站将于2017年7月7日~8日在深圳·华侨城洲际酒店召开,大会设置了相关专题来深入解读电商大促背后的技术故事,大会还邀请了eBay、WalmartLabs等国外顶尖技术专家,分享AI促销、搜索引擎、异地多活、库存物流等核心架构实践。

\\

目前,人工智能正在以前所未有的姿态汹涌而来,快速杀入人们的视野。京东一直致力于用技术驱动业务成长,全面提高用户体验,基于对未来客服人力成本可能的提升,以及人工智能技术的发展趋势,早在2012年,京东就决定研制智能机器人以应对业务不断拓展带来的客服成本和压力。

\\

JIMI的发展:智能进化,全面拓展

\\

2012年JIMI顺势诞生,初期以售后服务为主,14年5月开放售前服务,逐渐拓展到移动端、微博、微信等多平台端口,为用户提供推荐商品、告知优惠、砍价、下单、直接支付的售前全流程闭环体验,让用户可以边咨询边购物,成为用户贴心的购物助手。同时,我们也将智能机器人拓展到各个业务层面,店铺JIMI、京东金融JIMI、京东到家JIMI相继诞生,此外,我们还将JIMI的服务能力平台化,推出了JIMI开放平台,接入长虹、华西等外部企业。

\\

cc39dfb59288402e52b804157ddd1ed4.png

\\

在这全面应用和不断推广的过程中,JIMI也为京东商城节约了数千万的人力成本。日接待量高达百万次,覆盖京东10亿+的商品,应答准确率90%以上,用户满意度高达80%以上,减少客服压力的同时为用户提供更好的服务,也帮助外部企业也减少了至少50%的人力成本。

\\

JIMI产品技术体系揭秘

\\

JIMI 整体产品架构如下图所示:

\\

70d99c6519b30799725546936416b7b4.png

\\

目前JIMI推出的覆盖全平台的用户端产品,商家和企业一旦启用,也就将JIMI的能力赋能给商家和企业,让商家和企业可以定制自己的智能机器人。JIMI在多领域多终端以拟人化的交互体验为用户进行服务,多领域语义识别、情感分析和领域知识图谱等能力是JIMI的核心。基础平台支撑起JIMI服务能力,让JIMI可以快速高效进行数据标注、清洗、挖掘,以及模型训练等。

\\

为了更灵活高效的支撑 JIMI 产品发展路线,在技术上 JIMI 采用了平台服务化架构技术体系,如下图:

\\

7b9bd49dc1612eff04f23cd209070b1c.png

\\

从上到下,顶部展示的是目前 JIMI 支撑的所有业务场景,包括:京东自营业务的导购、售后和虚拟业务,京东 POP 店铺机器人,京东金融机器人等。其下,是统一接入层。界面按照终端接入组件化思路,所有界面交互统一把交互和展示逻辑封装,按照 Web(PC)、SDK、M 页面分三类。前后端数据交互通道,浏览器走 HTTPs 和 WebSocket 方式,移动 SDK 走 TCP 方式,若是服务端接口,走京东内部标准化 JSF RPC 方式。这样就整合了所有来自不同终端不同业务场景机器人请求,所有请求统一转发到“调度引擎”服务进行请求调度分发。

\\

“调度引擎”相当于一个请求路由服务,根据终端机器人请求类型的不同,会调度分发给后端不同服务流程处理。后端的服务整体分为“算法”、“工程”、“数据”三类。对于聊天机器人来说,“算法”是大脑、“工程”是躯体、而“数据”是血液。下面,分别简单介绍下三类服务的作用与协作方式。

\\

“工程”是系统的躯体,它负责了在线问答请求各服务的内部流转,如下图所示的服务交互流程:

\\

db94695df75f7aa8832f769460876613.png

\\

“算法”是系统的大脑,它的核心是自然语言处理(NLP)。NLP 负责对用户的问题进行分析并产生答案,包括:用户的意图识别,关键词的识别、歧义分析等。对于问答机器人而言,语言理解的关键在于用户意图识别。当用户存在明确意图时,结合相应商品等信息就能给出准确的答案。在实际应用中,意图识别往往看作机器学习的多分类问题。

\\

为了让JIMI更精准地理解用户的提问,从而给出针对性更强的回答,2015年,京东成立DNN实验室(深度神经网络实验室),将NLP和DNN进行结合,这种新算法具有一定的上下文识别能力,相对于传统的分类算法,会更准确。

\\

我们只要将京东客服能够回答的问题归纳成一个个的业务点:如退换货相关、运费相关、商品属性相关等。意图识别需要做的就是对用户问题进行分类,决定用户意图到底是在哪一个业务点上。即分类模型输入为用户问题,输出为当前咨询所属业务点。在引入深度神经网络模型后,JIMI意图识别整体准确率由原先的76% 提升至84.1%。在命名实体识别(关键词识别)环境上,结合深度神经网络,JIMI抽取用户问题关键信息的准确率比传统方法提高了6.6%。这也是JIMI与其它同类产品的本质区别。

\\

意图识别模块除了分类外,后续的维护工作也相当重要。一方面需要优化当前的分类效果,解决线上的 bad case;另一方面随着时间迁移,会出现新的业务点,用户提问方式也会发生改变。我们的分类模型也需要随之做出调整。为了减少人力,做到模型自学习,还需要引入线上数据收集模块,整个意图识别框架如 
\下:

\\

bf9b4f747d55696cfa0e105f3dc6430e.png

\\

这样线下和线上的工作联动运作,就能保证JIMI的意图识别不断优化,跟得上业务的不断升级。

\\

“数据”是系统的血液,其架构体系如下:

\\

2362da585f9569c4851540751832dd83.png

\\

数据经过采集(采集方式包括:SDK、HTTP 和事件采集)、预处理、数据格式校验,通过传输通道(JMQ、Kafka 消息队列异步传输、HTTP 同步传输)进入数据存储层。通过建立的元数据进行实时或者离线加工处理,并建立索引服务,供查询搜索使用。对于清洗后的数据,进行数据聚合,供机器学习语料训练;并提供数据自助查询,报表展现。能支撑 10 亿级数据实时上报,做到秒级延迟、秒级查询,提升了JIMI的应答效果。

\\

用户画像也是JIMI重要的技术手段之一,目前我们主要致力于挖掘用户与用户、用户与商品之间的深层次联系,通过深度学习、大数据处理等核心技术,建立起复杂的用户、商品特征关联网络,用于精准的刻画用户特性。我们把每个用户的特征,都加入到模型的训练和预测中,比如根据画像数据,当前用户是有小孩的,且历史有过购买奶粉的记录,那我们预测时就会结合用户画像特征,推测用户可能会问奶粉购买相关的问题,并直接将问题展示出来供客户点选,用户点击感兴趣的问题进行咨询即可。

\\

JIMI的未来:全能的智能AI与开放的平台

\\

前不久,AlphaGo对战柯洁获全胜的新闻引起了大众的广泛讨论,对于JIMI是否会像AlphaGo一样在某些方面进行训练,以达到人类水平或超过人类这个问题,我们已经可以说,JIMI在一些品类的客服满意度已超过人工客服。目前在日常情况下,JIMI的接待量已与人工客服接待量持平,大促期间甚至会超越人工客服。

\\

未来JIMI也会继续不断进化,除客服行业,也会积极拓展其它领域的深度学习,提升服务质量,推动人工智能技术成长。同时,我们也会通过我们的人工智能开放平台,给不同行业的商家或机构提供智能咨询服务解决方案,让智能JIMI的身影能够进入各个垂直领域,实现京东技术能力的开放与经验共享。

\\

作者介绍:

\\

刘丹,京东智能通讯部总监,京东深度神经网络实验室(DNN-Lab)核心成员之一,资深电商专家。在实时通讯、测试架构、稳定性框架、智能电商服务等领域均有涉猎,精通业务通用 性架构、用户行为、智能客服、稳定性提升等多项理论及实践,京东咚咚、智能聊天机器人和无人客服系统研发负责人。

相关文章:

读懂深度迁移学习,看这文就够了 | 赠书

百度前首席科学家、斯坦福大学副教授吴恩达(Andrew Ng)曾经说过:迁移学习将是继监督学习之后的下一个促使机器学习成功商业化的驱动力。本文选自《深度学习500问:AI工程师面试宝典》,将重点介绍目前最热门的深度迁移学…

Visual Studio 2005 IDE 技巧和窍门

发布日期: 2007-02-26 | 更新日期: 2007-02-26James Lau Microsoft 项目经理 适用于: Microsoft Visual Studio 2005 摘要:Visual Studio 2005 是目前业内一流的开发工具,我想在此与大家分享一些使用技巧和窍门&#x…

ZOJ 1025 Wooden Sticks(快排+贪心)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId25 题目大意:机器运送n个木条,每个木条有一个长度和重量。运送第一根木条需要1分钟的准备时间,接下来如果后一根木条的长度和重量都大于等于前一根木条&…

Swift:UIKit中Demo(一)

关于Swift的基本概念及语法知识。我在前面的章节中已经介绍了非常多。这一节和下一节主要有针对性的解说Swift在实际UIKit开发中的使用场景及注意点。先来看看Demo的终于效果图。Demo分析: 1. 界面上面有三个button,他们的宽度不一致。 2. 点击每一个but…

jdbc封装与多并发的共鸣

欢迎来到:http://observer.blog.51cto.com代码的封装是一门艺术,封装得好,不但给自己便利,还可以给自己的维护提供帮助;同时,封装得好,还可以给看自己代码的人以赏心悦目的感觉,团队…

计算机视觉怎样实现自我超越?更大规模更精准的数据

最新发布的《2021中国人工智能应用趋势报告》强调,数据、算力和算法是支撑人工智能发展的"三驾马车",为模型训练提供基本资料的「数据」,是人工智能的根基。 随着互联网、社交媒体、移动设备和传感器的大量普及,其产生…

Visual Studio 2005 Web Deployment Projects版本不同引发的问题

为了方便Visual Studio 2005发布为单一dll,微软发布了一个Visual Studio 2005 插件,Visual Studio 2005 Web Deployment Projects,在微软的不同文档里,这个插件提供了两个下载地址,分别是: 下载地址一&…

【书籍下载链接】_2_第二轮_计算机专业书籍

各位朋友,下面是我收集的书籍,介绍给大家,有需要可以分享给大家,如果看的还可以,请购买纸质版的图书。 驱动器 J 中的卷是 Elements 卷的序列号是 8AAF-3206 j:\ 的目录 2014/01/20 20:00 1,533,385 WinCE.pdf2010/09/…

VS2005发布、生成网站时如何设置固定的dll文件名?

在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定生成文件名如何固定呢?有以下两种方案: 一、每个页面的程序集分别生成对应的dll; 方法:在“发布网站”的选项中,勾选“使用固定命名和单页程…

android 广播机制

1:首先说andoid 广播分为系统的和 自定义的 2:注册方式呢,也是两种,1:静态注册,在manifest.xml 文件中注册的 2:动态注册,用filter 区分 不说了 占代码 首先是动态注册:…

2021第一融!第四范式完成D轮7亿美元融资

来源丨第四范式头图丨来源于第四范式近日,第四范式宣布完成D轮融资,融资金额7亿美元。本轮融资由春华资本、博裕资本、厚朴投资领投,并引入国家制造业转型基金、国开、国新、中国建投、中信建投、海通证券等战略股东,红杉中国、中…

springboot-26-springboot 集成rabbitmq

rabbitmq是基于AMQP规范的一个消息代理, 它可以兼容jms, 支持其他语言, 并且可以跨平台 1, 安装 1) 普通安装 度娘: 2) docker 安装 sudo docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:3-management 安装成功后: 使用 guest/guest 用户登录 2 使用: 1) 添加 rabbi…

asp.net中的联动菜单

目标达到的效果:两个下拉框,第二个跟随第一个变化而变化,使用客户端脚本JavaScript在ASP.NET环境下实现。 第一步:建立JavaScript脚本: 在Page_Load中建立并注册这个js脚本: string scriptKey "Menu…

2020长沙“科技之星”榜单重磅揭晓,近百家企业凭实力“出道”!

今天,「INFLUENCE长沙 2020年度“科技之星”企业评选」(下文统称「长沙科技之星」)圆满收官,评选结果正式揭晓!作为专业的 IT 社区,CSDN 多年来与千万技术人员、技术企业共同见证了产业的发展和时代的变更…

CENTOS6.4 IBUS输入法不显示候选词解决办法

IBUS输入法 不显示候选词原因分析:输入im-chooser时候,显示找不到gtk模块;原因为升级python后的版本,不能导入gtk。找到能够导入gtk版本的python,然后默认python设置为此版本。故障解决:删除或更改默认python版本# whi…

sql server 表索引碎片处理

DBCC SHOWCONTIG (Transact-SQL) SQL Server 2005 其他版本更新日期: 2007 年 9 月 15 日 显示指定的表或视图的数据和索引的碎片信息。 重要提示:后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修…

ASP.NET2.0 GridView小技巧汇粹

1)GridView绑定数据源控件,需要有编辑和删除选项按钮时,数据源控件必须提供SQL操作语句或存储过程调用,一般,我的推荐做法是,使用无意义的SQL语句或存储过程来使GridView的编辑和删除按钮可以生成,具体的编辑更新和删除操作在代码运行时而不是在控件设计时指定,虽然多写了一点代…

树莓派出微控制器了!Raspberry Pi Pico 只需 4 美元

整理 | 郑丽媛来源 | CSDN(ID:CSDNnews)昨天,树莓派搞了个大动作:推出了首款微控制器开发板 Raspberry Pi Pico!该开发板基于树莓派开发的全新芯片——RP2040,并且作为双核 Arm Cortex-M0 的它…

“chaos”的算法--之链表面试题

【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghungmail.com】前两天倩仔仔给我了一套试题让我看,整体来说感觉题都还算不错,从中随便找了两道。先看题吧!1、怎样判断一个单链表中是都存在环路&#xff…

ABP官方文档翻译 6.1.2 MVC视图

ASP.NET MVC 视图 介绍AbpWebViewPage基类介绍 ABP通过Abp.Web.Mvc nuget包集成到MVC视图。你可以如往常一样创建正常的MVC视图。 AbpWebViewPage基类 ABP提供了AbpWebViewPage,它定义了一些有用的属性和方法。如果你使用启动模板创建的工程,那么你所有的…

ASP.NET 打开新窗口几种方法

ASP.NET打开新窗口方法一:Response.Write("<script language/"javascript/">window.open(aaa.aspx,新窗口,/"toolbaryes,locationno,directoriesyes,statusyes,menubaryes,resizableyes,scrollbarsyes/");</script>");这种方式代码每…

Hibernate的使用梳理

Hibernate创建步骤 &#xff08;五大核心接口&#xff1a;Configuration/SessionFactory/Session/Transaction/Query&#xff09; 1.新建java工程&#xff0c;导入需要的jar包。 2.创建hibernate.cfg.xml配置文件和Test.java工具类。配置好相应的实体对象User.java User.hbm.x…

驭势科技引入国家队战略注资,完成超10亿元人民币融资

2021年1月25日&#xff0c;驭势科技&#xff08;UISEE&#xff09;宣布完成累计金额超10亿元人民币的新一轮融资&#xff0c;并获得国开制造业转型升级基金的战略注资。这是国开制造业转型升级基金在自动驾驶领域的首笔投资。2019年11月&#xff0c;国家制造业转型升级基金股份…

[Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据

一、介绍 本例子用Selenium phantomjs爬取界面&#xff08;https://a.jiemian.com/index.php?msearch&aindex&typenews&msg电视&#xff09;的资讯信息&#xff0c;输入给定关键字抓取资讯信息。 给定关键字&#xff1a;数字&#xff1b;融合&#xff1b;电视 抓取…

android高级编程-android高级应用

android高级应用>>>第一阶段程序员基本素质养成程序员所需要具备的12条职业素质让学员初步了解和审视自己所应该具备的职业素质。并且我们会在授课中随时训练和贯彻这样的素质&#xff0c;最终把大家捏成专业的职业的程序员。迭发各个环节及工具初步介绍总概性的讲解一…

asp.net三种重定向方法的总结

(1)Server.Transfer方法: Server.Transfer("m2.aspx");//页面转向(服务器上执行). 服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx, 并将转向前数据加上m2.aspx页结果返回给浏览器. (2)Server.Execute方法: Server.Execute("m2.aspx"…

区区几行Python代码,一分钟搞定一天工作量

作者 | 陈熹、刘早起来源 | 早起Python大家好&#xff0c;我是早起。前几天有一个读者说最近要整理几千份文件&#xff0c;头都要整秃了&#xff0c;不知道能不能用Python解决&#xff0c;我们来看一下&#xff0c;你也可以思考一下。由于涉及文件私密所以具体内容已做脱敏处理…

bc计算命令的知识及企业计算案例

bc命令的用法&#xff1a;bc是unix下的计算器&#xff0c;它也可以用在命令行下面&#xff1a;例&#xff1a;给自变量i加1i2iecho $i1|bc -----效率低#因为bc支持科学计算&#xff0c;所以这种方法功能非常强大[rootXCN ~]# echo 11|bc 2 [rootXCN ~]# echo 1*1|bc 1 […

ExecutorService与Executors例子的简单剖析(转)

对于多线程有了一点了解之后&#xff0c;那么来看看java.lang.concurrent包下面的一些东西。在此之前&#xff0c;我们运行一个线程都是显式调用了 Thread的start()方法。我们用concurrent下面的类来实现一下线程的运行&#xff0c;而且这将成为以后常用的方法或者实现思路。 …

GridView隐藏列取值解决方案

【摘要】 在Asp.net 2.0中增加了一个新的数据绑定控件&#xff1a;GridView&#xff0c;其目的用来取代Asp.net1.x中的DataGrid控件&#xff0c;但有一点很不爽的是&#xff0c;如果把某列设置为visiblefalse&#xff0c;则不会进行数据绑定&#xff0c;也就是说无法直接从Grid…