如何通过词向量技术来计算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》
gensim 中的word2vector 有预训练好的model吗?
:将one-hot向量转换成低维词向量的这一层(虽然大家都不称之为一层,但在我看来就是一层),因为word2vec的输入是one-hot。
one-hot可看成是1*N(N是词总数)的矩阵,与这个系数矩阵(N*M, M是word2vec词向量维数)相乘之后就可以得到1*M的向量,这个向量就是这个词对应的词向量了。
那么对于那个N*M的矩阵,每一行就对应了每个单词的词向量。
接下来就是进入神经网络,然后通过训练不断更新这个矩阵。
WORD文档里怎么打出向量符号?
展开全部 1、使用Word中使用“插入公式”功能编辑数学公式。
位置:“插入公式”功能在“插入”选项卡下的“符号”菜单中。
如图点击“公式”按钮。
2、如果点击了下拉菜单,则选择“插入新公式”选项。
3、可以看到,当点击了“公式”后,进入到了公式编辑的状态。
4、首先插入简介图片中的第一个向量。
在公式编辑状态下,选择如图“标注符号”里的“右箭头在上”。
5、然后点击如图的黑色虚线方框(以下简称方框),使方框处于选中状态。
6、输入“abc”,得到如下效果。
向量符号 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!1806年,瑞士人阿尔冈以表示一个有向线段或向量(vectors)。
麦比乌斯(1827年)则 以AB表示一起点为A而终点为B的向量,这用法为相当广泛的数学家所接受。
实际上,现在亦偶然用这表示方法。
与他同时代的哈密顿、吉布斯等人则以一小写希腊字母表示向量,现今还有这用法。
1896年,沃依洛特区分了「极向量」及「 轴向量」;1912年,兰格文以表示极向量,其后於字母上加箭嘴以表示向量的方法逐渐流行, 尤其在手写稿中。
一些作者为了方便印刷,以粗黑体小写字母a,b等表示向量。
这两种符号一直沿用至今。
向量符号 1806年,瑞士人阿尔冈以表示一个有向线段或向量(vectors)。
麦比乌斯(1827年)则 以AB表示一起点为A而终点为B的向量,这用法为相当广泛的数学家所接受。
实际上,现在亦偶然用这表示方法。
与他同时代的哈密顿、吉布斯等人则以一小写希腊字母表示向量,现今还有这用法。
1896年,沃依洛特区分了「极向量」及「 轴向量」;1912年,兰格文以表示极向量,其后於字母上加箭嘴以表示向量的方法逐渐流行, 尤其在手写稿中。
一些作者为了方便印刷,以粗黑体小写字母a,b等表示向量。
这两种符号一直沿用至今。
1853年,柯西把向径记作,而它于坐标轴上的分量则分别记作,及,且记=++ 。
但早于1797年,韦塞尔已把向量以x+ηy+ez形式表达,其 中η2=-1,e2=-1。
1878年,格拉斯曼给前二者之工作,以p=v1e1+v2e2+vee3 表示一具有坐标x,y及z的点,其中e1,e2及e3 分别为三个坐标轴方向的单位长度。
此外,哈密顿则把向量记作ρ=iz+jy+kz,其中i,j,k为两两垂直的单位向量( unit vector),因而有i.j=-j.i=k,j.k=-k.j=i,k.i=-i.k=j 。
这记法后来与上述向量之记法相结合:印刷时把i,j,k 印成小写粗黑体字母,手写时於字母上加箭嘴,并把系数( 坐标)写于前面,即ρ=xi+yj+zk 或(右图) ,这就是现今之用法。
输入符号 向量符号是在英文字母的上方加一个箭头符号。
用域功能也可以很容易实现这个要求。
在大括号中输入域代码“eq \o(→,a)”,其中,箭头符号可以使用“插入→符号”的方法来实现。
如果我们这时点击右键菜单中的“切换域代码”命令的话,您会发现,得到的结果只是箭头与字母重叠在一起,并不是我们希望的结果。
那么,如何使箭头向上移动呢? 选中域代码中的箭头,点击右键,然后在弹出菜单中点击“字体”命令,打开“字体”对话框。
点击“字符间距”选项卡,然后点击“位置”下拉列表,选择“提升”,并用其后的“磅值”微调按钮设置提升值为“5磅。
确定后就可以使箭头符号向上移动5磅的位置,这样,就可以移动到字符的上方了。
现在,再选中域代码,然后点击“切换域代码”命令,就可以得到预期的效果了。
如果您觉得这样子操作比较麻烦的话[1] ,还可以直接在域符号中输入代码“eq \o (\s\up5(→),a)”,这样,同样可以实现将箭头向上提升5磅的效果。
转载请注明出处51数据库 » 深度学习词向量 word2vector
萝莉也狠美