CS224N(NLP)组队学习-L2 Word Vectors2 and Word Senses

1. 学习内容

1. 了解word2vector的具体实现方法

2. 介绍其他实现方法

本项目参见https://github.com/datawhalechina/team-learning/tree/master/04%20%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86

2. Word2vector的实现细节

Word2vector是计算单词词向量的一种方式。它的核心思想是预测每个单词和上下文单词之间的关系。具体实现算法有Skip-gram(SG)和CBOW。前者是通过中心词计算外部词,后者是通过外部词计算中心词。在实际计算的过程中,不得不要考虑到一些时空上的局限性,例如梯度下降法和softmax的计算在高维度下将耗费大量时间。对于梯度下降,可以考虑用随机梯度下降法来进行取代。而对于softmax,则可以考虑用负采样的方式来进行取代。

我们可以人为地构造一些词对,视其中一个为外部词,另一个为中心词。如果它们是存在关系的(也就是说放在一起是合理的),将它们的标签记为1。同理,我们还可以构造大量的不合理的词对并记它们的标签为0。对于一个词,我们可以构造几个合理的词对和更多的不合理的词对。对它们进行训练。这样就可以在数学上减小计算量[1]。

3. Count-Based

假如我们收集了足够多的句子,我们可以从中统计语料中所有两两组成的词对在同一句话中出现的次数。这样我们就可以得到一个共现矩阵。

假设有如下三句话:

I like deep learning.

I like NLP.

I enjoy flying.

那么得到的共现矩阵就应该是:

CS224N(NLP)组队学习-L2 Word Vectors2 and Word Senses_第1张图片 图3.1 共现矩阵

这是一个实对称矩阵,因此可以考虑使用像SVD这样的方法对矩阵进行分解,并将奇异矩阵中的向量作为词向量。

这个方法训练快速,并且有效利用了统计信息,但缺点是对于高频词汇较为偏向。

实际上,该方法与上面的SG和CBOW方法属于两种不同的思路。前者是从全局角度来计算词向量的,而后者是站在局部的角度来计算的。它们各有利弊。

4. GloVe

正是由于全局和局部都存在弊端,所以人们就想可否将二者结合起来得到一个更加有效的新方法。最后,这门课的主讲老师提出了这个算法。GloVe实际上是用词语上下文的关系来丰富共现矩阵。该方法可以快速训练,可以扩展到大型语料库,即使具有较小的语料库和较小的向量也表现良好。

5. 参考文献

1. https://blog.csdn.net/wuzhongqiang/article/details/106979179

2. https://zhuanlan.zhihu.com/p/42073620

你可能感兴趣的:(Datawhale,Team,Learning,nlp)