QCon 演讲火热征集中,快来分享你的技术实践与洞见! 了解详情
写点什么

LinkedIn 的智能消息回复

  • 2017-11-09
  • 本文字数:1002 字

    阅读完需:约 3 分钟

LinkedIn 发布了一款新的自然语言处理(NLP)推荐引擎,该引擎用于向成员提供智能回复的推荐。工程团队在近期的一篇博客文章中详细地记录了该模型以及基础架构的开发过程

传统的生成消息回复的方法是一个 sequence-to-sequence 模型(在该方法中,回复是逐词计算出来的),但是 LinkedIn 的方法是从有限的库中选择出一个回复。他们的工程师解释说,这样做可以将问题视为多项分类而不是文本生成,从而带来以下优势:

  • 易于训练
  • 更快的进行训练,这是他们能够立即提出回复建议的关键所在
  • 降低不恰当回复的风险

为了创建一组候选回复,LinkedIn 首先将一组对话匿名化,用占位符替代合适的部分。例如,在私人信息中姓名这样的词汇会被替换成“RECIPIENT_FIRST_NAME”。他们还将消息进行标准化处理,该过程会把具有相同含义的消息进行处理成为等同意义的消息(例如“Yup”、“ok!!!”、“Yes, ok!”这样的词汇),并且将这些词汇的含义归为一组。

为了建立多项分类模型,LinkedIn 使用了他们自己的机器学习框架 Dagli。它应用了 Java API,使用有向无循环图来表示机器学习流程,并且该框架将来很可能会开源。

智能回复的一个要求是,仅用一种方式来表示相同意义的建议。例如,“yes”,“yep” 和“yeah”表示的意思全都是“yes”,因此提出这三个相同的回复建议是毫无意义的。工程师们通过只从相同语义组返回一条消息就解决了这个问题。例如,所有的类似“yes”的回复都属于肯定类型的回复组,因此其中只有一条回复会被推荐。

使用语义组来分类存储消息的另一个优点是易于评估。LinkedIn 只需要在预测和实际的回复组之间做一个对比,就可以了解它们的准确程度,其中关注的是含义,而不是具体的文本。

LinkedIn 还指出,由于用户在系统内发送消息的数量巨大,因此在迅速生成智能回复方面存在巨大的规模性挑战。LinkedIn 团队解决这个问题的方法是提前计算回复 (当它们被发送时),并将它们存储到 Expresso 中,Expresso 是 LinkedIn 内部的 NoSQL 数据库。这就避免了昂贵的即时计算,并且这使得在一瞬间就能够提供或多或少的智能回复。

LinkedIn 还建立了一套机制,以确保其成员的信息保持私密。首先,通过对消息进行匿名化,在训练数据中使用信息之前,任何用户的个人信息都应该被匿名化。其次,会有一个选择退出的选项,选择了该选项就意味着用户消息数据不会被系统所使用。

点击这里查看完整的架构的在线文档

查看英文原文: Smart Replies For Member Messages at LinkedIn

2017-11-09 18:001523

评论

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

黑客实验环境的搭建与使用

喀拉峻

黑客 网络安全 环境配置 网络攻防 环境搭建

可视化开发主流开源流程引擎与设计器研究对比

全象云低代码

低代码 流程 低代码开发 低代码平台 可视化软件

在线toml转JSON工具

入门小站

工具

Spring核心原理分析之MVC九大组件(1)

Tom弹架构

Java spring 源码

什么是立体车库?立体车库企业如何管理业务流程?

优秀

低代码 业务流程管理 立体车库

为什么孩子会有拖延症?

Tiger

28天写作

叮咚买菜自建MongoDB上云实践

MongoDB中文社区

mongodb

实践DDD的一种思路

安然

DDD CQRS

🍃【Spring实战系列】「Web请求读取系列」如何构建一个可重复读取的Request的流机制

洛神灬殇

spring 12月日更 HttpRequestWrapper 请求处理

Linux云计算这样学习效率更快,手把手带你实操结构化命令Case和for、while循环

学神来啦

Linux Shell linux运维 linux云计算 循环

面对复杂微服务系统观测时,如何化繁为简?

尔达Erda

云计算 程序员 云原生 程序员微服务

我的记忆心法拆解一

将军-技术演讲力教练

大数据开发之Hbase面试题

@零度

大数据 HBase

Kafka版本概览

Kafka中文社区

如何使用pFuzz以多种方法验证Web应用程序防火墙的安全性

H

网络安全 防火墙 信息安全

张家口赛区全力推进,数字人民币备战冬奥场景全覆盖

CECBC

区块链助力物流与供应链数字化

CECBC

深入解析Apache Pulsar系列: Broker消息确认的管理

博文视点Broadview

Dubbo框架学习笔记九

风翱

dubbo 12月日更

云图说|初识ModelArts开发者生态社区——AI Gallery

华为云开发者联盟

华为云 AI Gallery 云图说 ModelArts 开发者生态社区

Linux之less命令

入门小站

Linux

【MongoDB学习笔记】-使用 MongoDB 进行 CRUD 操作(下)

恒生LIGHT云社区

数据库 mongodb

遇到或问过的一些Spring面试题(持续更新)

Lazy

Java spring

教你用Camtasia简单几步制作精美片头

淋雨

Camtasia

技术分享| anyRTC服务单端口设计

anyRTC开发者

音视频 WebRTC RTMP 视频直播 服务单端口

如何以区块链技术为核心,渗透工业领域、支撑工业绿色发展

CECBC

全链路在线生产数据库压测利器:Apache ShardingSphere 影子库特性升级

SphereEx

开源 技术分享 ShardingSphere SphereEx 影子库

当游戏爱上MongoDB–参会赢Kindle!

MongoDB中文社区

mongodb

IAST 在去哪儿 Q-SDL 体系中的应用

火线安全

信息安全 DevSecOps IAST

滴滴Logi-KafkaManager

Kafka中文社区

Kafk

语音信号处理5:语音信号的感知

轻口味

28天写作 12月日更

LinkedIn的智能消息回复_AI&大模型_Andrew Morgan_InfoQ精选文章