pytorch 的embeding

17 篇文章 0 订阅
14 篇文章 7 订阅

pytorch提供word embeding的功能来构建词向量,非稀疏向量。我们来看看他的定义方式:

import torch.nn as NN
import torch
from torch.autograd import Variable
embeding=NN.Embedding(6,5)
print(embeding.weight)

输出:

Parameter containing:
tensor([[ 1.8258, -1.8348, -1.2096,  1.0891,  0.0996],
        [ 0.3915,  0.6089,  1.4112,  0.2724, -0.3034],
        [ 1.3619,  0.2148, -0.2694, -0.6444, -0.6987],
        [ 1.4956,  0.3266, -0.3316, -0.9657,  0.6713],
        [ 0.3749, -0.9375, -0.8220, -1.3379,  0.1247],
        [-1.4812,  0.1289,  0.8787, -1.0455,  0.9147]])

这里NN.Embedding(6,5)两个参数第一个是指词典中词的个数,后面一个是词向量维度。如输出所示这样我们就构建一个词典大小为6,向量维度为5的向量库。

词典应该怎么构造呢?词典应该有词和索引,所以可以用dict来构造:

word_to_index={'中':[0],'国':[1],'我':[2],'的':[3],'母':[4],'亲':[5]}

注意,key是中文字符,value要是list。这个词典大小为6,,那么可以用定义好的embedding来构造词向量:

index=Variable(torch.LongTensor(word_to_index['中']))
print(embeding(index))

输出

tensor([[ 0.8598,  0.3122,  0.8926, -0.9521,  0.1800]])

这就得到‘中’这个字的word vector。

同理sentence vector可以如下表示:

index=[word_to_index['中'],word_to_index['国'],word_to_index['我'],word_to_index['的'],word_to_index['母'],word_to_index['亲']]
index=Variable(torch.LongTensor(index))
print(embeding(index))

输出

tensor([[[-0.2161,  0.2320,  0.2735, -0.1969, -0.7603]],

        [[ 1.0680,  1.1965,  0.6511,  1.4256, -0.7490]],

        [[ 0.3841, -0.5595, -0.9003, -1.2678, -1.4317]],

        [[ 1.2867,  0.0704,  0.4049, -1.6118,  0.7231]],

        [[-0.8996,  0.3947,  0.3799,  0.1408, -0.3430]],

        [[ 2.0890,  0.6255,  0.7351, -0.4562, -1.0978]]])

可见embedding的原理就是随机生成词向量给每个词。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值