期末大作业的其中一部分是要求对文档进行相似度计算,并提示可以用文档词向量的方法来做。于是查了一些资料。
然后引出了 空间向量模型(VSM) 这个概念。
-
空间向量模型
向量空间模型(VSM:Vector Space Model)由Salton等人于20世纪70年代提出,并成功地应用于著名的SMART文本检索系统。 VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性。
看完这段,顿悟了!不得不佩服向量的强大力量!
既然知道了空间向量模型的存在,计算相似度就非常简单了!无非就是计算余弦值。
关键的地方是怎样构建文档向量?
-
构建文档向量
原理&思路:
-
要构建文档向量,应该选取最能代表这个文档的元素(特征值),很显然这个元素是文档中的关键词。(获取关键词的主要方法是分词)
关键词 就是 特征值
-
分词,计算出文档中关键词的词频。
-
然后,文档特征值应该有两个维度,一个是关键词本身,另一个是关键词出现的频数。(慢慢有了向量的感觉了)
-
当然,一个文档不止一个关键词,把所有n个关键词堆到一起,就得到了一个n * 2的矩阵。
-
最后,计算相似度的时候只用到频数,为了方便表示,取第二列转置得到向量b(v1,v2,…,vn)。这个n维向量就是表示该文档的向量,每一维度表示一个特征值,维度的长度表示特征值的频数。
-
-
相似性计算
步骤:
-
因为不同文档的特征值唯独可能不一样,而且相似性计算是相对于双方来说的,所以这里还要对上面的文档向量进一步构建(归一化,让维度相同)。
-
对要比较的文档的文档向量的关键词求全集。
-
分别将文档向量跟得到的全集比较,将对应关键词的频数填到全集的频数上,这样就得到了要拿来比较的两个文档的文档向量。每个向量都包含了对方的特征值维度,两个向量在相同的向量空间中。
-
根据向量的夹角余弦公式计算,夹角余弦值就是相似度。
-
-
计算结果
说明:
- 第一组计算对象为2003年政府工作报告和2016年政府工作报告。
- 第二组计算对象为2003年政府工作报告和三体 I
- 阈值控制为10,词频低于阈值的将被忽略
- 这里事先计算好了两篇文章的词频。
计算结果:
Report(2003) & Report(