05词向量表示理论篇

一、离散表示

1、词离散表示:One-hot 表示

语料库:

李杏 喜欢 喝 奶茶 
诗雅 也 喜欢 喝 奶茶
李杏 同样 喜欢 喝 果汁  

词典:

{“李杏”:1,”喜欢”:2,”喝”:3,”奶茶”:4,”诗雅”:5,”也”:6,”同样”:7,”果汁”:8}

One-hot 表示:

李杏:[1,0,0,0,0,0,0,0] 
喜欢:[0,1,0,0,0,0,0,0] 
… 
果汁:[0,0,0,0,0,0,0,1]

注意:

词典包含8个单词,每个单词有唯一索引  
在词典中的顺序和在句子中的顺序没有关联

2、句子离散表示:Bag of Words

1)文档的向量表示可以直接将各词的词向量表示加和

李杏 喜欢 喝 奶茶 →[1,1,1,1,0,0,0,0]
诗雅 也 喜欢 喝 奶茶→[0,1,1,1,1,1,0,0]
李杏 同样 喜欢 喝 果汁→[1,1,1,0,0,0,1,1]
from IPython.display import Image

Image(filename=r"C:\Users\Administrator.DESKTOP-36E16C6\Desktop\课程\结果截图\tfidf.png")

2)TF-IDF (Term Frequency-Inverse Document Frequency)

文档总数n=3
含某关键词w的文档数df(w)
idf=log(1+n)/(1+df(w))+1
df(w) idf
李杏 2 log(1+3)/(1+2)+1
喜欢 3 log(1+3)/(1+3)+1
3 log(1+3)/(1+3)+1
奶茶 2 log(1+3)/(1+2)+1
诗雅 1 log(1+3)/(1+1)+1
1 log(1+3)/(1+1)+1

bag of words的缺点:丢失了词语在句子中的前后顺序信息。

3、离散表示的问题

无法衡量词向量之间的关系
太稀疏,很难捕捉文本的含义
词表维度随着语料库增长膨胀

二、定义人启发→定义词启发

人类定义 :
在我们一群人种区分出诗雅和李杏:

人名 是否是男生 是否是长头发 是否喜欢喝奶茶 是否戴眼镜
诗雅 0 0 1 1
李杏 0 1 1 0

诗雅-李杏→是否长头发、是否戴眼镜的区别

↑随着词库的增加,人为定义特征难度增大,准确度下降。
那某个词是否可以由其上下文来表示该词呢?即如果两个词的上下文相似,那么这两个词也是相似的↓

三、分布式表示(Distributed representation)

Distributional Representation是从分布式假设(即如果两个词的上下文相似,那么这两个词也是相似的)的角度, 利用共生矩阵来获取词的语义表示,可以看成是一类获取词表示的方法

一段文本的语义分散在一个低维空间的不同维度上,相当于将不同的文本分散到空间中不用的区域。

bag of word→(上下文表示)→N-gram→(降维)→NNLM(RNNLM)→(减少模型复杂度)→word2vec

NNLM

NNLM(Neural Network Language model)

直接从语言模型出发,将模型最优化过程转化为求词向量表示的过程。  

要点

根据**前 n-1** 个单词,预测第t个位置单词的概率。
使用了非对称的前向窗函数,窗长度为 n-1 
滑动窗口遍历整个语料库求和,计算量正比于语料库大小 
概率P满足归一化条件,这样不同位置t处的概率才能相加,即 

word2vec

要点

1)学习一个从高维稀疏离散向量到低维稠密连续向量的映射。  
2)该映射的特点是,近义词向量的欧氏距离比较小,词向量之间的加减法有实际物理意义。  
3)Word2Vec由两部分组成:CBoW和Skip-Gram。  
4)CBoW的结构很简单,在NNLM的基础上去掉隐层,Embedding层直接连接到Softmax,CBoW的输入是某个Word的上下文(例如前两个词和后两个词),
   Softmax的输出是关于当前词的某个概率,即CBoW是从上下文到当前词的某种映射或者预测。Skip-Gram则是反过来,从当前词预测上下文,至于
   为什么叫Skip-Gram这个名字,原因是在处理过程中会对词做采样。 

过程:

输入上下文单词ont-hot→“随机压缩成n维”→求和,求平均→w词向量

下面使用一个类似word2vec的构思的例子,注意不是word2vec原理阐述

语料:

李杏 喜欢 喝 奶茶 
诗雅 喜欢 喝 果汁  

窗口:
取前三个词

简易版计算:

w=奶茶
w的前三个词: 李杏、喜欢、喝  
李杏:[1,0,0,0,0,0,0,0]   
喜欢:[0,1,0,0,0,0,0,0]   
喝:[0,0,1,0,0,0,0,0]   
w的表示为: 李杏、喜欢、喝这三个词的的向量相加,即:  
[1,1,1,0,0,0,0]  

w=果汁  
w的前三个词: 诗雅、喜欢、喝  
诗雅:[0,0,0,0,1,0,0,0]   
喜欢:[0,1,0,0,0,0,0,0]  
喝:[0,0,1,0,0,0,0,0]  
w的表示为: 诗雅、喜欢、喝这三个词的的向量相加,即:  
[0,1,1,0,1,0,0,0]    

结论:

由上可得:果汁和奶茶的相似度较高,即即如果两个词的上下文相似,那么这两个词也是相似的

word2vec学习过程举例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CBOW(连续词袋)CBOW(连续词袋)
Skip-Gram模型Skip-Gram模型

猜你喜欢

转载自blog.csdn.net/qq_38630608/article/details/86479770