全文共7812字,预计学习时长16分钟或更长
图片来源:unsplash.com/@pixtolero2
你注意过亚马逊的“为你推荐”功能吗?事实上,此功能是由机器学习驱动的,精准无比。
网飞、谷歌、亚马逊、Flipkart等公司斥巨资完善推荐引擎是有原因的。推荐引擎是强大的获客渠道,并能增强用户体验。
举个例子:登录一个常用的网上商城买躺椅,商城会展示出几百种躺椅。
从传统的两座躺椅到回压躺椅;从可升降躺椅到靠墙躺椅。我们试着点开一个皮革手动躺椅:
注意此页面上展现的不同信息。图片左边包含从不同角度拍摄的产品照片。右边展示了产品细节以及相似产品图片。
网站推荐给我们相似的产品,帮消费者节省了手动搜寻和浏览相似扶手椅的时间。
本文将将从一个独特的角度展开展示如何搭建推荐系统,即应用一个NLP概念——Word2vec来进行推荐。
目录
1. word2vec介绍——单词的向量表示
2. 如何生成word2vec词嵌入?
2.1 训练数据
2.2 生成word2vec词嵌入
3. 对非文本数据应用word2vec模型
4. 案例研究:对于网上产品推荐使用word2vec
1. word2vec介绍——单词的向量表示
众所周知,机器处理原始文本数据。实际上,机器几乎不可能处理数据文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任务的重要步骤。
其中非常关键的一步是word2vec词嵌入的使用。该方法在2013年被引入NLP领域,完全改变了NLP的前景。
这些嵌入法代表了处理词类比和相似度等任务可达到的最高水准。word2vec嵌入法也能实现King – man +woman ~= Queen(国王–男性 + 女性 ~= 女王等任务),近乎神迹。
现在有两种word2vec模型——连续词袋模型与Skip-Gram模型。本文将使用后者。
首先要了解如何计算word2vec向量或嵌入。
2. 如何生成word2vec词嵌入?
word2vec模型是一个单个简单隐藏层的神经网络模型。模型任务用于预测语句中每个单词的临近单词。然而,我们的目标与此完全无关。我们想做的只是知道模型被训练后隐藏层所学习的权重。这些权重可做被用做词嵌入。
下面的例子用于理解word2vec模型是如何工作的。思考以下句子:
假设“teleport(传输)”这个词作为输入词。该词拥有规格为2的上下文窗口。这意味着只将此词左右两侧的两个单词作为相近单词。
注意:上下文窗口的规格非固定,可根据需要改变。
现在,任务是逐一选择相近单词(上下文窗口中的单词)并确定词汇表中每个单词被选中的可能性。听起来很容易,对吗?
通过另一个例子来理解这个过程。
2.1 训练数据
需要一个标签数据集来训练神经网络模型。这意味着数据集需要有一组输入,每组都会有相应输出。这时你可能会想问以下问题:
· 何处寻找这样的数据集?
· 该数据集需要包含什么内容?
· 这组数据有多大?
好消息!可以很容易地创建自己的标签数据来训练word2vec模型。如下阐述了如何从文本生成数据集。应用其中的一个句子并创建训练数据。
第一步:黄色高亮单词作为输入,绿色高亮单词为输出。窗口规格为2个单词。将首单词作为输入词。
因此,该输入词的训练样本如下所示:
输入 |
输出 |
we |
must |