写点什么

鸟枪换炮,如何在推荐中发挥 AI Lab 开源中文词向量的威力?

  • 2019-08-22
  • 本文字数:1888 字

    阅读完需:约 6 分钟

鸟枪换炮,如何在推荐中发挥AI Lab开源中文词向量的威力?

本文来自“深度推荐系统”专栏,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文则结合作者在工作中的经验总结,着重于介绍在推荐系统中如何使用腾讯 AI Lab 开源的中文词向量。


近年来,深度学习技术在自然语言处理领域中得到了广泛应用。用深度学习技术来处理自然语言文本,离不开文本的向量化,即把一段文本转化成一个 n 维的向量。在当前“万物皆可 embedding”的思想领导下,词向量既是 NLP 领域中一个非常基础的工具,也是推荐、广告等业务场景中用于召回以及排序等阶段的简单且实用的核武器,主要用于进行语义相似度度量等。


词向量的核心是 word2vec[1],相应原理介绍不是本文介绍的重点。常用的训练工具有 gensim,fasttext 等,一般的训练步骤包括:收集语料 --> 文本过滤 --> 分词 --> 去除停用词 --> 训练模型。


目前,针对英语环境,工业界和学术界已发布了一些高质量的词向量数据,并得到了广泛的使用和验证。其中较为知名的有谷歌公司基于 word2vec 算法[1]、斯坦福大学基于 GloVe 算法[2]、Facebook 基于 fastText 项目[3]发布的数据等。然而,目前公开可下载的中文词向量数据还比较少,并且数据的词汇覆盖率有所不足,

腾讯 AI Lab 开源中文词向量

腾讯 AI Lab 采用自研的 Directional Skip-Gram (DSG)算法 [4] 作为词向量的训练算法。DSG 算法基于基本的 Skip-Gram,在文本窗口中词对共现关系的基础上,额外考虑了词对的相对位置,以提高词向量语义表示的准确性。


数据简介:mp.weixin.qq.com/s/2Sto


数据下载地址:ai.tencent.com/ailab/nl


索引词库大小:800w;词向量维度:200

如何在推荐中使用开源词向量

在推荐系统的基于内容召回策略中,一般需要根据用户已经点击过的文章所包含的 tag 词或者主题,为用户推荐与点击历史中最相似的文章。其中有一种做法就是从文章中抽取 T 个 tag 相应的词向量来表示这篇文章的文章向量(如 vec_doc = w1 * vec_t1 + w2 * vec_t2 + …,这里 w1,w2 是文章中 tag 词相应的权重);然后,根据用户的点击历史计算文章向量的相似度,取 topk 个返回。下面主要实际业务场景中简单的使用步骤:


  • 向量裁剪:从腾讯 AI Lab 官网下载下来的原始词向量库比较大,16G 并且包含大量的停用词。这里可首先计算自己业务场景的 tag 库与这份开源中文自己向量的 tag 集合之间的交集得到裁剪后的向量库。

  • 加载词向量:可以使用 gensim 进行加载。可以参考 gensim 使用手册:radimrehurek.com/gensim


from gensim.models.word2vec import KeyedVectorswv_from_text = KeyedVectors.load_word2vec_format('Tencent_AILab_ChineseEmbedding.txt', binary=False)
复制代码


  • 部分测试数据


model=wv_from_text.wv
print(model.most_similar("如懿传"))[('海上牧云记', 0.8060665130615234), ('孤芳不自赏', 0.7940512299537659), ('醉玲珑', 0.7932543754577637), ('凰权', 0.7888569831848145), ('古装剧', 0.7873178720474243), ('琅琊榜2', 0.7863854765892029), ('延禧攻略', 0.7858327031135559), ('那年花开月正圆', 0.7804251909255981), ('大剧', 0.7796347737312317), ('凤囚凰', 0.7741515040397644)]
print(model.similarity("郭靖","黄蓉"))0.9186713635202067
print(model.n_similarity(["中国","北京"],["俄罗斯","莫斯科"]))0.6441469472853117
print(model.doesnt_match(["洪七公","王重阳","郭靖","黄药师"]))王重阳
复制代码

工业实际应用注意事项

实际使用中我们发现业务场景的 tag 覆盖率与文章覆盖率都有极大比例的提升。同时也带来了业务 CTR 的明显提升。


  • 总体老说腾讯 AI Lab 开源的这份中文词向量的覆盖度比较高,精度也比较高。但是词向量里含有大量停用词,导致文件比较大加载速度较慢(数分钟),而且内存消耗较大,实际使用时根据场景需要裁剪以节省性能;

  • 根据不同领域的情况,有可能某些特定垂直领域的词语之间的相关性计算不是特别准,需要根据业务场景需要加入相应的语料进行增量训练后再使用;

  • 另外,随着时间的推移会不断出现新词,物名,人名等,就需要重新训练模型。如果后期 AI Lab 不再更新维护这份词向量的话,则需要自己进行维护迭代升级。

参考文献

  1. Distributed Representations of Words and Phrases and their Compositionality

  2. GloVe: Global Vectors for Word Representation

  3. Enriching Word Vectors with Subword Information

  4. Yan Song, Shuming Shi, Jing Li, and Haisong Zhang. Directional Skip-Gram: Explicitly Distinguishing Left and Right Context for Word Embeddings. NAACL 2018


本文授权转载自知乎专栏“深度推荐系统”。原文链接:https://zhuanlan.zhihu.com/p/64385839


2019-08-22 08:058993

评论

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

存储性能加速引擎之预读

焱融科技

Linux sds 焱融科技 分布式存储 预读

JAVA算法

Bruce Duan

排序算法 Java算法

[POJ 1000] A+B Problem 经典水题 JAVA解题报告

一直AC一直爽

POJ OJ ACM 水题

架构师训练营」第 7 周作业

edd

极客大学架构师训练营

一个简单的物联网设备接入网关高可用方案

凸出

Java nginx Netty

【小白学YOLO】一文带你学YOLOv1 Testing

华为云开发者联盟

人工智能 算法 图像识别 什么是多线程

BIGO | Likee深度推荐模型的特征工程优化

DT极客

多线程为了同个资源打起架来了,该如何让他们安定?

小林coding

并发编程 多线程 操作系统 计算机基础

智能标注原理揭秘,一文读懂人工智能如何解决标注难题

百度大脑

人工智能 百度 学习 AI 百度大脑

kubernetes 集群升级,备份,故障恢复(kubeadm)

小小文

Kubernetes 群集安装 故障 kubeadm

又被逼着优化代码,这次我干掉了出入参 Log日志

程序员小富

Java

Fastjson到了说再见的时候了

YourBatman

Jackson Fastjson JSON库

饿了么4年 + 阿里2年:研发路上的一些总结与思考

程序员生活志

阿里 饿了么 经验总结

程序员开启社交和打造影响力的最佳方式

非著名程序员

程序员 提升认知 写作 社交

天府之国迎来数字经济发展高地新契机

CECBC

数字货币 区块链技术 应用落地 人才政策产业

密码学的随机性与区块链随机数

CECBC

数据分析师 ”痛“ 谁能了解

松子(李博源)

数据分析 产品经理 数据产品 数据模型

第七周作业

andy

极客大学

第七周总结

andy

极客大学

【API进阶之路】因为不会创建云服务器,我被实习生摆了一道

华为云开发者联盟

虚拟机 服务器 API 华为云 API接口管理

字节跳动李本超:一年成为 Committer,我与 Flink 社区的故事

Apache Flink

flink

常见的emit实现AOP demo

八苦-瞿昙

随笔 随笔杂谈 aop

提速数字化!区块链加速应用落地,新制造与服务不断推出

CECBC

三分钟热度的干劲

落曦

阿里云高级技术专家李晓成:面向5G的云网一体及云原生应用实践

阿里云Edge Plus

Python好找工作吗?

cdhqyj

[POJ 1001] Exponentiation JAVA解题报告

一直AC一直爽

算法 刷题 POJ ACM

【源码系列】Spring Cloud Gateway

Alex🐒

源码 SpringCloud Gateway

面向进化的软件架构

星际行者

软件架构 进化

LeetCode 题解:122. 买卖股票的最佳时机 II,JavaScript,一遍循环,详细注释

Lee Chen

大前端

你的个人博客网站该上线了!

北漂码农有话说

鸟枪换炮,如何在推荐中发挥AI Lab开源中文词向量的威力?_AI&大模型_深度传送门_InfoQ精选文章