在处理数据时,有时需要找出有错误的数据或对数据进行重复数据删除。对于重复数据删除,如果是存储在数据库中,我认为用一条sql就可以完成,但是很难找出数据中错误的数据,只能人工判断。举个例子:比如一批账单中,存储了所有的企业名称,但是如果要统计企业的实际数量,我们可能会说,如果是在数据库中,那不是直接有区别的出来了吗?是的,我们可以用distinct去掉重复的企业,但是看看留下来的企业名称,“XXX科技有限公司”“XXX科技有限公司”。只要手工输入姓名,难免会出错。前两个名字肯定会被sql统计成两个公司,你看眼睛就知道这两个公司是一个公司。那么,如果出现这种情况,计算机如何帮助我们找出这些错误的企业名称呢?
在这里,我给大家推荐一个Levenshtein算法。通过这个算法,我们可以计算出两个文本之间的一个阈值,我们简单的称之为相似度。现在假设数据库里有一个企业名称表,里面的名称都是手工输入的。我们可以通过这个算法来计算企业名称的相似度。一般我们在上面设置这个阈值,就可以找出几乎所有人手动输入的错误。在实际应用中,我们可以将这个阈值存储在数据库中,并在这些阈值中选择一个合适的阈值来找出所有相似的名称。
下面是一个Java代码示例:
调用实例: