编辑距离算法应用总结

  项目中应用了编辑距离算法解决问题,做个总结。作为业务团队的同学,平时应用算法解决问题的机会并不多,但是还是要有这个能力 / 思维,对技术架构 / 技术选型都有帮助,遇到算法资源不足的情况,也能顶上。编辑距离算法可以用于衡量文本相似度,进而解决文本的模糊搜索 / 匹配问题。编辑距离又叫 Levenshtein 距离(莱文斯坦距离),区别于汉明距离(等长字符串对应位置的不同字符的个数),不仅可以替换字符,还可以增删字符。算法时间复杂度是 O(m*n),如果文本数量(t)较大,遍历文本集合,计算关键字和文本 Pair 的编辑距离,再做 TOP_K 遴选,时间复杂度为 O(m*n*t + logt*t),当 t 较大时将会存在性能问题。这个性能问题的一种解法是将莱文斯坦距离降级为汉明距离,不考虑增减字符的情况,用利用 LSH 算法的思想进行分桶匹配,快速锁定一些桶,只匹配这些桶内的文本,也就是快速排除一些桶,减少匹配次数,从而提升速度。(LSH 算法的应用下次展开)。在我的项目中,文本数量在 1w 左右,并且我们通过边缘计算的方式化解服务器的负载压力,最终还是应用编辑距离算法解决我们业务的文本模糊匹配问题。

  编辑距离算法是个经典 DP (动态规划)问题。完美契合 DP 问题的两大特征,一是问题可分解为规模更小的子问题,二是子问题解之间存在推导关系。对于编辑距离求解问题,我们把 S1(长度 m ) 和 S2 (长度 n) 的编辑距离定义为 d(m, n),用 d(m-1, n) 表示 S1 的子串(移除最后一个字符&#x

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值