word2vec 词向量怎么来的
2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。
首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。
随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。
其实word2vec算法的背后是一个浅层神经网络。
另外需要强调的一点是,word2vec是一个计算word vector的开源工具。
当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。
很多人以为word2vec指的是一个算法或模型,这也是一种谬误。
接下来,本文将从统计语言模型出发,尽可能详细地介绍word2vec工具背后的算法模型的来龙去脉。
详情:网页链接
word2vector是什么与传统one
展开全部优点一:One-hot形式实为索引形式,单词向量维度为词表长度,文本矩阵是一个稀疏矩阵,而word2vector可以通过指定合适的词向量维度对其进行降维,将文本矩阵压缩密集矩阵,减小了所需的存储空间;优点二:One-hot形式下不同词语之间相似度都为0,割裂了词与词之间的联系,word2vector形式通过降维提取出了低维特征,使不同词语之间有了“距离”的远近,这种内在联系可以使后续的处理效果提升。
暂时想到这两点,欢迎补充。
...
如何通过词向量技术来计算2个文档的相似度
最近正好组内做了一个文档相似度的分享。
决定回答一发。
首先,如果不局限于NN的方法,可以用BOW+tf-idf+LSI/LDA的体系搞定,也就是俗称的01或one hot representation。
其次,如果楼主指定了必须用流行的NN,俗称word-embedding的方法,当然首推word2vec(虽然不算是DNN)。
然后得到了word2vec的词向量后,可以通过简单加权/tag加权/tf-idf加权等方式得到文档向量。
这算是一种方法。
当然,加权之前一般应该先干掉stop word,词聚类处理一下。
还有,doc2vec中的paragraph vector也属于直接得到doc向量的方法。
特点就是修改了word2vec中的cbow和skip-gram模型。
依据论文《Distributed Representations of Sentences and Documents》(ICML 2014)。
还有一种根据句法树加权的方式,是ICML2011提出的,见论文《Parsing Natural Scenes and Natural Language with Recursive Neural Networks》,后续也有多个改编的版本。
当然,得到词向量的方式不局限于word2vec,RNNLM和glove也能得到传说中高质量的词向量。
ICML2015的论文《From Word Embeddings To Document Distances, Kusner, Washington University》新提出一种计算doc相似度的方式,大致思路是将词之间的余弦距离作为ground distance,词频作为权重,在权重的约束条件下,求WMD的线性规划最优解。
最后,kaggle101中的一个word2vec题目的tutorial里作者如是说:他试了一下简单加权和各种加权,不管如何处理,效果还不如01,归其原因作者认为加权的方式丢失了最重要的句子结构信息(也可以说是词序信息),而doc2vec的方法则保存了这种信息。
在刚刚结束的ACL2015上,似乎很多人提到了glove的方法,其思想是挖掘词共现信息的内在含义,据说是基于全局统计的方法(LSI为代表)与基于局部预测的方法(word2vec为代表)的折衷,而且输出的词向量在词聚类任务上干掉了word2vec的结果,也可以看看。
《GloVe: Global Vectors forWord Representation》
word2vec两次训练出来的词向量模型一样吗
对数的性质及推导 用^表示乘方,用log(a)(b)表示以a为底,b的对数 *表示乘号,/表示除号 定义式: 若a^n=b(a>0且a≠1) 则n=log(a)(b) 基本性质: 1.a^(log(a)(b))=b 2.log(a)(MN)=log(a)(M)+log(a)(N); 3.log(a)(M/N)=log(a)(M)-log(a)(N); 4.log(a)(M^n)=nlog(a)(M)...
怎样用word2vec来得到某几个词的向量表示
:将one-hot向量转换成低维词向量的这一层(虽然大家都不称之为一层,但在我看来就是一层),因为word2vec的输入是one-hot。
one-hot可看成是1*N(N是词总数)的矩阵,与这个系数矩阵(N*M, M是word2vec词向量维数)相乘之后就可以得到1*M的向量,这个向量就是这个词对应的词向量了。
那么对于那个N*M的矩阵,每一行就对应了每个单词的词向量。
接下来就是进入神经网络,然后通过训练不断更新这个矩阵。
怎么用word2vec 训练的词向量
最近正好组内做了一个文档相似度的分享。
决定回答一发。
首先,如果不局限于NN的方法,可以用BOW+tf-idf+LSI/LDA的体系搞定,也就是俗称的01或one hot representation。
其次,如果楼主指定了必须用流行的NN,俗称word-embedding的方法,当然首推word2vec(虽然不算是DNN)。
然后得到了word2vec的词向量后,可以通过简单加权/tag加权/tf-idf加权等方式得到文档向量。
这算是一种方法。
当然,加权之前一般应该先干掉stop word,词聚类处理一下。
还有,doc2vec中的paragraph vector也属于直接得到doc向量的方法。
特点就是修改了word2vec中的cbow和skip-gram模型。
依据论文《Distributed Representations of Sentences and Documents》(ICML 2014)。
还有一种根据句法树加权的方式,是ICML2011提出的,见论文《Parsing Natural Scenes and Natural Language with Recursive Neural Networks》,后续也有多个改编的版本。
当然,得到词向量的方式不局限于word2vec,RNNLM和glove也能得到传说中高质量的词向量。
转载请注明出处51数据库 » word2vector 词向量