向量相似度计算过程:

 


1,首先应用tf * idf模型,得到关键字在全文中的权重:

TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

1)词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。

对于在某一特定文件里的词语 t_{i} 来说,它的重要性可表示为:

以上: n_{i,j} 是该词在文件d_{j}中的出现次数,而分母则是在文件d_{j}中所有字词的出现次数之和

2)逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。

某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到:

其中

  • |D|:语料库中的文件总数
  • |\{ j: t_{i} \in d_{j}\}|:包含词语t_{i}的文件数目(即n_{i,j} \neq 0的文件数目)如果该词语不在语料库中,就会导致被除数为零,因此一般情况下使用1 + |\{j : t_{i} \in d_{j}\}|

然后

\mathrm{tf{}idf_{i,j}} = \mathrm{tf_{i,j}} \times  \mathrm{idf_{i}}


3)权重计算:
double weight = -1.0 * tf * Math.log(1.0 * Ni / N + Double.MIN_VALUE);

Ni  :出现关键字的影视数目
       N : 全部影视数目

tf:关键字在本影视中出现的频率

2,计算相似度:

1)计算公式:

在向量空间模型中,文本泛指各种机器可读的记录。用D(Document)表示,特征项(Term,用t表示)是指出现在文档D中且能够代表该文档内容的基本语言单位,主要是由词或者短语构成,文本可以用特征项集表示为D(T1,T2,…,Tn),其中Tk是特征项,1<=k<=N。例如一篇文档中有a、b、c、d四个特征项,那么这篇文档就可以表示为D(a,b,c,d)。对含有n个特征项的文本而言,通常会给每个特征项赋予一定的权重表示其重要程度。即D=D(T1,W1;T2,W2;…,Tn,Wn),简记为D=D(W1,W2,…,Wn),我们把它叫做文本D的向量表示。其中Wk是Tk的权重,1<=k<=N。在上面那个例子中,假设a、b、c、d的权重分别为30,20,20,10,那么该文本的向量表示为D(30,20,20,10)。在向量空间模型中,两个文本D1和D2之间的内容相关度Sim(D1,D2)常用向量之间夹角的余弦值表示,公式为:


其中,W1k、W2k分别表示文本D1和D2第K个特征项的权值,1<=k<=N。
在自动归类中,我们可以利用类似的方法来计算待归类文档和某类目的相关度。例如文本D1的特征项为a,b,c,d,权值分别为30,20,20,10,类目C1的特征项为a,c,d,e,权值分别为40,30,20,10,则D1的向量表示为D1(30,20,20,10,0),C1的向量表示为C1(40,0,30,20,10),则根据上式计算出来的文本D1与类目C1相关度是0.86
那个相关度0.86是怎么算出来的?

是这样的,抛开你的前面的赘述
在数学当中,n维向量是 V{v1, v2, v3, ..., vn}
他的模: |v| = sqrt ( v1*v1 + v2*v2 + ... + vn*vn )
两个向量的点击 m*n = n1*m1 + n2*m2 + ...... + nn*mn
相似度 = (m*n) /(|m|*|n|)
物理意义就是两个向量的空间夹角的余弦数值
对于你的例子
d1*c1 = 30*40 + 20*0 + 20*30 + 10*20 + 0*10 = 2000
|d1| = sqrt(30*30 +20*20 + 20*20 + 10*10 + 0*0) = sqrt(1800)
|c1| = sqrt(40*40 + 0*0 + 30*30 + 20*20 + 10*10) = sqrt(3000)
相似度 = d1*c1/(|d1|*|c1|)= 2000/sqrt(1800*3000)= 0.86066

 

2)计算过程:

1>计算每个属性信息的权重,假设每个影片的关键字(导演,演员,类型,标签,发行地区,发行语言)组成一个固定属性信息排列次序构建向量,以便同维度上是同一个属性信息参与向量相似度运算:

ax表示不同的关键字的权重;
2>然后进行归一化处理:
 其实,归一化是一个让权重变为统一的过程,目的就是将不同尺度上的评判结果统一到一个尺度上,从而可以作比较,作计算,比如说,对于一个房子来说,
面积可能是: 0-1000(平方米)
使用年限是: 0-70(年)
房间数量是: 0-10(间)
....
那么各种维度(面积,使用年限,房间数量,价格因素)权重,在计算的时候,需要各自进行归一化处理,使其统一度量尺度,最后,比较出性能指标最高的房子;
归一化后的向量变成:
 
 
3>
 对于两个影片a(归一化之后的向量):
影片b(归一化之后的向量):
 
如果a2和b3是同一个关键字的权重,那么比较相似度的时候,生成的向量就为
                           .
 
相似度结果:
 
 
 
 
 
 
 
 参考: http://www.cnblogs.com/zhangchaoyang/articles/2162393.html
          http://zh.wikipedia.org/zh-cn/TF-IDF
          http://blog.sina.com.cn/s/blog_b34483e80101971k.html
          http://qianxunniao.iteye.com/blog/1831780
 

 


 

你可能感兴趣的:(向量相似度计算过程:)