词向量
我们以句子分类为例,我们使用深度学习模型对句子进行分类,本质上这个模型的接受的舒服需要是数值型。因为文字是人们抽象出来的一个概念,这个
东西是不能被计算机直接理解的,我们需要人为的将这个文字转为数值,换句话讲,我们需要把这个文字嵌入到一个数学空间中去,这中嵌入方式就是词嵌入方式。
Word2vec 就是词嵌入的一种方式(word embedding)
对于有监督的一个机器学习过程,我们可以这么理解这个模型,是一个 f(x) -> y 的映射关系。
在NLP中,x代表的是句子中的一个词,y是这个词的上下文词语,那么这里的f代表的就是NLP中出现的语言模型(language model),这个模型的目的,
最根本的就是判断(x,y)这个样本是否符合自然语言的法则,通俗点将,就是说x和y放在一起是不是人话。
关于语言模型来讲,
如果用一个词语作为输入,来预测它周围的上下文,这个模型我们称之为 skip-gram模型
如果用一个词语的上下文作为输入,来预测这个词语的本身,则是 CBOW 模型
[NLP] 秒懂词向量Word2vec的本质 - 穆文的文章 - 知乎
https://zhuanlan.zhihu.com/p/26306795
word2vec是如何得到词向量的? - crystalajj的回答 - 知乎
https://www.zhihu.com/question/44832436/answer/266068967
Word Embedding 如何处理未登录词? - 韦阳的回答 - 知乎
https://www.zhihu.com/question/308543084/answer/576517555
引申
哈哈,之前也突然懵逼过,word2vec那么简单,那么用的是输入还是输出矩阵?个人感觉,两者都可以用,甚至可以拿输入矩阵转置作为输出矩阵,也没必要存储两个矩阵,不管CBOW还是skip-gram都能保证相似语境下的相关性。主要是w2v太简单了,纯粹是内积运算,本身是对称的。其他例如fasttext或doc2vec就不太一样,加入了side infomation,更极端DNN中常用的embdding,都不能脱离网络直接拿来用了。相似性度量方法太多了,分应用场景吧,w2v本身就是内积,用cos很合适,还归一化了。
另外不知道item2vec是不是真的有效,在i2i挖掘上,graph embedding真的是神器。
不得不说,w2v虽然简单,但是影响了很多模型应用,五体投地了~
上面这个文字见下面这个文章的评论
万物皆Embedding,从经典的word2vec到深度学习基本操作item2vec - 王喆的文章 - 知乎
https://zhuanlan.zhihu.com/p/53194407