NLP-词向量和文本向量

一、什么是词向量

词向量(Word embedding)是自然语言处理(NLP)领域中的一种语言建模和特征学习技术,它将词汇表中的单词或短语映射到实数向量。

1、词向量的表示方法主要有以下两种:

  • 独热向量(One-hot encoding)
  • 分布式表示(Distributed representation)

 2、词向量的示意图:

二、独热向量(One-hot encoding)

1、什么是one-hot编码

  • one-hot编码是一种传统的表示方法,其中每个单词都被表示为一个高维向量,向量的维度等于词汇表的大小。在该向量中,除了对应单词位置的元素为1外,其余元素均为0。这种表示方法简单直观,但无法表达单词之间的相似性和关联性。

2、one-hot编码的表示

1、对一句话表示

  • 首先将一句话进行分词例如:[“我”,“爱”,“我的”,“祖国”]
  • 将每个词进行编码:
    • “我”表示为[1,0,0,0]
    • “爱”表示为[0,1,0,0]
    • “我的”表示为[0,0,1,0]
    • “祖国”表示为[0,0,0,1]
    • “我爱我的祖国则表示为:[1,1,1,1]
    • “我爱祖国表示为”:[1,1,0,1]

2、在对文本向量化时,也可以考虑词频 

  • 你好:[0,0,0,1,0]
  • 你好 你好:[0,0,0,2,0]                 

3、one-hot编码的缺点

  • 如果有很多词,编码向量维度会很高,而且向量十分稀疏(大部分位置都是零),计算负担很大(维度灾难)
  • 编码向量不能反映字词之间的语义相似性,只能做到区分 

 三、分布式表示(Distributed representation)

与独热向量不同,分布式表示使用较低维度的连续向量来表示单词,这些向量通过训练模型学习得到,能够反映单词之间的语义相似性。分布式表示方法包括Word2Vec、GloVe和FastText等。

1、Word2Vec

  • 我们希望得到一种词向量,使得向量关系能反映语义关系,
  • 比如: cos(你好, 您好) >  cos(你好,天气)
  • 即词义的相似性反映在向量的相似性
  • 国王 - 男人 = 皇后 -女人
  • 即向量可以通过数值运算反映词之间的关系 
  • 不管有多少词,向量维度应该是固定的

Word embedding 和 Word vector

  • 本质上是一样的,都是以向量代表字符
  • 一般说Word Embedding是指随机初始化的词向量或字向量
  • Word2Vec一般指一种训练Word Embedding的方法,使得其向量具有一定的性质(向量相似度反映语义相似度) 

我们用PaddleNLP进行相关的演示:

使用如下命令确保安装最新版PaddleNLP:

pip install --upgrade paddlenlp
import paddle
import paddlenlp

# 查看版本
# print(paddle.__version__)
# print(paddlenlp.__version__)

from paddlenlp.embeddings import list_embedding_name
# paddle.set_device("cpu")
# 查看预训练embedding名称
print("name:",list_embedding_name())

from paddlenlp.embeddings import TokenEmbedding

# 初始化TokenEmbedding, 预训练embedding未下载时会自动下载并加载数据
token_embedding = TokenEmbedding(embedding_name="w2v.baidu_encyclopedia.target.word-word.dim300")

# 查看token_embedding详情
print(token_embedding)


score1 = token_embedding.cosine_sim("男孩", "男生")
score2 = token_embedding.cosine_sim("男生", "书籍")
print('score1:', score1)
print('score2:', score2)

one-hot编码\rightarrowword vectors

  • 将整个embedding矩阵看作一个线性层
  • Onehot 编码作为输入
  • word embedding 权重矩阵        

 2、词向量的训练

2.1基于语言模型

做出假设:每段文字中的某一个词,由他前面的n个词来决定

例如:今天 天气 真好 适合 愉快的 跑

  • 今天\rightarrow天气
  • 今天 天气\rightarrow 真好
  • 今天 天气 真好\rightarrow适合
  • 今天 天气 真好 适合\rightarrow愉快的
  • 今天 天气 真好 适合 愉快的 \rightarrow

示例代码:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天黑速遛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值