1 前言
2013 年,Mikolov 等人创建 Word2Vec 工具,将 word embedding 带到前台,随后 NLP 领域又出现了各种 embdding,如 Sentence2Vec[1][2]、Doc2Vec[2] 等,似乎 Everything can embdding。下图为大神 Mikolov 等人在论文《Distributed Representations of Sentences and Documents 》提出 sentence2vec(doc2vec) 的两种模型。
2 Word2Vec 应用
- 作输入特征,如情感分析、文本分类、词性标注、语言翻译
- 作初始值,作为神经网络的预训练值
- 语义特性,如语义相似度、query 相关性等
2.1 文本分类
用于将文本转换为计算机能够 “读懂” 的向量——词向量
2.2 电影推荐
基于 Item2Vec 实现的电影推荐 [3]。
2.2.1 推荐满天飞
万能的淘宝
神奇的 B 站
【官方双语/合集】线性代数的本质 - 系列合集(15)
灌水的豆瓣
肖申克的救赎
2.2.2 Item2Vec
- 何为 Item2Vec?
Item2Vec: Neural Item Embedding for Collaborative Filtering 最早提出 item2vec,论文将 Word2vec 的 Skipgram with Negative Sampling (SGNS)的算法思路迁移到基于物品的协同过滤 (item-based CF) 上,以物品的共现性作为自然语言中的上下文关系,构建神经网络学习出物品在隐空间的向量表示。
- 算法大致流程
把用户浏览的商品集合等价于 word2vec 中的 word 的序列(句子) ,出现在同一个集合的商品对视为 positive。
- 优缺点分析
可优化 item2item 的计算,但相似度计算只利用到了 item 共现信息,即是:
- 忽略了 user 行为序列信息,如买乒乓拍后可能还要买乒乓球
没有建模用户对不同 item 的喜欢程度高低,如喜欢和购买是不同程度的强行为
论文对比实验
论文中通过对比基于 SVD 方法的用户 embedding 对音乐人的类别进行聚类,效果如下,其中同一个颜色的节点表示相同类型的音乐人,图 (a) 是 item2vec 的聚合效果,图 (b) 是 SVD 分解的聚合效果。
2.2.3 源数据
豆瓣用户 UGC 内容 (豆列) 产生推荐列表。豆列共 6 万个,其中包括 10w + 部电影。
什么是豆列?
例子
数据
1 | // 豆列信息 |
2.2.4 数据处理
归并统计,降序分配 ID
1 | // 电影ID |
2.2.5 词向量训练
1 | ./fasttext skipgram -input ./datas/doulist_0804_09.movie_id -output ./models/fasttext_model_0804_09_skipgram -minCount 5 -epoch 50 -neg 100 |
感谢
自然语言处理词向量系列至此结束, 本系列为同事周同学与笔者共同学习分析的讲稿, 在此非常感谢周同学对笔者的指导。后续有新的相关学习记录也会同时记录到该系列文章中。
参考资料
- [1]skip thought vector
- [2]distributed representations of sentences and documents
- [3]使用 item2vec 做电影推荐
- [4]efficient estimation of word representation in vector space
- [5]fasttext
- [6]algorithm & nlp] 文本深度表示模型——word2vec&doc2vec 词向量模型
- [7]dnn 论文分享 - item2vec: neural item embedding for collaborative filtering
The article is not allowed to repost unless author authorized
You can donate to me if the article makes sense to you
Welcome to follow my wechat