[IR课程笔记]向量空间模型(Vector Space Model)

VSM思想

    把文档表示成R|v|上的向量,从而可以计算文档与文档之间的相似度(根据欧氏距离或者余弦夹角)

     那么,如何将文档将文档表示为向量呢?

     首先,需要选取基向量/dimensions,基向量须是线性独立的或者正交的向量。

     在IR系统中,有两种方式决定基向量:

     1.核心概念的思想(core concept):把词语的类型分类,按照其在不同分类上的“倾斜程度”决定向量的值。but,很难决定基向量。

     2.把出现过的term(词语)都当作是一个基向量,假定所有的基向量都是相互正交相互独立的。以下我们采用这一种方式。

   

      一个文档的向量表示就是:所有出现在文档中的term的向量之和。

    

     如何决定权重?

     1.在文档中,某个term出现记为1,不出现记为0.

     2.tf方法(term frequency):在某个文档中,记下term出现的频率(次数)。

     3.tf-idf方法(inverse document frequency):原始的词项频率会面临这样一个严重的问题:即在和查询进行相关度计算时,所有词项都被认为是同等重要的。实际上,某些词项对于相关度计算来说几乎没有或很少有区分能力。一个很直接的想法就是给文档集频率较高的词项赋予较低的权重。

         dft表示的是词项t出现在所有文档的数目

         idft = log(N/dft)  N表示的是所有文档数目。

         tf-idft,d = tft,d x idft

     

       如何计算相似度?

       1.欧式距离

       2.余弦夹角

       ....

 LSI(潜层语义分析)

    SVM 语言模型是将文档集中所有出现过的每个词语都算成一个维度,这样就出现了一个问题,若出现同义词时,它们将会被算成不同的维度,这样,检索性能将会降低。解决这个问题 的一个方法是将SVM做SVD分解,得到新的矩阵。

   如何做SVD分解?

   词项-文档矩阵C可以被表示为C=UΣVT C为MxN的矩阵,U为MxM的矩阵,Σ为MxN的矩阵,VT为NxN的矩阵

   1.假设词项-文档矩阵为C,首先求出CCT

   2.求出CCT的特征值,对这些特征值求均方差,从大到小排序,得到Σ矩阵

    3. 求出Σ的逆阵

   4. 求出Σ对应的特征向量V,然后对V求转置VT

    5. U = CVΣ-1

    求出C的SVD分解后,我们在看其中的Σ矩阵,人工决定将最后r列的值置为0,最后求出新的矩阵C。然后我们用这个新的矩阵进行相似度的计算。

  问题:这是一个静态的过程,当不断有新的文档加入进文档集中时,LSI的效果持续下降,所以,我们需要定期的计算新的矩阵。

排序

   1. 对每个相关文档进行相似度计算,返回前k个相关度最大的文档,这个时候可以使用堆排序

   2. 索引去除技术。对于一个文档中,不需要计算它所有的词项与查询的相似度,首先人工确定一个r值,r值一般大于k。然后计算文档中词项的tf值,保留前r个tf值最高的词项。然后将这r个词项与查询做并集,然后在这个并集下,计算相关度。

   3.以上我们计算的都是相关度,另外还有一个重要度的计算。相关度+重要度,决定了哪些文档应该排在前面。

      

原文地址:https://www.cnblogs.com/leeshum/p/4889515.html