**向量空间模型**是一个把文本文件表示為标识符（比如索引）向量的代数模型。它应用于信息过滤、信息检索、索引以及相關排序。SMART是第一个使用这个模型的信息检索系统。[來源請求]

定义
--

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

{\displaystyle d\_{j}=(w\_{1,j},w\_{2,j},...w\_{t,j})}
{\displaystyle q=(w\_{1,q},w\_{2,q},...w\_{t,q})}
每一维都對應於一个個別的词组。如果某个词组出现在了文档中，那它在向量中的值就非零。已经發展出了不少的方法来计算这些值，这些值叫做（词组）权重。其中一种最为知名的方式是tf-idf权重（见下面的例子）。

词组的定義按不同應用而定。典型的词组就是一个单一的词、关键词、或者较长的短语。如果將詞語选为词组，那么向量的维数就是词汇表中的詞語个数（出現在語料庫中的不同詞語的個數）。

通過向量运算，可以對各文档和各查詢作比較。

应用
--

據文档相似度理论的假设，如要在一次關鍵詞查詢中計算各文档間的相關排序，只需比较每个文档向量和原先查询向量（跟文檔向量的类型是相同的）之间的角度偏差。

实际上，计算向量之间夹角的余弦比直接计算夹角本身要简单。

{\displaystyle \cos {\theta }={\frac {\mathbf {d\_{2}} \cdot \mathbf {q} }{\left\|\mathbf {d\_{2}} \right\|\left\|\mathbf {q} \right\|}}}
其中{\displaystyle \mathbf {d\_{2}} \cdot \mathbf {q} }是文档向量（即右图中的d2）和查询向量（图中的q）的点乘。{\displaystyle \left\|\mathbf {d\_{2}} \right\|}是向量d2的模，而 {\displaystyle \left\|\mathbf {q} \right\|}是向量q的模。向量的模通过下面的公式来计算：

{\displaystyle \left\|\mathbf {v} \right\|={\sqrt {\sum \_{i=1}^{n}v\_{i}^{2}}}}
由于这个模型所考虑的所有向量都是每個元素严格非负的，因此如果余弦值为零，则表示查询向量和文档向量是正交的，即不符合（换句话说，就是检索項在文档中没有找到）。如果要了解详细的信息可以查看余弦相似性這條目。

范例：tf-idf权重
-----------

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

{\displaystyle w\_{t,d}=\mathrm {tf} \_{t,d}\cdot \log {\frac {|D|}{|\{d'\in D\,|\,t\in d'\}|}}}
* {\displaystyle \mathrm {tf} \_{t,d}}是词组*t*在文档*d*中出现的频率（一个局部参数）
* {\displaystyle \log {\frac {|D|}{|\{d'\in D\,|\,t\in d'\}|}}}是逆向文档频率（一个全局参数）。{\displaystyle |D|}是文档集中的文档总数；{\displaystyle |\{d'\in D\,|\,t\in d'\}|}是含有词组*t*的文档数。

文档*dj*和查詢*q*之间的余弦相似度通过以下公式来计算：

{\displaystyle \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}}}}}}
在較简单的詞組計數模型（Term Count Model）中，词组的权重不包含全局参数，而是单纯的计算词组出现的次数：{\displaystyle w\_{t,d}=\mathrm {tf} \_{t,d}}。

优点
--

相对于标准布尔模型（Standard Boolean model），向量空间模型具有如下优点：

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

局限
--

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

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

然而，这些局限中的多数能够通过集合各種方法来解决，包括数学上的技术（比如奇异值分解）和词汇数据库（比如WordNet）。

基于及扩展了向量空间模型的模型
---------------

基于及扩展了向量空间模型的模型包括：

* 广义向量空间模型
* （增强的）基于主题的向量空间模型
* 潜在语义学
* 潜在语义索引
* DSIR模型
* 詞彙鑑別（Term Discrimination）
* 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（页面存档备份，存于），通过"统计语义"实现的的检索程序集成。

进一步参考
-----

* G. Salton, A. Wong, and C. S. Yang (1975), "A Vector Space Model for Automatic Indexing," *Communications of the ACM*, vol. 18, nr. 11, pages 613–620. *（Article in which a vector space model was presented）*
* David Dubin (2004), The Most Influential Paper Gerard Salton Never Wrote[] *（Explains the history of the Vector Space Model and the non-existence of a frequently cited publication）*
* Description of the vector space model
* Description of the classic vector space model by Dr E Garcia（页面存档备份，存于）

另见
--

* 反向索引
* 复合词组处理（Compound term processing）

参考文献
----

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