字符串相似性的几种度量方法
副标题[/!--empirenews.page--]
无论是做科学研究,还是工程项目,我们总是会碰上要比较字符串的相似性,比如拼写纠错、文本去重、上下文相似性等。度量的方法有很多,到底使用哪一种方法来计算相似性,这就需要我们根据情况选择合适的方法来计算。这里把几种常用到的度量字符串相似性的方法罗列一下,仅供参考,欢迎大家补充指正。 1、余弦相似性(cosine similarity) 其中,A,B为向量中间中的两个向量。 在使用它来做字符串相似性度量的时候,需要先将字符串向量化,通常使用词袋模型(BOW)来向量化。举个例子如下: String1 = “apple” String2 = “app” 则词包为{’a’,’e’,’l’,’p’},若使用0,1判断元素是否在词包中,字符串1、2可以转化为: StringA = [1111] StringB = [1001] 那么,根据余弦公式,可以计算字符串相似性为:0.707。 2、欧氏距离(Euclidean distance) 3、编辑距离(edit distance) 其中,w表示增删改三种操作的权重,一般定义为: 仍以(1)中的两个字符串为例: 则编辑距离 4、海明距离(hamming distance) 5、Dice 距离 其中,X,Y表示两个集合,分子表示两个集合的相交操作后的长度,分母表示两个集合长度之和。以(1)中的例子来讲的话, 其中,A,B表示两个向量。 6、Jaccard distance 可以看出与Dice系数的定义比较相似,分子部分是个两倍关系,Dice系数的分母比Jaccard系数的分母多减去了一项分子,即 Jaccard与Dice之间具有一种转化关系: 或: (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |