分享
Word2Vec 详解
输入“/”快速插入内容
Word2Vec
详解
副标题:
Word2Vec
的直观理解,并在 Python上 实现它
原文地址:
https://towardsdatascience.com/word2vec-explained-49c52b4ccb71
作者:
Vatsal
(MongoDB
机器学习
工程师)
译者:waytoAGI共建者 Dorothy
介绍
Word2Vec 是 NLP 领域的一个近期突破。Tomas Mikolov ,捷克计算机科学家,目前是 CIIRC(捷克信息学、机器人学和控制论研究所)的研究员,是 word2vec 研究和实现的主要贡献者之一。词嵌入是解决 NLP 中许多问题不可或缺的一部分。它们描述了人类如何向机器理解语言。你可以将它们想象为文本的向量化表示。Word2Vec 是一种常用的生成词嵌入的方法,具有多种应用,如文本相似性、推荐系统、情感分析等。
词嵌入
在进入word2vec领域之前,让我们先了解一下什么是词嵌入。了解这一点很重要因为word2vec的总结果和输出与算法传递的每个唯一单词的相关联嵌入。词嵌入是一种将单个单词转换为单词数字表示(即向量化)的技术。当每个单词被映射到一个向量时,这个向量就会以一种类似于神经网络的方式被学习。这些向量试图捕捉该单词与整个文本相关的各种特征。这些特征可以包括单词的语义关系、定义、上下文等。有了这些数字化表示,你可以做很多事情,比如确定单词之间的相似性或不相似性。
显然,这些作为机器学习各个方面的输入是不可或缺的。机器无法处理原始形式的文本,因此将文本转换为嵌入将允许用户将嵌入输入到经典机器学习模型中。最简单的嵌入是对文本数据进行 one-hot 编码,每个向量都会映射到一个类别。
For example:
have = [1, 0, 0, 0, 0, 0, ... 0]
a = [0, 1, 0, 0, 0, 0, ... 0]
good = [0, 0, 1, 0, 0, 0, ... 0]
day = [0, 0, 0, 1, 0, 0, ... 0] ...
然而,像这样的简单嵌入会存在多种限制,因为它们无法捕捉单词的特征,而且根据语料资料库的大小,它们会变得非常大。
Word2Vec架构
Word2Vec 的有效性来自于它能够将相似单词的向量分组在一起。给定足够大的数据集,Word2Vec 可以根据它们在文本中出现的次数对单词的含义做出强有力的估计。这些估计产生了与语料库中其他单词的单词关联。
例如,像“国王”和“王后”这样的单词彼此非常相似。当对词嵌入进行代数运算时,您可以找到接近单词相似性的近似值。例如,“国王”的2 维嵌入向量 - “男人”的2 维嵌入向量 + “女人”的2 维嵌入向量 ,生成一个与 “王后”的嵌入向量非常接近的向量 。
注意,下面的值是随机选择的。
King - Man + Woman = Queen
[5,3] - [2,1] + [3, 2] = [6,4]
你可以看到 King 和 Queen 这两个词在位置上很接近。(图片由作者提供)
word2vec
的成功归因于两种主要架构,即skip-gram 和 CBOW 架构。
CBOW(连续词袋)