基于改进编辑距离的字符串相似度求解算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
概述
字符串相似问题在文本比较、信息处理等领域,具有 非常广泛的应用背景。求解 2 个字符串之间相似度的方法 按照所依据特征的不同通常可以划分为 3 类[1]: 基于字面相 似的方法,基于统计关联的方法,基于语义相似的方法。 其中,基于字面相似的方法主要有基于编辑距离的方法和 基于相同字或词的方法。编辑距离 (Levenshtein Distance, LD)算法通常被用于输入字符串的快速模糊匹配、 英文辅助 写作等领域,是一种经典而广为使用的方法。近年来常见 的对编辑距离算法进行改进的方法有将编辑距离和 Jaccard
i dij j min(d i 1 j 1 , d i 1 j , d i j 1 ) aij j0 i0 i, j 0
图 1 中深色箭头是 Levenshtein 算法求得的回溯路径, 但浅色箭头所标示的是另一条回溯路径 ( 作为 Levenshtein 算法扩展的 Damerau-Levenshtein 算法也有同样的问题)。 本文所提出算法的改进之一就是能求出所有的回溯路径。 2 个字符串之间的相似度 相似度是 2 个字符串之间相似程度的度量。 2 个字符串 之间的 LD 距离本身就是一种相似度量。直观上,LD 距离 越小,相似度越大。 基于编辑距离计算 2 个字符串相似度的公式[4-5]有: 2.3
(a. School of Computer Science and Information Technology; b. University Key Laboratory of Intelligent Information Processing in Jilin Province, Northeast Normal University, Changchun 130117, China) 【Abstract】When calculating the similarity of strings, the Levenshtein Distance(LD) algorithm only considers the operating times and ignores the common substrings of two strings. Aiming at this problem, an improved Levenshtein distance algorithm is proposed to calculate the similarity. The new algorithm improves the formula of similarity and the Levenshtein matrix. When calculating the distance, the new algorithm calculates the longest common substring and all the LD backtracking paths in the original matrix at the same time. Selecting a word in the experiment as a source string, a set of similar words of the different degrees of the source string as a target string, the new similarity measure formula is compared with the existing string similarity calculation method, the new formula reduces the number of target strings into the winner table with similarity sample range and standard deviation of 0.331 and 0.150, respectively. Experimental results show that the new algorithm has higher accuracy and more flexible searching way in the same space complexity. 【Key words】Levenshtein Distance(LD); LD algorithm; backtracking path; the longest common substring; similarity; fuzzy query DOI: 10.3969/j.issn.1000-3428.2014.01.047
第 40 卷 Vol.40
第1期 No.1
计 算 机 工 程 Computer Engineering
文章编号:1000—3428(2014)01—0222—06 文献标识码:A
2014 年 1 月 January 2014
中图分类号:TP311.12
・人工智能及识别技术・
基于改进编辑距离的字符串相似度求解算法
Sim2 ( S1 , S2 ) 0 , Sim2 ( S1 , S3 ) 0
使用式(1)或式(2)算得 S1、S2 的相似度与 S1、S3 的相似 度一样,但很显然 S1、S2 的相似度大于 S1、S3 的相似度, 因为 S1、S2 之间存在最长公共子串 C,文献[10]介绍了最长 公共子串的概念,其定义是一个序列 S,如果分别是 2 个已 知序列的子序列,且是所有符合此条件序列中最长的,则 称 S 为 2 个已知序列的最长公共子序列。本文结合编辑距 离和最长公共子串给出改进的字符串相似度计算公式。
ld mn ld Sim2 1 max(m, n) Sim1 1
(1) (2)
其中:
0 si t j aij (i 1, 2, , m; j 1, 2, , n) 1 si t j 矩阵 LD 右下角的元素 dmn 即字符串 S 和 T 之间的
基金项目:吉林省发改委基金资助项目(吉发改高技[2012]747 号) 作者简介:姜 华(1964-),男,副教授,主研方向:文本挖掘,Web 挖掘,聚类算法;韩安琪、王美佳、王 峥、吴雲玲,硕士研 究生 收稿日期:2012-10-15 修回日期:2013-01-17 E-mail:hanaq633@nenu.edu.cn
第 40 卷
第1期
姜
华,韩安琪,王美佳,等:基于改进编辑距离的字符串相似度求解算法
223
已知计算编辑距离的方法存在的问题是:只考虑了编 辑操作次数,没有考虑字符串之间的公共子串对相似度的 影响。因此,基于编辑距离的字符串相似度计算方法存在 不具备普遍适用性、匹配路径单一等问题。对此,本文提 出改进的基于编辑距离的两字符串相似度求解算法,与求 解最长公共子串算法相结合且能发现全部回溯路径,进而 根据重新定义的相似度公式计算相似度,同时定义一种阈 值来规定匹配强度。
其中, ld 表示 2 个字符串之间的 Levenshtein 距离;m 和 n 分别为 2 个字符串的长度;Sim 值越大,表示 2 个字符串相 似度越高。但是,式(1)和式(2)并不具备普遍适用性。例如 设字符串: S1 "BC" , S2 "CD" , S3 "EF" ,则:
Sim1 ( S1 , S 2 ) 0.5 , Sim1 ( S1 , S3 ) 0.5
事实上,按照文献[9]求得的回溯路径虽然是最优的, 但并不是唯一的。例如,设 2 个字符串: S "IGH" ,T "HIGHLIGHT" ,存在 2 条回溯路径如图 1 所示。
图 1 LD 矩阵中的 2 条回溯路径
2
2.1
经典的 Lenvenshtein 算法
Levenshtein 算法 编辑距离[7]是指由原字符串 S 变化到目标字符串 T 所需 最少的编辑操作次数。这里编辑操作的含义是:对字符串 指定位置的单个字符进行插入、删除、替换的操作。这种 对于单个字符的操作,称之为单元操作。 设有 2 个字符串 S 和 T: S s1s2 sm ,T t1t2 tn 。 建立 S 与 T 的 (m 1) (n 1) 阶匹配关系矩阵 LD(默认矩阵 第 1 列表示 S,第 1 行表示 T): LD( m1)( n1) {dij }(0 ≤ i ≤ m, 0 ≤ j ≤ n) 按下述公式初始填充矩阵 LD(矩阵元素也称单元或单 元格):
姜 华 a,b,韩安琪 a,b,王美佳 a,b,王 峥 a,b,吴雲玲 a,b
(东北师范大学 a. 计算机科学与信息技术学院;b. 智能信息处理吉林省高校重点实验室,长春 130117) 摘 要:编辑距离(LD)算法在求解两个字符串的相似问题时只考虑了编辑操作次数,未考虑字符串之间的公共子串对相似度的影 响。为此,提出一种基于改进编辑距离的字符串相似度求解算法,对字符串相似度度量公式及 Levenshtein 矩阵计算方法进行改进。 在计算编辑距离时,以原有矩阵求出两字符串的最长公共子串及所有 LD 回溯路径。选取一个单词作为源串,一组与源串不同程 度相似的单词为目标串,将改进的相似度度量公式与现有的字符串相似度计算方法进行比较,改进公式减少了进入胜者表的目标 串数,相似度的样本极差和标准差分别为 0.331 和 0.150。实验结果表明,改进算法在不改变空间复杂度的情况下,计算字符串相 似度的准确性更高,且查询方式更灵活。 关键词:编辑距离;LD 算法;回溯路径;最长公共子串;相似度;模糊查询
Levenshtein 距离,也叫 LD 距离,记为 ld。直观上,是字 符串 S 变化到字符串 T 所需最少的编辑操作次数。 文献[8]扩展了 Levenshtein 算法,提出 DL 算法,增加 了相邻位置的 2 个字符之间交换位置的单元操作。DL 算法 优化了 Levenshtein Distance 算法的单元操作,在编辑距离 层面上使字符串相似度求解更精确。 LD 回溯路径 在计算编辑距离时, 在矩阵 LD 中从左上依次迭代计算 至右下,得到矩阵最右下角元素 dmn 的值即 LD 距离。 编辑距离反映了 2 个字符串的绝对差异,而相似度以 一个[0,1]之间的数值反映 2 个字符串的相似程度,数值越 大相似程度越高, 本文采用 LD 回溯路径的方法求出两字符 串的相似度。LD 回溯路径[9]是矩阵 LD 中从最右下角编辑 距离值所在的元素 dmn 按一定规则上溯至最左上角元素 d00 时,由遍历过的单元格组成的一条从右下至左上的路径。 回溯路径的部分意义在于:路径所经过的各类单元格的个 数与 LD 距离、 2 个串的公共子串长度都有直接的数量关系, 求解 LD 回溯路径的规则见文献[9]。 2.2
Solution Algorithm of String Similarity Based on Improved Levenshtein Distance
JIANG Huaa,b, HAN An-qia,b, WANG Mei-jiaa,b, WANG Zhenga,b, WU Yun-linga,b
————————————
Baidu Nhomakorabea
相结合,编辑距离在中文背景下增加“替换”原子操作; 在应用领域方面,编辑距离近似字符串和空间结合以支持 多种查询,近似字符串匹配和在数据库上的关键字检索相 结合等。文献[2-3]将整条记录作为一个字符串,通过计算 2 个字符串的编辑距离来判断 2 条记录是否相似; 文献[4-5] 分别提出了 2 种计算字符串相似度的公式;文献[5]通过计 算前后非相邻字符间的交换操作,改进了编辑距离算法, 实现了编辑操作的最小化。文献[6]计算词汇之间的语义距 离,同时赋予不同编辑操作不同的权重实现了相似句子检 索。虽然后人对编辑距离增加了原子操作“替换” ,但编辑 距离规定的编辑操作仍不够灵活。