余弦相似性原理实践

余弦相似性原理实践
一、余弦相似性原理

1、余弦相似性表示两个向量的相似程度,当向量是二维时,可表示为两条线夹角的余弦值,两条线之间的夹角越小,其余弦值越接近1,两个向量越相似,原理如图1所示。

图1

2、当向量是二维时,根据余弦定理,余弦相似性的计算公式为图2所示

图2

3、余弦相似性计算公式在n维也成立,假定A和B是两个n维向量,A是 [A1, A2, ..., An] ,B是 [B1, B2, ..., Bn] ,则A与B的夹角θ的余弦计算公式如图3所示

图3

二、原理实践

根据上述余弦相似性原理和公式,进行实践判定两个文本的相似程度。

具体思路是:通过对文本进行分词并统计词频,可将文本转化为词频向量来表示,代入上述公式计算得到两个文本的相似性评价值。

以下是基于PostgreSQL数据库的具体实践过程

1、实践数据如图4

图4

2、对文本进行分词,分词采用的是Zhparser,PostgreSQL扩展,分词结果如图5

图5中数字表示词在文本中出现的位置

3、统计两个文本中出现的所有词
用到的自定义统计函数由图6所示

图6

列出两个文本中所有词,过程由图7所示

图7

4、根据两个文本中所有词,统计每个文本中相应词的词频,生成词频向量,过程由图8所示

图8

5、根据两个文本的词频向量和余弦相似性计算公式,计算两个文本的余弦相似性,判定两个文本的相似性,过程由图9所示

三、总结

通过对文本进行分词并计算词频,将文本转化为词频向量来表示,根据余弦相似性原理计算两个向量的相似程度,以此判定两个文本的相似程度,这在数据分析中很实用,可用来对数据进行去重、查找相似文本。