专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
爱可可-爱生活  ·  【[395星]chromem-go:为Go语 ... ·  昨天  
爱可可-爱生活  ·  【Stanford CS236 Deep ... ·  昨天  
宝玉xp  ·  //@爱水de鱼儿:好答案来自于好问题 ... ·  3 天前  
机器学习研究组订阅  ·  o3-mini物理推理粉碎DeepSeek ... ·  4 天前  
新智元  ·  o3-mini物理推理粉碎DeepSeek ... ·  5 天前  
51好读  ›  专栏  ›  机器学习研究会

干货|10分钟快速入门PyTorch (7) 词向量

机器学习研究会  · 公众号  · AI  · 2017-09-26 23:28

正文

10分钟入门PyTorch系列笔记

10分钟快速入门PyTorch(1)

干货|10分钟入门PyTorch(2)~附源码

干货|PyTorch中如何使用tensorboard可视化


Word Embedding


在自然语言处理中词向量是很重要的,首先介绍一下 词向量


之前做分类问题的时候大家应该都还记得我们会使用one-hot编码,比如一共有5类,那么属于第二类的话,它的编码就是(0, 1, 0, 0, 0),对于分类问题,这样当然特别简明,但是对于单词,这样做就不行了,比如有1000个不同的词,那么使用one-hot这样的方法效率就很低了,所以我们必须要使用另外一种方式去定义每一个单词,这就引出了word embedding。


我们可以先举三个例子,比如

  • The cat likes playing ball.

  • The kitty likes playing wool.

  • The dog likes playing ball.

  • The boy likes playing ball.


假如我们使用一个二维向量(a, b)来定义一个词,其中a,b分别代表这个词的一种属性,比如a代表是否喜欢玩飞盘,b代表是否喜欢玩毛线,并且这个数值越大表示越喜欢,这样我们就可以区分这三个词了,为什么呢?


比如对于cat,它的词向量就是(-1, 4),对于kitty,它的词向量就是(-2, 5),对于dog,它的词向量就是(3, -2),对于boy,它的词向量就是(-2, -3),我们怎么去定义他们之间的相似度呢,我们可以通过他们之间的 夹角 来定义他们的相似度。



上面这张图就显示出了不同的词之间的夹角,我们可以发现kitty和cat是非常相似的,而dog和boy是不相似的。


而对于一个词,我们自己去想它的属性不是很困难吗,所以这个时候就可以交给神经网络了,我们只需要定义我们想要的维度,比如100,然后通过神经网络去学习它的每一个属性的大小,而我们并不用关心到底这个属性代表着什么,我们只需要知道词向量的夹角越小,表示他们之间的语义更加接近。


下面我们使用pytorch来实现一个word embedding

Code

在pytorch里面word embedding实现是通过一个函数来实现的nn.Embedding

word_to_ix = {'hello': 0, 'world': 1}

embeds = nn.Embedding(2, 5)

hello_idx = torch.LongTensor([






请到「今天看啥」查看全文