1.定义
向量空间模型是一个把文本表示为标引项(Index Term)向量的代数模型,原型系统SMART*。
向量空间模型的定义很简单,文档d,查询q都用向量来表示。
查询和文档都可转化成term及其权重组成的向量表示,都可以看成空间中的点。向量之间通过距离计算得到查询和每个文档的相似度。
我们在向量空间模型中假设term是相互独立互不影响的。
2.模型构建
VSM向量空间模型构建的关键在于三点:
1.标引项term的选择
2.权重计算(Term Weighting):即计算每篇文档中每个term的权重
3.查询和文档的相似度计算(Similarity Computation)
上面说的比较难以理解,接下来我们将通过一个例子来介绍如何构建向量空间模型,并通过向量空间模型计算文本相似度。
2.1 标引项(Index Term)
标引项
(1)表示成多个term的集合
(2)通常用词来表示,但是也可以用其他语言单位来表示
(3)词(key words)可以看成term的一种
例如:
文档d1 : 我喜欢打dota,也喜欢玩LoL。
文档d2 : 我爱吃水果,也喜欢拍照。
这里我们仅仅只使用分词结果来作为标引项,
d1分词 :我,喜欢,打,dota,也,LoL
d2分词 : 我,爱,吃,水果,也,喜欢,拍照
将分词结果作为标引项:
我,喜欢,打,dota,也,LoL,爱,吃,水果,拍照
关于标引项的选取远远不止分词这么简单,这里为了介绍VSM只是简单化,我会在另外的博客讨论标引项的选择。
2.2 权重
不同标引项作用是不同的,通过权重加以区分,通常使用TF*IDF来来计算权重,在这里就不在多说了,而是简单的用词频来计算权重。
文档d 1: (<我,2>,<喜欢,2>,<打,1>,< dota,1>,< 也,1>,<玩,1>,< LoL,1>,<爱,0>,<吃,0>,<水果,0>,<拍照,0>)
文档d 2:(<我,1>,<喜欢,1>,<打,0>,< dota,0>,< 也,1>,< 玩,0>,< LoL,0>,<爱,1>,<吃,1>,<水果,1>,<拍照,1>)
2.3 构建向量空间模型
我们称之为 文档-标引项矩阵(Doc-Term Matrix)
矩阵Am*n可以看做m篇文档和n个标引项组成,每一列代表一篇文档,每行表示每个标引项。
有查询q :我喜欢打球 ---> (<我,1>,<喜欢,1>,<打,1>,< dota,0>,< 也,0>,<玩,0>,< LoL,0>,<爱,0>,<吃,0>,<水果,0>,<拍照,0>,<球,1>)
文档d 1: (<我,2>,<喜欢,2>,<打,1>,< dota,1>,< 也,1>,<玩,1>,< LoL,1>,<爱,0>,<吃,0>,<水果,0>,<拍照,0>,<球,0>)
文档d 2:(<我,1>,<喜欢,1>,<打,0>,< dota,0>,< 也,1>,< 玩,0>,< LoL,0>,<爱,1>,<吃,1>,<水果,1>,<拍照,1>,<球,0>)
相似度计算:
余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越趋近于0,他们的方向更加一致。相应的相似度也越高, 这就叫"余弦相似性"。
文档d1与q更为相似。
相似度这个概念用的很广,匹配,推荐,聚类都会用到。