本文主要是介绍cs224n Lecture 3: GloVe skipgram cbow lsa 等方法对比 / 词向量评估 /超参数调节 总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
生成词向量的方法
以前大致有两种方法:
①是Matrix Factorization Method,主要代表是SVD Based的LSA等方法,核心是对共现矩阵(co-occurence)进行SVD(奇异值)分解,得到词向量。
②是Iteration Based Method(Shallow window-based),主要代表是上节课讲到的Skip-Gram和CBOW。核心是概率,通过设置滑窗、中心词、找到语境词,对语料进行循环、迭代,使概率最大。
而最新的是:
③GloVe模型(Global Vectors,全局向量),把上述两种方法结合了一下,克服了两者的弱点。
SVD Based
SVD Based的种类
①是基于词库(Word document)的。这个词库,也就是不同的类别,比如有动物类别(dog/cat/pig等),细分一点,还可以分为哺乳动物、啮齿动物、鸟类等等。然后,把单词表的每一个单词,进行分类:比如"bank银行"、"bonds债务"、"stocks股份"、"money钱",它们很明显都会分到"finance金融"这个类,以此类推。最终形成了一个庞大矩阵(类别数量M*单词表数量V)。很明显,类别分得越细(M越大)、词量越大(V越大),效果越好,但带来的坏处是,矩阵将会十分十分庞大,而对其进行SVD分解,更耗费时间和计算机资源!显然需要改进。
②除了用上述“分类”的方法来构建共现矩阵外,还可以使用类似Skip-Gram的“滑窗”来构建,这也就是基于滑窗的方法,看一个例子:
假设我们有一个很简单的语料,三个句子:
设置滑窗大小为1,那么出现的词对有(这里.作为终止符EOF也要统计进去):
I enjoy、enjoy flying、flying .、I like、like NLP、NLP .、I like、like deep、deep learning、learning .。
然后统计成一个表格,这个表格就是基于“滑窗”的共现矩阵:比如I在like的上文出现了2次,所以计数就是2。
接下来,对这个矩阵进行SVD分解,选择前k个最大的奇异值,找到其对应的向量作为词向量即可。
这篇关于cs224n Lecture 3: GloVe skipgram cbow lsa 等方法对比 / 词向量评估 /超参数调节 总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!