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

教程 | 用数据玩点花样!如何构建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 个点。来自http://www.qi-wen.com/

看看下面的片段。

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

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

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

Word2Vec 和 Skip-Gram 模型

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

这些词向量可以很好地捕捉单词之间的上下文关系(例如,黑色、白色和红色的示例向量会紧密地结合在一起),而且使用这些向量(而不是单词本身)来完成文本分类或新文本生成等自然语言处理(NPL)任务,会得到更好的结果。教程 | 用数据玩点花样!如何构建skim-gram模型来训练和可视化词向量

有两个主要的模型来生成这些词向量——连续词袋(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 模型能产生更好的词向量,所以我将重点放在实现这个模型上。说明qi-wen.com

在 Tensorflow 中实现 Skip-Gram 模型

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

1. 数据预处理

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

2. 子采样

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

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

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

  • OTA平台还有竞价排名? 它又不是搜索引擎

    文:翟菜花旅游出行在经历了从最开始路线固定、容易被消费捆绑的跟团式,逐渐演变到如今自由选择路线地点的自行出游,在线旅行社平台(以下简称OTA平台)已经是当下用户旅游出行的首选。凭借着便捷、迅速、全面的服务特点,OTA平台迅速在旅行市场打下半壁江山,后续发展也愈显蒸蒸日上。然而,靠着预订赚取佣金起家的OTA,却陷入了“竞价排名”的质疑之中,觉得方差好大。我们先来看下什么是竞价排名。所谓竞价排名,基本只与搜索引擎挂钩,特点是按点击付费,推广信息出现在搜索结果中(一般是靠前的位置),如果没有被用户点击

  • 就在这几年,微店是如何一步步走下神坛的?

    最近36氪报道,曾经的独角兽,微店所在公司口袋购物正在经历严重的人员动荡,有微店员工爆料,除了大半年内离职了300多人外,微店创立时的两位技术合伙人马飞和吴道钰也相继离职。另一面,微店曾经的对手有赞,其CEO白鸦发出内部信表示,与中国创新支付公司达成协议,其用55亿股股票换有赞51%的股份,这也意味着有赞借壳上市成功,按当前每股0.58港币的价格计算,有赞估值接近60亿港币。如果不是相关媒体爆料,很多业内人士甚至已经忘记了微店这匹曾经的黑马,而微店的衰落与有赞的华丽上市也形成了鲜明对比,正所谓三

  • 小程序已成企业新标配,BAT决战小程序的商业逻辑

    自从张小龙把应用号改为“小程序”后,关于小程序的产品动向一直令开发者和创业者心驰神往,当前的小程序开发热逐渐有了七年多前的安卓开发的盛况。从做一个App走上人生巅峰,到做一个公众号估值千万,到如今已有爆款小程序、小程序服务平台等拿到一线VC的巨额融资,连独角兽捕手朱啸虎在不同场合表态,“别看区块链了,赶紧去小程序创业啊!”当我们谈起“小程序”时,在语境一般指代的是“微信小程序”,这有点儿不公允,支付宝在去年也做了小程序,淘宝会员码店铺也像小程序;百度才是最早的小程序鼻祖,从轻应用(lightAp

  • 软银拟购入蔚来汽车大笔股份

    PingWest品玩4月26日报道,据《华尔街日报》报道,其从消息人士处获得消息,日本软银集团正在与中国电动汽车厂商蔚来谈判,拟在后者即将到来的首次公开募股(IPO)中购买一大笔股份,此举或帮助将蔚来汽车的估值提高数十亿美元。消息人士称,软银可能会在蔚来IPO中购入价值2亿美元的股份,而蔚来希望在IPO中融资20亿美元至30亿美元。目前,与软银的谈判仍在进行之中,计划仍有可能改变。软银和蔚来汽车的代表拒绝置评。此前,有消息称蔚来汽车已经聘请包括摩根士丹利和高盛在内的八家银行,为今年赴美上市做好准

  • V领地完成A轮2亿美金融资 正式推出Smart系列产品

    科技观察线4月26日消息,V领地青年社区在上海国际会议中心举办“V星崛起”发布会,宣布完成由华平投资通过其控制的境内实体领投的2亿美元A轮融资。并发布与展示了全新升级的Smart系列产品,在空间、智能化生活服务及共享社交三方面同步创新,打造灵动舒适、绿色健康、智能现代的居住环境,开启V领地青年社区的生活艺术美学。社区化长租公寓:新租赁时代的美好生活载体伴随着人们居住需求的不断变化,居住环境也经历了由内到外、硬件到软件的升级。由最基础的居住需求,到对舒适化和品质化的居住空间,再到对便捷的新型社区生

  • 小米硬件税后利润永远不高于5%:能否落实只能看雷军良心?

    小米公司董事长雷军日前在其母校武汉大学召开新闻发布会,除了发布新机小米6X,还宣布从现在起小米每年整体硬件业务(包括手机及IoT和生活消费产品)综合税后净利率不超过5%。如超过将把超过5%的部分用合理的方式返还给小米用户,此次发布的小米6X售价1599元起,雷军认为6X成本已经比5X高了很多,但与友商相比,还是基本做到相同配置,一半价格。此言一出,大量网友表示褒贬不一,有不少米粉为雷军点赞,认为小米此举将为业界树立标杆,净利润率5%更多是对手机行业的思考。OPPO,vivo重金砸广告和线下渠道,

  • B2B电子商务1688店铺如何组好全年营销运营规划?

    写在前面今天,受1688集团小二之邀,在线分享了一堂课程。是关于加工定制类商家的全年营销规划的。这是一篇价值上万的干货,浓缩精华版的,希望对你们有启发!PPT课程大纲加工定制类商家面临的痛点加工定制类商家,客户很少做在线交易。搜索排名低,活动场景少;小客户居多,维护成本高。甚至有的商家想花钱都花不出去。如此现状之下,如何做全年的销售目标规划?如何制定全年销售目标三大法则:1、一切都是历史起用,参考行业数据;2、聪明的目标法则;3、店铺的生命周期。如何做营销预算?投入10万100万还是其他的?通过

  • 36氪首发 | 健康饮食品牌「乐纯」完成数亿元人民币战略融资,领投方为可口可乐

    36氪获悉,健康饮食品牌「乐纯」获可口可乐领投数亿元人民币战略投资,老股东IDG资本、真格基金、大河资本、麦星投资等全部跟投,值得一提的是,本次融资也是可口可乐在亚洲地区首次对一家创业公司的战略投资和合作。除了融资,乐纯也将和可口可乐在产品创新、渠道创新、数字化创新以及创新品牌孵化等多个领域进行战略合作,这四个方面也是可口可乐本次投资乐纯的主要逻辑,可口可乐大中华及韩国区总裁冯广晟提到,可口可乐十分看重中国消费市场,通过用户洞察和数字化的创新来促进产品创新,乐纯的产品、业务和运营模式,以及用户驱