写点什么

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

评论

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

原型链中的函数和对象

掘金安东尼

JavaScript 前端 8月月更

发布Android库至MavenCentral详解

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

头脑风暴:打家劫舍

HelloWorld杰少

8月月更

Promise的点点滴滴

坚果

开源 8月月更

七日算法先导(五)——归并排序,希尔排序

工程师日月

8月月更

Axure9基本交互操作(二)

乔乔

8月月更

轻松完成接口测试及接口文档

Xd

Java 后端 接口测试

谈谈程序员如何具备领导力

宇宙之一粟

领导力 8月月更

站在数字经济浪尖:360视觉云探路中小微企业数智转型

脑极体

JVM学习之 内存结构

JAVA活菩萨

Java java程序员 大厂技能 大厂实践 秋招

我们来聊聊锁升级吧

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

C++中const关键字的作用总结

桑榆

c++ 8月月更

来学习开源模块化前端框架—Layui【Layui极致轻量前端框架】

恒山其若陋兮

开源 前端框架 签约计划第三季 8月月更

系统管理-Linux系统进程管理

Albert Edison

Linux centos 运维 服务器 8月月更

Nacos配置中心之动态感知

急需上岸的小谢

8月月更

12条MySQL优化技巧,提速不止十倍!

TimeFriends

8月月更

超强力推!阿里全新微服务突击手册,把所有操作都写出来了|超清PDF

冉然学Java

架构 微服务 java; 消息中间件 微服务框架

Java “constant string too long” 编译错误

HoneyMoose

使用软引用实现缓存机制

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

危险!请马上替换代码中的BeanUtils!!!

JAVA活菩萨

Java 后端 java程序员 大厂技能 大厂实践

设计电商秒杀系统

爱晒太阳的大白

朴素贝叶斯分类-西瓜分类 python

Five

贝叶斯公式 Python. 8月月更

编译调试插件功能总结

乌龟哥哥

8月月更

【字体反爬】的起点,月票数解析,一个小小的Python案例

梦想橡皮擦

Python 爬虫 8月月更

2022-Java后端工程师面试指南-(Redis)

自然

面试题 reis 8月月更

2021-Java后端工程师面试指南-(SpringBoot+SpringCloud)

自然

Spring Boot CLI spring cloud stream 8月月更

leetcode 769. Max Chunks To Make Sorted 最多能完成排序的块(中等)

okokabcd

数组 LeetCode 数据结构与算法

Python 教程之输入输出(6)—— 使用 print() 函数输出

海拥(haiyong.site)

Python 8月月更

C++对象模型和this指针实例分析

CtrlX

c++ 面向对象 后端 代码 8月月更

2022-Java后端工程师面试指南-(MySQL)

自然

8月月更

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