短文本相似度的计算在nlp自然语言处理中是十分重要的知识,它运用于很多领域,例如文本分类,文本去燥等等。
今天来看几种文本相似度的计算算法,有些会讲原理有些会直接给出算法。基于文本字符的相似度计算
Jaccard
最长公共子序列(LCS)
最小可编辑距离
基于词频向量的相似度计算
余弦相似度
主要有这么几种吧,接下来我们一一介绍。
基于文本字符的相似度计算
Jaccard :
Jaccard index , 又称为Jaccard相似系数(Jaccard similarity coefficient),对于字符串A、B,分别做分词得到分词集SA,SB,那么Jaccard系数=SA与SB交集/SA与SB并集。jaccard index 巧妙的把文本,变成数学的集合运算:
基础代码如下:
def jaccard_similarity(str_a,str_b):
seta = split_words(str_a)
setb = split_words(str_b)
print(seta)
print(setb)
sa_sb = 1.0 * len(seta & setb) / len(seta | setb)
return sa_sb
最长公共子序列(LCS)1.子序列(subsequence): 一个特定序列的子序列就是将给定序列中零个或多个元素去掉后得到的结果(不改变元素间相对次序)。例如序列的子序列有:、、
2.公共子序列(common subsequenc