计算两个字符串相似度的算法(Java 实现)

  1. 公司的业务逻辑是:通过 OCR 扫描出来的 Word 文档,可能出现文字错误,乱码,或者缺少的情况。
  2. 由于这种 word 文档都是财务报表之类的,里面的专业用词都是固定的(做成 wordmodle 的形式),所以想用 word 文档中的文本和 wordmodle 进行比较,相似度较高的直接替换。

可能大家对 OCR 扫描出来的文档比较陌生,我贴张图给大家看看:
clipboard.png

阅读 5.5k
2 个回答

没啥特殊要求的话,我用的是levenshtein distance:

莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种。指两个字串之间,由一个转成另一个所需的最少编辑操作次数。允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

这里也有样例代码
https://en.wikibooks.org/wiki...

新手上路,请多包涵

建议使用编辑距离,楼上的大神已经说的很清楚了,我目前也是这种做法。还有可以选择的一种方法是算cos

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题