向量空間模型

维基百科,自由的百科全书
跳转至: 导航搜索

向量空间模型 (或者 词组向量模型) 作为向量的标识符(比如索引),是一个用来表示文本文件的代数模型。它应用于信息过滤、信息检索索引以及关联规则。SMART是第一个使用这个模型的信息检索系统。[來源請求]

定义[编辑]

文档和查詢都用向量来表示。

d_j = ( w_{1,j} ,w_{2,j} , ... ,w_{t,j} )
q = ( w_{1,q} ,w_{2,q} , ... ,w_{t,q} )

每一维都相当于是一个独立的词组。如果这个术语出现在了文档中,那它在向量中的值就非零。已经有很多不同的方法来计算这些值,这些值叫做(词组)权重。其中一种广为人知的算法就是tf_idf权重(见下面的例子)。 我们是根据应用来定义词组的。典型的词组就是一个单一的词、关键词、或者较长的短语。如果字被选为词组,那么向量的维数就是出现在词汇表中不同字的个数。 向量运算能通过查询来比较各文档。

应用[编辑]

Vector space model.jpg

通过文档相似度理论的假设,比较每个文档向量和原始查询向量(两个向量的类型是相同的)之间的角度偏差,使得在文档中搜索关键词的关联规则是能够计算的。 实际上,计算向量之间夹角的余弦比直接计算夹角本身要简单。


\cos{\theta} = \frac{\mathbf{d_2} \cdot \mathbf{q}}{\left\| \mathbf{d_2} \right\| \left \| \mathbf{q} \right\|}

其中 \mathbf{d_2} \cdot \mathbf{q} 是文档向量(即右图中的d2)和查询向量(图中的q)的点乘。 \left\| \mathbf{d_2} \right\| 是向量d2 的模, 而 \left\| \mathbf{q} \right\| 是向量q的模. 向量的模通过下面的公式来计算:


\left\| \mathbf{v} \right\| = \sqrt{\sum_{i=1}^n v_i^2}

由于这个模型所考虑的所有向量都是严格非负的,如果其余弦值为零,则表示查询向量和文档向量是正交的,即不符合(换句话说,就是该检索词在文档中没有找到)。如果要了解详细的信息可以查看余弦相似性

范例: tf-idf 权重[编辑]

Salton, Wong 和 Yang [1] 提出的传统向量空间模型,一个词组在文件向量中权重就是局部参数和全局参数的乘积,这就是著名的tf-idf模型(词频_逆向文件频率)。文档的权重向量d就是 \mathbf{v}_d = [w_{1,d}, w_{2,d}, \ldots, w_{N,d}]^T,其中


w_{t,d} = \mathrm{tf}_{t,d} \cdot \log{\frac{|D|}{|\{d' \in D \, | \, t \in d'\}|}}
  • \mathrm{tf}_{t,d} 是词组t在文档d中出现的频率(一个局部参数)
  • \log{\frac{|D|}{|\{d' \in D \, | \, t \in d'\}|}} 是逆向文件频率(一个全局参数)。|D| 是文件集中的文件总数; |\{d' \in D \, | \, t \in d'\}| 是含有词组t的文件数。

文件dj 和查詢q之间的余弦相似度通过一下公式来计算:

\mathrm{sim}(d_j,q) = \frac{\mathbf{d_j} \cdot \mathbf{q}}{\left\| \mathbf{d_j} \right\| \left \| \mathbf{q} \right\|} = \frac{\sum _{i=1}^N w_{i,j}w_{i,q}}{\sqrt{\sum _{i=1}^N w_{i,j}^2}\sqrt{\sum _{i=1}^N w_{i,q}^2}}

在简单的词组计算模型中,词组的权重不包含全局参数,而是单纯的计算词组出现的次数: w_{t,d} = \mathrm{tf}_{t,d}

优点[编辑]

相对于标准的布尔数学模型,向量空间模型具有如下优点:

  1. 基于线性代数的简单模型
  2. 词组的权重不是二元的
  3. 允许计算文档和查詢之间的连续相似程度
  4. 允许其根据可能的相关性来进行文件排序
  5. 允许局部匹配

局限[编辑]

向量空间模型有如下局限:

  1. 不适用于较长的文件,因为它的相似值不理想(过小的内积和过高的维数)。
  2. 检索词组必须与文件中出现的词组精确匹配,不完整词组(子字串会导致“假阳性”匹配)。
  3. 语义敏感度不佳;具有相同的语境但使用不同的词组的文件不能被关联起来,导致“假阴性匹配”。
  4. 词组在文档中出现的顺序在向量中间中无法表示。
  5. 假定词组在统计上是独立的。
  6. 权重是直观上获得的而不够正式。

然而,这些局限中的多数能够通过多种多样的方法集成来解决,包括数学上的技术,比如奇异值分解和词汇数据库(比如wordnet)

基于模型的以及扩展的向量空间模型[编辑]

基于模型的和基于扩展的向量空间模型包括:

  • 广义的向量空间模型
  • (增强的)基于主题的向量空间模型
  • 潜在的语义分析
  • 潜在的语义索引
  • DSIR模型
  • 词组辨识
  • Rocchio分类

以向量空间模型为工具的软件[编辑]

使用向量空间模型做实验或者想基于他们实现研究服务的人或许会对以下的这些软件包感兴趣。

免费开放的软件资源[编辑]

  • Apache Lucene. 这是一个高性能的软件,用java写的功能全面的文本搜索引擎.
  • SemanticVectors. 语义向量索引,将随机投影算法(类似于潜在的语义分析) 应用于Apache Lucene构建的文本词组矩阵。
  • Gensim 是一个 Python+NumPy 的向量空间模型的框架。它包含对Tf–idf、潜在的语义索引、随机投影和潜在的狄利克雷边界的增值算法(有效利用内存空间)。
  • Antonio Gulli开发的Compressed vector space in C++
  • Text to Matrix Generator (TMG) 用于一系列特殊文本挖掘的matlab工具箱。(1)指标化(2)检索(3)降维(4)聚类(5)分类。大多数的TMG都是用matlab编写的,小部分是用Perl编写的。它包括了LSI的实现和聚类、NMF以及其他方法。
  • SenseClusters, 通过潜在的语义分析和单词的同现矩阵来进行文本和词组聚类的一个公开软件包。
  • S-Space Package,通过“统计语义”实现的的检索程序集成。

进一步参考[编辑]

另见[编辑]

参考文献[编辑]

  1. ^ G. Salton , A. Wong , C. S. Yang, A vector space model for automatic indexing, Communications of the ACM, v.18 n.11, p.613-620, Nov. 1975