向量空间模型(VSM)计算文本相似度

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更为相似。

相似度这个概念用的很广,匹配,推荐,聚类都会用到。

时间: 2024-10-08 04:27:38

向量空间模型(VSM)计算文本相似度的相关文章

向量空间模型(VSM)

向量空间模型 (或者 词组向量模型) 作为向量的标识符(比如索引),是一个用来表示文本文件的代数模型.它应用于信息过滤.信息检索.索引以及关联规则.SMART是第一个使用这个模型的信息检索系统. 文档和查询都用向量来表示. 每一维都相当于是一个独立的词组.如果这个术语出现在了文档中,那它在向量中的值就非零.已经有很多不同的方法来计算这些值,这些值叫做(词组)权重.其中一种广为人知的算法就是tf_idf权重(见下面的例子). 我们是根据应用来定义词组的.典型的词组就是一个单一的词.关键词.或者较长

利用word分词来计算文本相似度

word分词提供了两种文本相似度计算方式: 方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度 实现类:org.apdplat.word.analysis.CosineTextSimilarity 用法如下: String text1 = "我爱学习"; String text2 = "我爱读书"; String text3 = "他是黑客"; TextSimilarity textSimilarity = new CosineT

Java根据余弦定理计算文本相似度

项目中需要算2个字符串的相似度,是根据余弦相似性算的,下面具体介绍一下: 余弦相似度计算 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小.余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性". 我们知道,对于两个向量,如果他们之间的夹角越小,那么我们认为这两个向量是越相似的.余弦相似性就是利用了这个理论思想.它通过计算两个向量的夹角的余弦值来衡量向量之间的相似度值.余弦相似性推导公式如下: public class Cosine {

Python简单实现基于VSM的余弦相似度计算

在知识图谱构建阶段的实体对齐和属性值决策.判断一篇文章是否是你喜欢的文章.比较两篇文章的相似性等实例中,都涉及到了向量空间模型(Vector Space Model,简称VSM)和余弦相似度计算相关知识.        这篇文章主要是先叙述VSM和余弦相似度相关理论知识,然后引用阮一峰大神的例子进行解释,最后通过Python简单实现百度百科和互动百科Infobox的余弦相似度计算. 一. 基础知识 第一部分参考我的文章: 基于VSM的命名实体识别.歧义消解和指代消解 第一步,向量空间模型VSM 

转:文本相似度算法

文本相似度算法 原文出自:http://www.cnblogs.com/liangxiaxu/archive/2012/05/05/2484972.html 1.信息检索中的重要发明TF-IDF 1.1TF Term frequency即关键词词频,是指一篇文章中关键词出现的频率,比如在一篇M个词的文章中有N个该关键词,则 (公式1.1-1) 为该关键词在这篇文章中的词频. 1.2IDF Inverse document frequency指逆向文本频率,是用于衡量关键词权重的指数,由公式 (公

文本相似度判定

刘 勇   Email:[email protected] 简介 针对文本相似判定,本文提供余弦相似度和SimHash两种算法,并根据实际项目遇到的一些问题,给出相应的解决方法.经过实际测试表明:余弦相似度算法适合于短文本,而SimHash算法适合于长文本,并且能应用于大数据环境中. 余弦相似度 原理 余弦定理:                   图-1 余弦定理图示 性质: 余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越趋近于0°,他们的方向更加一致,相应的相似度也越高.

文本挖掘之 文本相似度判定

转载: 简介 针对文本相似判定,本文提供余弦相似度和SimHash两种算法,并根据实际项目遇到的一些问题,给出相应的解决方法.经过实际测试表明:余弦相似度算法适合于短文本,而SimHash算法适合于长文本,并且能应用于大数据环境中. 余弦相似度 原理 余弦定理:                    图-1 余弦定理图示 性质: 余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越趋近于0°,他们的方向更加一致,相应的相似度也越高.需要指出的是,在文本相似度判定中,因为文本特征向量

基于word分词提供的文本相似度算法来实现通用的网页相似度检测

实现代码:基于word分词提供的文本相似度算法来实现通用的网页相似度检测 运行结果: 检查的博文数:128 1.检查博文:192本软件著作用词分析(五)用词最复杂99级,相似度分值:Simple=0.968589 Cosine=0.955598 EditDistance=0.916884 EuclideanDistance=0.00825 ManhattanDistance=0.001209 Jaccard=0.859838 JaroDistance=0.824469 JaroWinklerDi

Solr相似度名词:VSM(Vector Space Model)向量空间模型

最近想学习下Lucene ,以前运行的Demo就感觉很神奇,什么原理呢,尤其是查找相似度最高的.最优的结果.索性就直接跳到这个问题看,很多资料都提到了VSM(Vector Space Model)即向量空间模型,根据这个模型可以对搜索的结果进行最优化的筛选,目前还不知道如何证明,只能凭借想象应该是这个样子的. 1.看一下TF/IDF 我们先来看下一个叫TF/IDF的概念,一般它用来作为一个搜索关键字在文档或整个查询词组的权重的计算方式.前几天看了吴军老师的数学之美系列文章,这个TF/IDF可以追