上一篇我们讲到了,怎么让计算机理解人类的语言,那就是构建让计算机可以理解的one-hot向量,
但是由于语料库太庞大,one-hot容易导致维度灾难,并且不能计算词之间的相似性,所以我们引入了Word Embedding的概念。
Word Embedding 在one-hot的基础上压缩了描述语料库的维度,从原先的V-dim降低为了自己设定的K值,Word Embedding是Word2Vecmo模型的中间产物,是在不断最小化损失函数时候,不断迭代更新生成的。
PS: word2vec的经典之作 Xin Rong 论文
本篇文章介绍了基于窗口的共现矩阵的方法,引入GloVe。最后介绍了内部和外部词向量评估机制
Window based co-occurrence matrix
什么为共线矩阵(co-occurrence matrix )?
这种方法存在以下问题:
词汇增加,维度增加
高纬度,需要大量存储空间
后面分类模型存在稀疏性问题,导致模型不健壮
解决办法:降维——如何降?
对共现矩阵进行奇异值分解(SVD)
但是一些功能词(the, he, has)出现太过频繁,对语法(syntax)影响较大,上图所示的效果并不十分理想,需要对进行改进:
- 限制高频词的频次,min(X,t),with t~100 ,或者干脆忽略这些高频词
- 增加的窗口更精确地计算相近的单词(ampedwindows that count closer words more)用皮尔逊相关系数( Pearson correlations)代替词频(counts),然后将负值设置为0。
GloVe模型
- 模型目标:进行词的向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息
- 输入:语料库
- 输出:词向量
GloVe目标是综合基于统计和基于预测的两种方法的优点。
模型目标:词进行向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息
流程:输入语料库–> 统计共现矩阵–> 训练词向量–>输出词向量
目标函数:
How to evaluate word vectors?
1.Intrinsic:内部词向量评估:词向量类比。
通过对词向量的余弦距离分析可得到直观的语义和语法问题。
通过Glove可视化,会发现这些类推的向量是近乎平行的。
关于调参:
- 维度最好为0-300,但对于downstream的任务可能不同。
- 不对称的上下文(只对左边的单词)结果不太好
- 窗口大小为8的对称窗口对Glove向量效果好。
- 更长的训练时间会帮助提升模型的效果
- 更多的数据
2.Extrinsic:实体命名识别会起到很大的帮助
Word senses and word sense ambiguity
关於单词歧义的消除:通过对上下文的聚类分门别类地重新训练