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