文章转载自公众号

机器学习初学者 , 作者 机器学习初学者

自2013年以来,word2vec一直是一种有效的词嵌入的方法,本文把word2vec用图解的方式进行,全篇没有数学公式,非常通俗易懂,推荐初学者阅读。

(原文作者:jalammar,翻译:黄海广)。

备注:这个是另一个版本的翻译,网上也有其它版本的翻译,都是独立完成的。

原文链接:

https://jalammar.github.io/illustrated-word2vec/

这篇文章的代码传到了本站的github:

https://github.com/fengdu78/machine_learning_beginner/tree/master/word2vec

正文开始

我发现嵌入的概念是机器学习中最迷人的想法之一。如果您曾经使用Siri,Google智能助理,Alexa,谷歌翻译,甚至智能手机键盘进行下一词预测,那么您很有可能从这个已经成为自然语言处理模型核心的想法中受益。在过去的几十年中,使用嵌入技术进行神经模型已有相当大的发展(最近的发展包括BERT和GPT2 等尖端模型的语境化嵌入)。

自2013年以来,Word2vec一直是一种有效创建单词嵌入的方法。除了词嵌入字的方法之外,它的一些概念已经被证明可以在非语言任务中有效地创建推荐引擎和理解顺序数据。比如Airbnb,阿里巴巴,Spotify和Anghami这样的公司都从NLP世界中创造出这一优秀的工具并将其用于生产中,从而为新型推荐引擎提供支持。

我们将讨论嵌入的概念,以及使用word2vec生成嵌入的机制。

让我们从一个例子开始,了解使用向量来表示事物。

您是否知道五个数字(向量)的列表可以代表您的个性?

个性嵌入:你的个性怎么样?

使用0到100的范围表示你的个性(其中0是最内向的,100是最外向的)。

五大人格特质测试,这些测试会问你一个问题列表,然后在很多方面给你打分,内向/外向就是其中之一。

图:测试结果示例。它可以真正告诉你很多关于你自己的事情,并且在学术、个人和职业成功方面都具有预测能力。

假设我的测试得分为38/100。我们可以用这种方式绘制:

让我们将范围切换到从-1到1:

了解一个人,一个维度的信息不够,所以让我们添加另一个维度 - 测试中另一个特征的得分。

你可能不知道每个维度代表什么,但仍然可以从一个人的个性的向量表示中获得了很多有用的信息。

我们现在可以说这个向量部分代表了我的个性。当你想要将另外两个人与我进行比较时,向量化表示的有用性就出现了。在下图中,两个人中哪一个更像我?

处理向量时,计算相似度得分的常用方法是余弦相似度:

一号人物与我的余弦相似度得分高,所以我们的性格比较相似。

然而,两个方面还不足以捕获有关不同人群的足够信息。几十年的心理学研究已经研究了五个主要特征(以及大量的子特征)。所以我们在比较中使用所有五个维度:

我们没法在二维上绘制出来五个维度,这是机器学习中的常见挑战,我们经常需要在更高维度的空间中思考。但好处是余弦相似度仍然有效。它适用于任意数量的维度:

嵌入的两个中心思想:

  • 我们可以将人(事物)表示为数字的向量。
  • 我们可以很容易地计算出相似的向量彼此之间的关系。

词嵌入

我们导入在维基百科上训练的GloVe向量:

import gensimimport gensim.downloader as apimodel = api.load('glove-wiki-gigaword-50')
model["king"]#查看“king”最相似的单词
[('prince', 0.8236179351806641), ('queen', 0.7839042544364929), ('ii', 0.7746230363845825), ('emperor', 0.7736247181892395), ('son', 0.766719400882721), ('uncle', 0.7627150416374207), ('kingdom', 0.7542160749435425), ('throne', 0.7539913654327393), ('brother', 0.7492411136627197), ('ruler', 0.7434253096580505)]

这是一个包含50个数字的列表,我们无法说清楚里面的值代表什么。我们把所有这些数字放在一行,以便我们可以比较其他单词向量。让我们根据它们的值对单元格进行颜色编码(如果它们接近2则为红色,如果它们接近0则为白色,如果它们接近-2则为蓝色)

import seaborn as snsimport matplotlib.pyplot as pltimport numpy as npplt.figure(figsize=(15, 1))sns.heatmap([model["king"]], xticklabels=False, yticklabels=False, cbar=False, vmin=-2, vmax=2, linewidths=0.7)plt.show()

我们将忽略数字并仅查看颜色以指示单元格的值,我们将“King”与其他词语进行对比:

plt.figure(figsize=(15, 4))sns.heatmap([ model["king"], model["man"], model["woman"], model["king"] - model["man"] + model["woman"], model["queen"],], cbar=True, xticklabels=False, yticklabels=False, linewidths=1)plt.show()

看看“man”和“woman”是如何彼此更相似的,他们中的任何一个都是“king”?这告诉你一些事情。这些向量表示捕获了这些单词的信息/含义/关联。

这是另一个示例列表(通过垂直扫描列来查找具有相似颜色的列):

有几点需要指出:

  • 所有这些不同的单词都有一个直的红色列。它们在这个维度上是相似的(我们不知道每个维度代码是什么)
  • 你可以看到“woman”和“girl”在很多地方是如何相似的。与“man”和“boy”一样
  • “boy”和“girl”也有彼此相似的地方,但与“woman”或“man”不同。这些是否可以编写一个模糊的青年概念?可能。
  • 除了最后一个字之外的所有字都代表着人。我添加了一个对象“water”来显示类别之间的差异。例如,您可以看到蓝色列一直向下并在嵌入“water”之前停止。
  • 有一个明显的地方,“king”和“queen”彼此相似,并与所有其他人不同。类比

我们可以添加和减去单词嵌入并获得有趣的结果,最有名的例子是公式:“king” - “man” + “woman”:

model.most_similar(positive=["king

word2vec相似度计算_图解word2vec(原文翻译)相关推荐

  1. word2vec相似度计算_文档相似度助力搜索引擎

    几种简单相似度算法: 1.简单共有词判断 假设现有文本A和B,将A.B经过分词.去停用词之后形成集合A={a1,a2,...,an}和集合B={b1,b2,...,bn}.用NUM(A∩B)表示集合A ...

  2. word2vec相似度计算_干货|文本相似度计算

    点击上方"AI遇见机器学习",选择"星标"公众号 原创干货,第一时间送达 一.余弦测量相似度 为了定义两个目标词v和w之间的相似度,我们需要一个度量来取两个这样 ...

  3. word2vec相似度计算_AAAI-2016 | 使用孪生递归网络的句子语义相似度计算方法

    本文<Siamese Recurrent Architectures for Learning Sentence Similarity>提出了一种使用孪生递归网络来计算句子语义相似度的方法 ...

  4. 软件工程java向量相似度计算_向量的相似度计算常用方法9个

    <向量的相似度计算常用方法9个>由会员分享,可在线阅读,更多相关<向量的相似度计算常用方法9个(5页珍藏版)>请在人人文库网上搜索. 1.向量的相似度计算常用方法相似度的计算简 ...

  5. java中的圈复杂度计算_[代码质量] 圈复杂度和代码质量优化(附带示例代码纠正代码质量)...

    什么是圈复杂度? --------------------------------------- 圈复杂度(Cyclomatic Complexity)是衡量计算机程序复杂程度的一种措施.它根据程序从 ...

  6. sklearn tfidf求余弦相似度_【基础算法 】文本相似度计算

    在自然语言处理中,文本相似度是一种老生常谈而又应用广泛的基础算法模块,可用于地址标准化中计算与标准地址库中最相似的地址,也可用于问答系统中计算与用户输入问题最相近的问题及其答案,还可用于搜索中计算与输 ...

  7. 【基础算法 】文本相似度计算

    在自然语言处理中,文本相似度是一种老生常谈而又应用广泛的基础算法模块,可用于地址标准化中计算与标准地址库中最相似的地址,也可用于问答系统中计算与用户输入问题最相近的问题及其答案,还可用于搜索中计算与输 ...

  8. gensim词向量Word2Vec安装及《庆余年》中文短文本相似度计算 | CSDN博文精选

    作者 | Eastmount 来源 | CSDN博文精选 (*点击阅读原文,查看作者更多精彩文章) 本篇文章将分享gensim词向量Word2Vec安装.基础用法,并实现<庆余年>中文短文 ...

  9. Google开源word2vec,文本相似度计算工具

    Google开源word2vec,文本相似度计算工具 谷歌已经使用Deep Learning技术开发了许多新方法来解析语言,目前,谷歌开源了一款基于Deep Learning的学习工具--word2v ...

最新文章

  1. js 外部文件加载处理
  2. IE浏览器跟火狐浏览器兼容写法3
  3. Css标题中图片居中,图片居中:任意图片在div里的上下垂直都居中!
  4. 移动应用ios和网页应用_如何在iOS上一次移动多个应用
  5. 重磅!Python再次第一,Java和C下降,凭什么?
  6. Java中继承和面向接口的编程
  7. Splash特征描述子
  8. 【DSP】CCS 5.5的安装教程
  9. 小强开饭店-从单体应用到微服务
  10. raid0 trim linux,6系主板泪流满面,终于支持RAID 0模式下的TRIM了
  11. 盘点:54款真正耐玩的独立游戏
  12. QFramework引入Utility和System
  13. 周爱民给程序员的十点建议
  14. 太励志!北大物业小哥六战法考终上岸
  15. 细谈永恒之蓝,实现复现
  16. WIFI:802.11协议帧格式
  17. 关于K.im的满满干货!
  18. 山大郝老师 计算机学院,相约山大 一起扬帆远航
  19. LLVM WEEKLY系列停止转载
  20. AI文娱独角兽Video++极链科技完成C1轮,5个月融资10.7亿元

热门文章

  1. NLP高阶:一文走遍完整自然语言处理流程
  2. 竞赛比完,代码、模型怎么处理?Kaggle 大神:别删,这都是宝藏
  3. 目标检测比赛中的tricks集锦
  4. Github 3.4k星,200余行代码,让你实时从视频中隐身
  5. 中文开源!它或许是最适合自学的Python教材
  6. 你中招了吗?混不好大学的人,都有这4种表现
  7. RESTful之视图概览和视图说明
  8. Vue之for列表渲染、methods事件和model表单绑定
  9. python之⾯向对象-继承
  10. Git单人本地仓库操作