写点什么

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:002055

评论

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

Go 云原生实战:如何增加应用配置模块

宇宙之一粟

云原生 配置 Go 语言 Web应用开发 10月月更

史海峰:成为技术领导者 从技术到管理的必经之路丨声网开发者创业讲堂 • 第 5 期

RTE开发者社区

技术管理 人工智能’

从0开始,用Go语言搭建一个简单的后端业务系统

闫同学

后端 go语言 11月月更

Jenkins 构建的时候提示 DOCKER_HOST 错误

HoneyMoose

Vue组件入门(十五)异步组件

Augus

vue3.0 11月月更

433MHz自发电无线控制器

不脱发的程序猿

物联网 嵌入式 无线通信 ​433MHz自发电无线开关

StarRocks 技术内幕 | Join 查询优化

StarRocks

数据库

订单里的充值卡消费和积分抵扣怎么处理?

产品海豚湾

产品经理 产品设计 电商系统 分析设计 11月月更

【LeetCode】最长递增子序列的个数Java题解

Albert

算法 LeetCode 11月月更

设计模式之美-面向对象、设计原则、设计模式、编程规范、重构的关系

GalaxyCreater

设计模式

华为云从入门到实战 | 云容器服务

TiAmo

华为 华为云 云开发 11月月更

我上了个假“中台”!

雨果

数据中台

从1开始,扩展Go语言后端业务系统的RPC功能

闫同学

后端 go语言 11月月更

Linux中 dir 命令还能这样玩!

wljslmz

Linux 11月月更

视图的创建

芯动大师

Python 视图 11月月更

2022-11-03:给定一个数组arr,和一个正数k 如果arr[i] == 0,表示i这里既可以是左括号也可以是右括号, 而且可以涂上1~k每一种颜色 如果arr[i] != 0,表示i这里已经确

福大大架构师每日一题

算法 rust 福大大

从2开始,在Go语言后端业务系统中引入缓存

闫同学

Go 设计 后端 11月月更

📢利用Vite插件助力证书安装

小鑫同学

前端 插件 11月月更

跟着卷卷龙一起学Camera--MIPI 03

卷卷龙

ISP camera 11月月更

使用 Goland 开发 dubbogo 项目时如何自动快速格式化 import 代码块

apache/dubbo-go

详解CAN总线:CAN总线通信优先级机制

不脱发的程序猿

汽车电子 CAN总线 详解CAN总线 CAN总线通信优先级机制 CAN优先级

MySQL能力全开放,OceanBase 社区版 4.0 正式上线

OceanBase 数据库

互联网安全体制的挑战与机遇

阿泽🧸

互联网安全 11月月更

一文了解openEuler SIG组角色划分与管理运作

openEuler

开源

设计模式之美-代码评价标准

GalaxyCreater

设计模式

一次基于Fastjson的JNDI注入

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

圆满落幕!回顾 eBPF 技术的发展与挑战

OpenAnolis小助手

Linux 云原生 ebpf 云栖大会 龙蜥社区

InnoDB与MyISAM的使用,该如何选择?

想要飞的猪

专访微盟CTO黄骏伟:WOS将为去中心化商业提供一整套数字基建

B Impact

简述机器学习库

穿过生命散发芬芳

机器学习 11月月更

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