9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

UC 国际信息流推荐中的多语言内容理解

  • 2019-10-15
  • 本文字数:4948 字

    阅读完需:约 16 分钟

UC 国际信息流推荐中的多语言内容理解

多语言内容理解的需求和挑战

1. 结构化是推荐的基础


结构化是推荐的基础,对于大多数做推荐的同学应该会比较有感受。可以把推荐系统分为三部分:内容理解和用户理解两个大的离线模块;在线的推荐业务分为召回、排序、多样性等,主要利用离线的 NLP 结构化信号以及离线的用户理解信号来完成推荐的工作,本文主要介绍内容理解的部分。


对于内容理解,我们面临的是多个国家、多种语言的新闻推荐场景:


  • 从 item 的维度,我们会做语言的识别、质量的控制、时效的控制(由于我们是新闻推荐的场景,跟商品以及其他物品的推荐不太一样,对于时效的控制会比较严)。

  • 从用户兴趣的维度,我们会做分类、标签、关键词以及主题等内容信号的建设。

  • 热点挖掘,因为我们是新闻客户端,所以会做多源的新闻热点挖掘。

  • 互动评论,由于我们还有一些用户互动的评论,所以会做评论的分析和反作弊。

  • 图像,因为我们的新闻是图文并茂的,并且视频会带有图像,所以在图像这块也会做一些图像的表征学习或者特征的挖掘。

  • 铜矿,我们不同于其他新闻客户端的一点是,我们的新闻推荐主要是在浏览器中,除了用户在信息流场景下的消费行为,还会利用到用户在浏览器中的其他的一些浏览行为、搜索行为等等的一些行为,我们把它称之为铜矿,来挖掘用户相关的一些兴趣。

  • 表示学习,因为我们面临的语言比较多,所以我们还会用表示学习的方式来做很多的工作。

2. 多语言的业务需求

UC 国际化信息流推荐面临的多语言的业务需求:


  • 多个国家:已在印度和印尼等多个国家上线十多个语言的信息流推荐服务;

  • 多种语言:仅在印度已经涵盖印地语、英语、泰米尔语、泰卢固语、马拉地语、古吉拉特语等多个小语种,对 NLP 而言存在天然的多语言诉求;

  • 多种样式:包含图文、短视频、小视频、GIF 和 Memes 等多种形式的新闻推荐,除了多语言外,还提出了多模态的诉求。

3. 技术难点

由此带来的挑战,包括:


  • 语言多:需要覆盖十多个小语种;

  • 任务多:基本的词法分析,每个语言的分类、标签等多个任务,都需要建设;

  • 样本少:不是每个语言都有丰富的标注资源,对每个语言都需要进行标注,标注样本成本高,建设周期长;

  • 人才少:在国内懂小语种的人比较少,算法迭代分析困难。


所以,在我们的场景下,这是一个典型的资源匮乏型 ( Low Resource ) 的 NLP 问题。

多语言内容结构化信号建设方法

1. 内容结构化的发展路径

① 内容结构化信号



从内容结构化信号整体上来讲,我们从底向上做了很多不同类型的内容结构化信号:


  • 基础属性:因为我们是多语言的场景,首先要做语言识别,然后做质量的控制以及时效的判断;

  • 显式兴趣点:从用户显式的兴趣角度来讲,我们要做文本的分类、标签提取、关键词提取;

  • 隐式兴趣点:由于用户的显式兴趣点往往受制于样本的规模、算法的精度,所以我们还会做一些用户隐式兴趣点的挖掘,如:主题聚类、图像聚类、用户表征或者基于表示学习的隐式兴趣挖掘。



② 基础词法分析——去语言化


因为我们面临了 10 多种语言,多种不同的任务,对后续的算法,如:分类、标签,以及下游的推荐和用户画像来讲,我们期望尽量把语言相关的东西在 NLP 中解决,下游的一系列任务可以去语言化,算法能够通用。所以,我们尽量在基础的词法分析阶段就把语言的鸿沟消除掉。


我们面临的难点是覆盖语言种类比较多,标注标准比较多。所以我们尽量采用的是 Google 开源的 Universal Dependency 数据库,它覆盖了 70 多种语言,100 多个 Treebank。我们期望在所有的语言和任务上采用同样的标准,在词法分析阶段都处理成标准的 schema 以后,下游即使写规则,也不需要换标签集。我们在开源工具的基础上,做了一系列的迭代工作,覆盖了 10 多种语言的词法分析。


③ 实体识别



我们会做多语言的实体识别,主要利用的是 Wikidata 多语言知识图谱,来挖掘高质量的词典,同时使用半监督或者数据增强的方式标注一部分资源,然后还有一部分人工校对的工作在里面。用的算法和中英文上的并没有太大的区别,主要是 LSTM + CRF 序列标注算法。但是我们在资源方面投入了很大的精力,以数据增强为例,我们可以从学术圈或者公开数据集上拿到很多各个语言的 NER 标注语料,结合我们挖掘出来的多语言的知识图谱,可以直接做数据增强的一些办法(在图片和视觉方面,做数据增强可能很容易,但是在 NLP 角度做数据增强并不是很容易)。比如“巴黎是法国的首都”,如果把“巴黎”换成“伦敦”对于人来说是不可理解的,是错的,但是对于机器训练 NER 来说这是没有问题的,所以我们会用规则或者知识图谱来限制这种数据增强的规模,取得了比较明显的效果。


④ 多语言分类发展阶段



我们在多种语言上都经历了这样的分类发展阶段:


  • 起步:我们刚开始做国际化的时候,在做分类时完全没有标注语料,我主要是通过种子源、种子词,人工总结一些规则或者绑定(一些成熟的站点,我们会进行绑定)。

  • 发展:到了发展阶段,我们累积了一些样本,会去做迁移学习,包括样本的迁移和特征的迁移。

  • 深入:从去年开始,包括 ELMo、BERT、GPT 等(先做预训练,再做后面的一些迁移学习)在 NLP 中成为了一个基本范式,在这个阶段,我们开始做多语言的表示和小样本的学习,能够提升分类的精度。


简单举几个例子:


  • 基于翻译模型的分类样本迁移



我们所有的分类都是多种策略并行的系统,没有一个语言是单纯的系统或者策略。最开始我们在英文、Hindi、Indo 上投入了很多资源,所以结构化的信号建设基本成熟,因为在后面开展一些小语种的时候,会采用多种的办法做样本迁移和特征的迁移。


比如样本迁移,我们会采用图中的办法:把小语种翻译为三个大语种,用大语种的 model 做分类。


  • 基于词向量对齐的分类特征迁移



这是 Facebook 提出的多源词向量对齐的办法 MUSE,MUSE 的基本思想是用单语言的训练语料去训练每一个单语种的词向量,然后再加上一个双语词典,可以把不同语言的词向量映射到同一个空间,他们的目标是映射到同一个空间时,表示相同语义的词距离更近。这种方法在一些有共性的语言上,比如印尼语和英语,效果会比较好,但是在语言差异较大时,效果会弱一点,整体上这种方法还是给我们带来了很多可选的样本。


去年 Facebook 又提出了基于句向量对齐的 LASER,由于需要双语机器翻译的语料,应用起来的话限制条件会比较多。


  • 基于 BERT 的迁移文本分类



从去年开始,先用大规模的单一语料做 PreTraining,使用 ELMo、GPT 或者 BERT,得到一个单语的文本表示,后面再接一些你自己的任务做 Adaption,已经成了 NLP 的一个基本范式。我们也在很多的任务(如:分类和标签)中采用这种办法,其优点是对标注样本数量要求低,在一些小样本上就可以得到很好的效果,但是也存在着缺点就是速度相对较慢,资源消耗比较高,因为我们的语种比较多,所以还会做一些半监督和知识蒸馏相关的一些探索性工作。


⑤ 语义标签



除了分类以外,我们还会做标签,我们的总体思想是一样的,先基于专家经验去累积样本,累积一定样本之后会做一些大规模的有监督学习模型。


  • 弱样本依赖模型



举个简单例子,我们如何做弱样本的依赖模型,它的特点是零样本。如果定义一些语义标签之后,通过 word embedding 先相关很相似的词,然后把这些词做聚类,聚类以后才作为一个语义标签簇的表达,之后直接和 doc 的 embedding 做相似性计算,我们就可以不需要训练样本,完全单语的语料就可以给文章打标签,这种方法对粗粒度的标签效果还可以,但是对细粒度的效果还不行,只能保证一些比较粗的标签的召回,提供一些基础的样本,供后续的人或者算法做二次校验。


  • 大样本监督模型 ML-DNN



通过各种策略挖掘和人工总结大量样本之后,我们可以使用一些大样本的有监督模型,我们的做法比较简单:参照 Fasttext 模型,用 word2vect 初始化词向量,用平均词向量表征 doc 向量,输出多标签概率,就是把刚刚的做法直接迁到有监督的框架下。它的优势是模型比较简单,结合之前做的一些工作,可以快速的覆盖头部的语义标签。

2. 内容质量模型

刚刚讲的是分类和标签,这种结构化的信号,我们再来讲下内容质量:



因为质量是新闻推荐的一个基本红线,在国内可能体会更深,像今日头条、快手等有段时间就因为一些质量的问题被下架了,我们在国际化时,也会遇到这样的问题。


我们的质量模型,基本还是一个人机结合的框架。主要通过一些低质的规则,能够把一些高危的 item 直接检测出来,直接干掉;我们还有一个质量的分级模型,会从多个维度做多个子模型,然后再有一个大的模型来融合这些子模型,质量平台输出的一些不太确认的结果会送到人工审核平台去审核,人工审核平台审核后的结果又会返回到质量模型做 training。在这个过程中,整个框架是去语言化的,我们输入的是 NLP 基础结构化的信号(类别、语言、分词、POS 等),后面的算法不会对语言做特殊的处理。



对于质量规则,我们的准确率会比较高,召回低一点,主要是为了保证检测出绝对低质的东西。


对于质量模型,我们主要分为 5 挡,然后做多维度子模型的融合。

3. 图像信息的应用


刚刚讲的都是一些用户显式的结构化信号,比如语言、分类、标签等人可理解的一些显式信号,显式信号在不同语言的发展进度和阶段是不一样的,为了让一些小语种追赶上大语种的节奏,我们还会做一些不依赖于 NLP 基础建设的一些用户显式的兴趣挖掘,就是内容结构化上的一些隐式的信号。比如图像方面的一些工作:因为语言在不同国家不同语种上会有资源的问题,对于图像,除了上面的一些文本,其它方面是没有太大语言鸿沟的,所以我们会做一些图像方面的工作,比如图像聚类。


具体的做法是:基于开源图像表征模型 ResNet 和 VGG 抽取图像表征,使用 K-means 聚类选取适当合适的聚类簇固定下来,然后对于新入库图像基于固定下来的簇进行打标。这样会得到什么结果呢?



这是从我们库中找的一些样本,对印度的一些封面图做了一些基于这样表示的聚类,最左边是聚类的编号,从这些样本中可以看到一些共性,比如第 23 个 topic 都是关于狗的,24 基本都是钱等等,我们可以直接把这些信号用到 rank 或者召回中,比如印度人比较喜欢的我们的一个场景叫 Memes ( 用户发一张图,上面会加一些文字,其它的什么都没有 ),这时用图像信息做召回效果会比较好。我们通过这种隐式的聚类的编号,跟分类的一些信号做交叉 mapping,发现这里很多类别直接可以对到二级分类,并且准确度高,这样就可以快速的建立很多分类的样本。

4. 表示学习在内容理解和用户理解中的应用


刚刚讲的都是内容理解方面的内容,接下来简单介绍下用户表示。我们在做内容结构化信号时,用户显式可以理解的信号,在不同的语种上,特别是小语种上,我们的迭代速度以及精度跟不上推荐的诉求,这时我们需要用一些隐式的信号,提升推荐的效果。我们的想法是基于预训练在具体任务做 fine-tuning 这种范式已经在 NLP 和图像领域验证过了,所以我们在推荐领域做了这样的尝试:


我们利用用户的消费数据直接建立双塔,类似于 CTR 预估,一边是 user,一边是 item,item 直接用 BERT 的 embedding 作为初始输入,然后两边做双塔结构,这样做的好处是可以引用更多的用户在其他场景下的一些行为,比如用户在浏览器中的一些搜索 query,这时再离线做双塔,user 侧一直往上走,然后 item 侧一直往上走,最后分别得到 user 和 item 的隐含表达,然后再做相似度计算,预估 ctr,但是这不是我们的目的,我们的目的是直接用 user 的表达给下游用。这样在一些稀疏的场景效果提升明显,比如 Push。

总结

简单总结下本次分享的内容:


  • 多语言内容理解业务需求广,单一语言的经验不可完全复用,所以我们要去语言化,在基本的词法分析阶段把语言处理成标准的 schema,除了样本之外,期望后面所有的算法都跟语言没有太大的关联;

  • 迁移学习是我们解决多语言内容理解问题的核心抓手,因为我们天然的会遇到样本和特征的问题,所以我们会做样本和特征等的迁移;

  • 表示学习特别是基于预训练的表示学习为迁移学习,特别是我们的推荐场景,带来了新的无限可能,我们在 NLP 的基础结构化信号中有一些成功的应用,并且在用户表示上也有一些成功的范式。


作者介绍


汪昆


阿里巴巴 | 算法专家


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247494295&idx=1&sn=1218bfa026994967939fa676ed7dd5f9&chksm=fbd758fbcca0d1ede59b225e98add36cae74e9fd3006d42a054c73aaa4a87c75ef46684b9733&scene=27#wechat_redirect


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-10-15 08:001231

评论

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

java安全编码指南之:文件IO操作

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范

WebSocket-技术专题-服务器端消息推送

洛神灬殇

架构师训练营第 1 期第 6 周作业

业哥

云原生时代 容器持久化存储的最佳方式是什么?

京东科技开发者

数据库 云存储

算法训练营毕业总结——以此自勉

Airship

算法 算法和数据结构

来自朋友最近阿里、腾讯、美团等P7岗位面试题

艾小仙

Java 阿里巴巴 程序员 腾讯 面试

黑幕!爆京东18A技术专家纯手打:小团队构建大网站架构实战

996小迁

Java 学习 架构 面试 笔记

Javaer 进阶必看的 RocketMQ ,就这篇了

yes

RocketMQ 消息队列

程序员跳槽,只要用好(2+2)方法论,绝对可以找到一家好公司

Java架构师迁哥

ARTS打卡 第21周

引花眠

微服务 ARTS 打卡计划 springboot

SpringCloud Alibaba开篇:SpringCloud这么火,为何还要学习SpringCloud Alibaba?

冰河

分布式 微服务 高性能 SpringCloud Alibaba

穆长春:数字人民币“双离线”支付开发完毕后续将试点

CECBC

数字钱包

现场突击京东程序员的购物车!看看"11.11"都买啥?

京东科技开发者

程序人生

云开发·多次订阅一次性订阅消息后定时发送

Yukun

微信小程序 小程序云开发 消息推送 订阅消息

搜狗搜索或成为企鹅号流量入口:腾讯欲实现自己的流量闭环

石头IT视角

openEuler进化记:一颗探索宇宙的生态之星

脑极体

这里有一份Java程序员的珍藏书单,请您注意查收

捡田螺的小男孩

Java 后端 PDF

缓存架构不够好,系统容易瘫痪

架构师修行之路

缓存 微服务 架构设计

分布式关系数据库

韩向民

openEuler开源下一代全场景虚拟化平台StratoVirt

openEuler

开源 虚拟化 openEuler stratovirt

既不能神化,也不要泛化区块链

CECBC

金融 数字技术

第五周课后练习

饭桶

二十四、深入Python多进程multiprocessing模块

刘润森

Python

一笔订单,但是误付了两笔钱!这种重复付款异常到底该如何解决?

楼下小黑哥

支付宝 微信支付 支付系统 支付

第五周课后总结

饭桶

保证缓存与数据库的数据一致性不是很容易

架构师修行之路

缓存 一致性

你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道

良知犹存

c c++

anyRTC与京东智联云市场达成战略合作,携手音视频平台

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

蚂蚁金服Java三面面经:二叉树+HTTPS加密+自旋锁+缓存穿透(附答案)

Java架构之路

Java 程序员 架构 面试 编程语言

甲方日常 38

句子

工作 随笔杂谈 日常

架构师训练营第六周作业

Geek_4c1353

  • 扫码添加小助手
    领取最新资料包
UC 国际信息流推荐中的多语言内容理解_语言 & 开发_DataFunTalk_InfoQ精选文章