分享到:
您的位置: 首页 > 正文

教程 | 用数据玩点花样!如何构建skim-gram模型来训练和可视化词向量

2018/1/13 13:42:55 来源:机器之心 [ ]

选自Medium

作者:Priya Dwivedi

参与:柯一雄、路雪、蒋思源

本文介绍了如何在 TensorFlow 中实现 skim-gram 模型,并用 TensorBoard 进行可视化。版权qi-wen.com

GitHub 地址:https://github.com/priya-dwivedi/Deep-Learning/blob/master/word2vec_skipgram/Skip-Grams-Solution.ipynb

本教程将展示如何在 TensorFlow 中实现 skim-gram 模型,以便为你正在处理的任意文本生成词向量,然后用 TensorBoard 进行可视化。我发现这个练习 1)有助于理解 skim-gram 模型是的工作原理;2)在 CNN 或 RNN 中使用词向量之前,先熟悉词向量捕获文本的关系。

我在 text8 数据集上训练了一个 skim-gram 模型,该数据集是英文维基百科文章的集合。我用 TensorBoard 来可视化这些嵌入。TensorBoard 允许使用 PCA 选择 3 主轴来投影数据,进而看到整个文字云。超级酷!你可以输入任何单词,它会显示相邻的单词。你也可以隔离最靠近它的 101 个点。奇闻网

看看下面的片段。

完整代码:https://github.com/priya-dwivedi/Deep-Learning/blob/master/word2vec_skipgram/Skip-Grams-Solution.ipynb

为了可视化训练过程,我还持续跟踪一组随机单词在模型中最靠近的预测单词。在第一次迭代中,最接近的预测单词看起来非常随机。这很合理,因为所有词向量都是随机初始化的。

训练结束时,该模型已经能更好地找到单词之间的关系。

Word2Vec 和 Skip-Gram 模型

创建词向量是基于大型文本语料库,为每个单词创建向量的过程,且语料库中语境相似的单词所对应的向量在向量空间中非常接近。

这些词向量可以很好地捕捉单词之间的上下文关系(例如,黑色、白色和红色的示例向量会紧密地结合在一起),而且使用这些向量(而不是单词本身)来完成文本分类或新文本生成等自然语言处理(NPL)任务,会得到更好的结果。说明http://www.qi-wen.com/

有两个主要的模型来生成这些词向量——连续词袋(CBOW)和 Skip-Gram 模型。CBOW 模型试图根据给定语境词预测中心词,而 skip-gram 模型试图根据给定中心词预测语境词。我们可以看一个简化的例子:

CBOW: The cat ate _____. Fill in the blank, in this case, it's「food」.

CBOW:这只猫吃了________。(句子填充)本例中,应该填「食物」。

Skip-gram: ___ ___ ___ food. Complete the word's context. In this case, it's「The cat ate」

Skip-gram:_______________食物。(句子填充)本例中,可以填「这只猫吃了」

如果你对这两种方法的详细对比感兴趣,请参见此链接:https://iksinc.wordpress.com/tag/continuous-bag-of-words-cbow/。

大量论文发现,skip-gram 模型能产生更好的词向量,所以我将重点放在实现这个模型上。奇闻网

在 Tensorflow 中实现 Skip-Gram 模型

这里我只列出构建模型的主要步骤。详情请查看我的 GitHub repo。

1. 数据预处理

首先清理数据,删除标点、数字,并将文本分割成单个单词。比起单词,程序能更好地处理整数,因此我们创建一个「词汇转整数」字典,将每个单词映射到一个整数上。代码如下:

2. 子采样

经常出现的单词,如「the」、「of」和「for」,并没有给附近的单词提供太多的语境。如果丢弃一些,我们就可以消除数据中的的部分噪声,实现更快的训练和更好的表示。这个过程被 Mikolov 称为子采样(subsampling)。网站qi-wen.com

3. 创建输入和目标

skip-gram 模型的输入是每个单词(编码为整数),而目标是围绕该窗口的单词。Mikolov 等人发现,如果这个窗口的大小是可变的,同时更接近中心词的单词被采样次数较多时,性能会更好。

「由于距离更远的词通常不如距离更近的词与目标单词的关系那么紧密,我们从远距离的词中采样较少的单词作为训练样本,以降低其权重……如果选择窗口大小= 5,那么我们将为每一个训练词随机选择一个 1 和窗口大小 5 之间的数字 R,然后将目标单词在句子中的前后 R 个单词纳入训练,作为正确的标签。」

4. 构建模型

下图展示了我们将要构建网络的一般结构(图片来源:http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/)。

我们把一个输入词如「ants」(蚂蚁)表示为独热向量。这个向量有 10000 个分量(每个分量都对应于词汇表中的一个单词),我们将单词「ants」对应的分量设为「1」,所有其他分量都为 0。网络的输出也是一个单向量(也包含 10000 个分量)。奇闻网

训练结束时,隐藏层将会有经过训练的词向量。隐藏层的大小相当于向量中的维数。在上面的例子中,每个单词都有一个长度为 300 的向量。

你可能已经注意到,skip-gram 神经网络包含大量的权重……在我们的例子中有 300 个特征和包含 10000 个单词的词汇表,也就是说在隐藏层和输出层都有 3 百万个权重数!在大型数据集上进行这样的训练令人望而却步,因此 word2vec 的作者引入了一些调整来使训练变得可行。详情请查看:http://mccormickml.com/2017/01/11/word2vec-tutorial-part-2-negative-sampling/;Github 代码:https://github.com/priya-dwivedi/Deep-Learning/blob/master/word2vec_skipgram/Skip-Grams-Solution.ipynb。

5. 用 TensorBoard 进行可视化

使用 TensorBoard 中的「嵌入投影机」可视化嵌入。要实现这个功能,你需要完成以下步骤:

  • 在检查点目录的训练结束时保存你的模型

  • 创建一个 metadata.tsv 文件包含每个整数转换回单词的映射关系,这样 TensorBoard 就会显示单词而不是整数。将这个 tsv 文件保存在同一个检查点目录中

  • 运行这段代码:

  • 打开 TensorBoard,将其指向检查点目录

大功告成!

原文链接:https://towardsdatascience.com/training-and-visualising-word-vectors-2f946c6430f8

本文为机器之心编译,转载请联系本公众号获得授权。

文章来源网络,版权归属原作者,未注明作者均因传阅太多无从查证。本站为公益性非盈利网站,在本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点。如果本网转载的稿件涉及您的版权、名益权等问题,请尽快与我们联系,我们将第一时间处理!
  • 这个年代,关于搜索引擎你不得不知道的致命缺点,干货分享!

    互联网与时俱进,越来越多的人在网络的时代里发现了商机,赚到了第一桶金。那么今天,让小编蚊子给大家介绍一下主流网络推广的一些技巧和秘密。一个国内最大的中文搜索引擎。它的大,主要体现在,覆盖面广,几乎百分之90以上的网民在上网都会用到的搜索引擎。2018年,搜索引擎针对一般企业的主流业务,为大搜(关键词竞价排名)。一种最常见有效的推广模式。众所周知,关键词的推广原理是通过用户的搜索习惯来决定的,如产品词、业务词、地域词、疑问词等基础词性进行拓词。以精准关键词结合网民搜索习惯来进行主动展现在意向客户面

  • 有了自助洗车机,洗车也不能随意任性!

    你在北方的高温里晒成非洲人,我在南方的狂风暴雨里高喊何时天晴……夏季高温才初显威力,相信就有小伙伴们在叫苦不迭了。这时,有人怕是要问了:天气这么热,车是不是洗得越多越好?还有人会说:天降大雨,是不是相当于我免费洗车了?有了自助洗车机,洗车也不能随意任性!别一不小心踩雷,把车洗毁了!暴晒后马上洗夏季高温暴晒,不光人要降温,不少“爱车”车主也想给暴晒了大半天的车洗洗冷水澡。可是,突然一盆凉水泼身上是什么感觉呢?经过太阳暴晒的车子,车身表面温度会很高,如果这时候洗车,一热一冷,长此以往可能会使漆面脆化

  • 进销存软件真能帮助门店提升管理?

    目前,对于传统的中小型商贸企业很多都是门店仓库一体的业务模式,一般都是个门店和一个仓库,门店与仓库仅一墙之隔,前面是门店,后面是仓库。在管理上一般都使用手工记账,算价格、收款,写单送货操作过于繁琐,而且在送货中还会因为手工不清造成送货人无法识别等问题,这时候就需要使用一款进销存管理软件帮助中小商贸企业进行管理。但是一般的门店管理者都担心上一套软件的价格偏高,而实际上在帮助店铺完成收银,商品采购、入库、交货、回收货款、账务管理这一套完整的系统并不会花费太多,相对来说运营成本较低,还能真正帮助管理者

  • MIT盘点:聚焦那些科技领域的女性先锋

    麻省理工学院(MIT)图书馆发布了一项新举措,他们寻找、保存并提供学校女教职员工的个人档案,以突出这些女性的贡献。在ShirleySontheimer等捐赠者的资助下,该项目于去年启动,第一年的研究对象,是即将结束在校职业生涯的女教师。四位教师的档案被收录,她们是:NancyHopkins生物学教授,因使斑马鱼广泛用于生物研究而闻名。她还在1999年进行了一项调查,就MIT女性地位,发布了一份里程碑式的报告。NancyHopkinsMaryPotter脑科学和认知科学系教授,前MIT教员(fac

  • 外媒如此评价这个拥有“记忆能力”的无人机

    现在的无人机,不管如何buff加持,都还是需要在空中定位的——直接在无人机里安装GPS定位模块。可这往往也会带来诸多麻烦。比如:室内无法接收GPS信号,导致无人机只能在室外定位;校准过程太~复杂,对无人机新手相当不友好;GPS信号突然断了,无人机失航,上千块钱的家伙就这么飞走了;一进入楼群、狭窄的街区等有遮挡物的区域,无人机就会受磁场干扰。以上的缺点,对大多数无人机来说,包括大疆,都是致命的。可在Mark面前,却根本不算事儿,可能这也是为什么它在国外众筹平台Kickstarter上筹了977%款

  • 连锁会员管理系统可以帮助企业店铺做哪些工作

    经常有一些开店的商家会问:“一般像我们这样的店在连锁会员管理方面可以做哪些优化工作?”“连锁店铺的会员管理方面你有什么好的方案建议吗?”诸如此类的问题。其实,这些问题了解起来是不难的,一切优化工作的实现也都是通过使用连锁会员管理系统来达成的。下面小编就带领广大商家一起来学习一下。连锁店铺使用连锁会员管理系统可以做以下工作:1、完善规范的会员制度,包括会员卡的使用规则、密码管理制度、挂失补办会员卡制度、会员卡的等级优惠制度、积分制度等这些与会员卡相关的使用规则都应该规范、公开化,因为会员制度必须是

  • 区块链世界看输赢

    4年一届的世界伴随着球迷的呼声完美落幕,有因赢球得意的,有因输球失落的。但不管结局怎么样,世界杯决赛中,法国队获胜,亦或是克罗地亚队获胜,世界杯的热潮都已经消退了。但是区块链的热潮不会消退。区块链跟踢球一样,区块链世界里也有输赢。区块链由最初的遭受质疑到现在的影响各大行业的发展,其中经历了多少次输赢,已无人悉知。说区块链是一块蛋糕,也不可质否。区块链火起来之后,人人都想瓜分区块链这块蛋糕,当然还会有一些吃瓜群众在观望。区块链技术自实现第一个应用落地以来,越来越多应用场景得以实现,2018年,区块

  • 液压扭矩扳手的使用步骤

    液压扭矩扳手是一个工业强度的扭矩扳手,它有发挥强大的扭矩大螺栓头的能力,通常主要用于工业管道工程,石油钻探和其他大量的工业结构。那如何使用液压扭矩扳手呢?看了下面的步骤,你会得心入手哦!第1步:安装件当您的液压扭矩扳手被拆除时,你将不得不为了使用它来组装它。请将软管连接到电源包和液压转矩扳手的另一端。,并拧紧任何接头,以确保三件液压扭矩扳手组之间所有连接的安全。当然排序也是非常重要的,你不应该改变设置指南中的解释。第2步:调整所有的液压扭矩扳手都有可调节的设置,当您使用它时,您可以在其中设置正确