DiVoMiner® 使用手册

  1. 主页
  2. 文档
  3. DiVoMiner® 使用手册
  4. 算法挖掘
  5. 相似度分析

相似度分析

文本相似度计算功能当前平台支持MinHashLSH方法,在预设条件下(包括:筛选数据、挑选相似度计算方法、相似阈值等)对文本内容做聚合建模,其聚合结果有助于发现相似文本,方便批量编码操作,为后续深入的研究分析提供数据预处理基础。

一、MinHashLSH模型介绍

  • 1. Jaccard相似度

给定集合A、B,Jaccard系数定义为A和B交集元素个数与A和B并集的元素个数的比值,即:J(A, B) = |A∩B| / |A∪B| = |A∩B| / (|A| + |B| – |A∩B|) ,用于比较有限样本集之间的相似性和差异性,系数值越大相似度越高。比如A = {a,b,c,d},B = {c,d,e,f},那么Jaccard相似性系数为2/6=0.33。

  • 2. MinHash

MinHash有别于传统的hash算法,不再是将文本内容随机映射为签名值,而是能够满足相似文本的签名也相近。其基本原理是A∪B的随机域里,选中的元素落在A∩B这个区域的概率等于Jaccard相似度,可以用于大规模聚类问题。具体操作是先对A、B的n个维度做随机排列(即索引随机打乱),分别取向量A、B的第一个非0索引值即为MinHash值,那么概率P(minHash(A) = minHash(B)) = Jaccard(A,B)。

  • 3. LSH(Locality Sensitive Hashing,局部敏感哈希)

Minhash解决了高维稀疏向量的运算,但是对集合两两比较的时间复杂度依然是O(n2),假如集合数量极其庞大,我们希望仅仅比较那些相似度可能很高的集合,而直接忽略掉相似度很低的集合,LSH就是解决这个问题。其基本思想是原空间相近(相似)的点,经过LSH哈希函数映射后,很大概率哈希值相同;而距离远(不相似)的两个点,映射后哈希值相等的概率很小。

二、算法说明

文本相似度计算时候,首先得到document-term矩阵,比如:

  S1 S2 S3
0 1 0 0
1 0 0 1
2 0 1 0
3 1 0 1
4 0 0 1

其中,S1、S2、S3表示文档,第一列序号0-5表示行序号,也即单词,其他部分中1表示文档S有这个单词,0表示文档S没有这个单词。接下来,使用hash函数产生行号顺序,比如(x+1)mod5,(3x+1)mod5,则两个hash函数产生行号顺序为:

  Hash1 Hash2
0 1 1
1 2 4
2 3 2
3 4 0
4 0 3

通过遍历矩阵中的值,对于0跳过,对于1,看hash函数产生的行号,找到行号最小的值作为hash输出的值,最后得到如下矩阵:

  S1 S2 S3
Hash1 1 3 0
Hash2 1 2 0

此时S1、S2的相似度,J(S1,S2)=0/3=0。Minhash计算的合理性在于两个集合的随机行排列的minhash值相等的概率等于两个集合的Jaccard相似度。对于两个集合A、B,每一行的状态有三种:(1)A、B集合都有这个单词;(2)A、B集合都没有这个单词;(3)A、B集合中仅有一个集合有这个单词。若分别属于(1)、(2)、(3)状态的行数依次有n1、n2、n3行,则Jaccard(A,B)=n1/(n1+n3);由于排列是随机的,再遇到(3)之前遇到(1)的概率是n1/(n1+n3),恰好等于Jaccard系数值。

这篇文章对您有用吗? 1

我们要如何帮助您?