【算法】相似度算法—文本相似度

1)  Jaccard相似系数

Jaccard系数主要用于计算个体间的相似度,个体的特征属性可以通过符号度量或者布尔值标识。

不能通过特征属性的差异进行直接计算,只能通过特征属性是否相同进行比较。

Jaccard系数只关心个体间特征属性是否相同

 

计算步骤:

1、       分词处理

2、       把需要计算的网页内容转化为集合

3、       将集合和集合之间进行计算并集和交集

4、       计算交集数量与并集数量的比

 

狭义jaccard相似系数:

也称为雅可比相似度系数,通过样本交集的与总集差异的相似度算法。

公式:

 

广义jaccard相似系数:

也称作Tanimoto系数,用EJ表示。

公式:

A、B表示向量,广义jaccard可以使元素不仅是0和1.

 

 

jaccard相似系数的缺点:

1、不能应用于大数据集



2)  MinHash算法

MinHash也称最小哈希式独立排列局部性敏感哈希。

是一种非常快速的两个不同集合进行相似性分析的方法。

算法起初用在搜索引擎中的重复网页检查,现在用在解决大规模聚类问题。

 

MinHash实质也是一种降维技术,降维后数据计算复杂度会减小很多。




3)  TF-IDF算法

向量空间模型( Vector Space Model )是将文本转换为向量的代数模型

TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用于检索系统的加权技术

 

TF-IDF是向量空间模型的典型体现

核心思想:

文件中每个词的重要性与它在当前文件中出现的次数成正比,但是与它在其他文件中出现次数成反比。

 

用数学公式表达TF-IDF中的TF(词频):

n是指该词在文件d中出现的次数,分母表示在文件d中所有单词出现的次数之和。(该词在文件中出现的频率)

 

IDF(逆向文件频率)数学公式表达式:


|D|为资料中所有文件的总数;分母表示包含词语t的文件数目

 

TF-IDF最终表达式为:

表示第i个文件的第j个词的TF-IDF权值。

 

计算步骤:

1、       计算TF

2、       计算IDF

3、       计算TF-IDF

 

TF-IDF是否不是一个完美的权值计算方式,它的实现是基于“对区别文件中最有意义的词语应该是那些在文件中出现频率高,而整个文件集合的其他文件中出现频率较低的词语”的假设条件,目的是突出重要词语,抑制次要词语。

 

TF-IDF需要不断的训练进行分析,对于段文本的处理也是该算法的弊端。

TF-IDF在长文本中效果会比较好,对于短文本相对而言效果略差。

 

TF-IDF算法权值计算方法还经常会与余弦相似性算法一同使用在向量空间模型中。

 

向量空间模型的缺陷:

1、       不适合长文本

2、       忽视了文本中语义和语法的表达。

3、       词语之间的必须完全出现进行匹配,相似性词语或者子句没有进行有效的匹配。




4)  余弦相似度算法

余弦相似性顾名思义是指通过余弦的方式计算相似度

余弦是两个向量的夹角,将需要进行相似性比较的内容视为向量,计算其余弦值。

余弦相似性是基于向量的算法,并利用两个向量方向和大小的不同,将不同转化为余弦值,滨江余弦值用作衡量信息差异的标准。

 

 

公式:

计算向量a(x1,y1)和b(x2,y2)的余弦值:

 

计算n维向量的余弦值:

 

计算步骤:

1、       分词处理

2、       向量集

3、       词频计算

4、       形成特征向量

5、       相似度计算

 

 

余弦相似性算法的缺点:

1、       计算效果明显,但是复杂度高

2、       通过关键词的特征向量表达文本的特征,不易存储

3、       少量文本时,可能因为一两个关键词波动较大




5)  SimHash算法

利用主题模型可以较好的在文本之间进行语义相似性分析。

主题模型作为在机器学习和自然语言处理领域常用的一种文本统计模型,用于发现文本的主题信息。

 

主题模型自动分析每个文件中的内容,统计文件中词汇频率,然后确定主题,对每篇文章中的内容,从讲述各类主题中抽取核心主题。

 

 

主题模型中的建模过程主要通过以下两种方式:

1、       通过LDA模型完成,LDA为对一堆文章进行自动化聚类

2、       通过pLSA模型完成,pLSA主要采用最大期望算法

 

针对主题模型的训练主要是完成两个部分的训练:

1、       计算训练文档中的主题分布情况

2、       计算每个主题中的词语分布情况

 

任意给定的两个词语的相似度取决于词语一之间的共性(Commonality)和个性(Differences)的组合,

公式:

 

表达式对语义相似度的表达意味着语义相似度与共性成正比,个性差异成反比。

 

SimHash是一种局部敏感的哈希算法。可以理解为指纹码(Fingerprint )。

 

SimHash的重要特征,通过计算海明距离,表达两个文本的相似程度。

 

计算流程:

1、       分词与权重计算

2、       哈希二进制计算

3、       词语加权

4、       合并累计

5、       降维输出

 

 

SimHash优点:

1、       适用于海量数据

2、       解决信息的重复问题



参考文档:

《大数据时代下的算法》







你可能感兴趣的:(Algorithm,&&,DataStructures)