Package | Description |
---|---|
org.apdplat.word.analysis |
Modifier and Type | Interface and Description |
---|---|
interface |
SimilarityRanker
相似度排名
|
Modifier and Type | Class and Description |
---|---|
class |
CosineTextSimilarity
文本相似度计算
判定方式:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度
余弦夹角原理:
向量a=(x1,y1),向量b=(x2,y2)
similarity=a.b/|a|*|b|
a.b=x1x2+y1y2
|a|=根号[(x1)^2+(y1)^2],|b|=根号[(x2)^2+(y2)^2]
|
class |
EditDistanceTextSimilarity
文本相似度计算
判定方式:编辑距离(Edit Distance)
指两个字串之间,由一个转成另一个所需的最少编辑操作次数
允许的编辑操作包括将一个字符替换成另一个字符,增加一个字符,删除一个字符
例如将kitten一字转成sitting:
sitten (k→s)将一个字符k替换成另一个字符s
sittin (e→i)将一个字符e替换成另一个字符i
sitting (→g)增加一个字符g
因为这个算法是俄罗斯科学家Vladimir Levenshtein在1965年提出
所以编辑距离(Edit Distance)又称Levenshtein距离
|
class |
EuclideanDistanceTextSimilarity
文本相似度计算
判定方式:欧几里得距离(Euclidean Distance),通过计算两点间的距离来评估他们的相似度
欧几里得距离原理:
设A(x1, y1),B(x2, y2)是平面上任意两点
两点间的距离dist(A,B)=sqrt((x1-x2)^2+(y1-y2)^2)
|
class |
JaccardTextSimilarity
文本相似度计算
判定方式:Jaccard相似性系数(Jaccard similarity coefficient) ,通过计算两个集合交集的大小除以并集的大小来评估他们的相似度
算法步骤描述:
1、分词
2、求交集(去重),计算交集的不重复词的个数 intersectionSize
3、求并集(去重),计算并集的不重复词的个数 unionSize
4、2中的值除以3中的值 intersectionSize/(double)unionSize
完整计算公式:
double score = intersectionSize/(double)unionSize;
|
class |
JaroDistanceTextSimilarity
文本相似度计算
判定方式:Jaro距离(Jaro Distance),编辑距离的一种类型
这里需要注意的是Jaro距离也就是相似度分值
|
class |
JaroWinklerDistanceTextSimilarity
文本相似度计算
判定方式:Jaro–Winkler距离(Jaro–Winkler Distance),Jaro的扩展
由William E.
|
class |
ManhattanDistanceTextSimilarity
文本相似度计算
判定方式:曼哈顿距离(Manhattan Distance),通过计算两个点在标准坐标系上的绝对轴距总和来评估他们的相似度
曼哈顿距离原理:
设A(x1, y1),B(x2, y2)是平面上任意两点
两点间的距离dist(A,B)=|x1-x2|+|y1-y2|
|
class |
SimHashPlusHammingDistanceTextSimilarity
文本相似度计算
判定方式:SimHash + 汉明距离(Hamming Distance)
先使用SimHash把不同长度的文本映射为等长文本,然后再计算等长文本的汉明距离
simhash和普通hash最大的不同在于:
普通hash对 仅有一个字节不同的文本 会映射成 两个完全不同的哈希结果
simhash对 相似的文本 会映射成 相似的哈希结果
汉明距离是以美国数学家Richard Wesley Hamming的名字命名的
两个等长字符串之间的汉明距离是两个字符串相应位置的不同字符的个数
换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数
比如:
1011101 与 1001001 之间的汉明距离是 2
2143896 与 2233796 之间的汉明距离是 3
toned 与 roses 之间的汉明距离是 3
|
class |
SimpleTextSimilarity
文本相似度计算
判定方式:简单共有词,通过计算两篇文档共有的词的总字符数除以最长文档字符数来评估他们的相似度
算法步骤描述:
1、分词
2、求交集(去重),累加交集的所有的词的字符数得到 intersectionLength
3、求最长文本字符数 Math.max(words1Length, words2Length)
4、2中的值除以3中的值 intersectionLength/(double)Math.max(words1Length, words2Length)
完整计算公式:
double score = intersectionLength/(double)Math.max(words1Length, words2Length);
|
class |
SørensenDiceCoefficientTextSimilarity
文本相似度计算
判定方式:Sørensen–Dice系数(Sørensen–Dice coefficient),通过计算两个集合交集的大小的2倍除以两个集合的大小之和来评估他们的相似度
算法步骤描述:
1、分词
2、求交集(去重),计算交集的不重复词的个数 intersectionSize
3、两个集合的大小分别为 set1Size 和 set2Size
4、相似度分值 = 2*intersectionSize/(set1Size+set2Size)
完整计算公式:
double score = 2*intersectionSize/(set1Size+set2Size);
|
class |
TextSimilarity
文本相似度
|
Copyright © 2014–2015 APDPlat. All rights reserved.