赞
踩
写在开始之前:语义即联系。
以下部分来自于我在公司内部的分享。
在学术上,大致有以下三个概念和文本相似度相关:
当我们在讨论两个短文本是不是相似(或者是不是表达同一个意思),需要做两件事:
说它简单,因为它是一种简单的词袋模型;
说它重要,因为它很容易和倒排索引结合,正所谓 “天下武功,无坚不摧,唯快不破!”,我会在另一篇博客中专门介绍TFIDF和倒排。
每条短文本都表示成维度为词典大小(V)的向量,对应位置元素的值为当前词的TFIDF值
使用TFIDF做表征,使用COS(余弦)计算。
TFIDF最大的问题是没有考虑词语之间的语义(即词语之间的相互联系,或者词语之间的相似性),其本质是因为这种VSM模型假设句子所在的空间的基是正交(orthogonal)的:
其中V为词典大小,从而:
SoftCosine的思想是:找到一个非正交的基。
首先,我们需要明确三个概念以及它们之间的关系:
下面两个图很重要!
解释:给定向量,还需要给定一组基,向量才有坐标。向量a还是向量a,但是相对于不同的“基”,向量a的坐标是不同的,分别是(1,2)和(0.9,0.7)。
解释:这里和上图不同,我们只是拿到了坐标,理所当然,给定不同的基,就可以得到不同的向量,可以看出,a,b在不同的(1,2)和(2,1)两个坐标,在不同的基下面,对应不同的向量。
? 算了…我要举例子了:
这个例子当中,有两句话:
a : a player will play a game they like to play
b : they play the game they like
得到字典:
我们用VSM(空间向量模型)把句子a和句子b表示为:
现在还不要把a,b看成两个向量,先把脑袋中默认的正交基忘掉,a,b现在还只是坐标而已。我们现在有坐标了,那么选择不同的基,就可以让这两个坐标展现出不同的角度(即不同的远近关系)。
Softcosine的大致思路如下:
那么,选择什么样的基是好的呢? 答案:最好是两个基向量的余弦距离能够度量对应的两个词语之间的相似性。
这里,要多说一句【隔了一天, 突然不想写了…?】,那就再多说一句。
我们的目标是把原来的基向量(e1,e2,… … ,eV)变换为(e1*,e2*,… … ,eV*)。注意,eV和eV*的维度是相同的,都是V。
假设w1的特征用 f1 (维度为df) 表示,w2的特征用 f2 维度为df)表示,我们希望这个非正交基能满足下面的公式:
cos(e1*,e2*) = S12 = similarity(f1,f2)
在实际工作中,特征f 就是选择的word2vec, glove, fasttext 等等词向量。
其实本来是想记录一下生成方式的sif 和 usif 推导过程,没想到说了很久的旧东西。
先看看一个灰度图片SVD分解之后,把最大奇异值对应的奇异向量抹掉之后,图片的变换,左边是原图,右边是抹掉最大奇异值对应的奇异向量之后,重新合成的结果:
就这样吧~,有空再写…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。