十六、词向量总结

词向量总结

1. 基于离散的词向量表示方法

1.1 单词的向量化

  • One-Hot编码:每一个词使用一个长度为N的向量表示,N表示词典的数量。假设我们有一个文档:深度学习,那么进行one-hot处理后的结果如下:
    在这里插入图片描述

1.2 文本的向量化

  • 词袋模型:使用词频作为文本的向量表示.
  • TF-IDF:使用词权重作为文本的向量表示.
  • 词汇表:{'orange':3,‘banana’:1,‘apple’:0, 'grape':2}
    在这里插入图片描述

1.3 词向量表示方法的缺点

  • 无法衡量词向量之间的关系
  • 词表维度随着语料库增长膨胀
  • 数据稀疏问题
    在这里插入图片描述

2. 基于分布式的词向量表示方法

2.1 分布式的词向量表示方法

  • CBOW:根据上下文预测中心词
  • Skip-Gram:根据中心词预测上下文
    在这里插入图片描述

2.2 分布式的词向量表示的优缺点

  • 优点:
    • 由于 Word2vec 会考虑上下文,比之前的方法维度更少,所以速度更快.
    • 通用性很强,可以用在各种 NLP 任务中.
  • 缺点:
    • 由于词和向量是一对一的关系,所以多义词的问题无法解决.
    • Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化.

2.3 Word Embeding的表示

  • Word Embedding使用了浮点型的稠密句子表示词向量.
  • 形象的表示就是:
    在这里插入图片描述

2.4 Word Embedding的实现过程

  • 首先把单词使用数字来表示,再把数字使用向量来表示.
  • 单词–>数字----->向量:

在这里插入图片描述

2.5 Wode Embeding数据的形状变化

在这里插入图片描述

2.6 完整代码

# coding:utf-8

from sklearn.feature_extraction.text import CountVectorizer
import torch
from torch import nn as nn

texts = ["orange banana apple grape dineapple",
         ] # 语料库

cv = CountVectorizer() # 词袋模型对象
cv_fit = cv.fit_transform(texts) # 完成文本到向量的表示
print(cv.vocabulary_) # 词汇表
print(cv_fit.toarray()) # 文本向量表示的数组格式

"""
词向量
"""
# Embedding(num_embeddings,embedding_dim)
embedding = nn.Embedding(len(cv.vocabulary_), 7)  # 5个词,每个词3维
input = torch.tensor(cv_fit.toarray())

output = embedding(input)
print(output) # (4, 5, 3)
print(embedding.weight.size())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值