字符串算法比较VB.Net

时间:2015-11-16 11:54:36

标签: vb.net string excel algorithm

我想问一些建议,因为我已经这样做了一个星期。 它基本上是一个数据清理程序。 我有这个excel文件,其中包含数千个公司名称,我有这个数据库,其中包含正确的公司名称。 我想要的是阅读我已经做过的excel文件,并将excel文件中的每个公司与我在数据库中的值进行比较。例如

Excel中的数据

  • 惠普,哥斯达黎加
  • Hewlett-Packard(HP)
  • Hewlett-Packard Singapore(Private)Limited

数据库中的数据

  • 惠普

它将自动检测excel中的那3个值是Hewlett-Packard,因为excel是自由类型的形式。我想纠正输入的所有内容,并在我的数据库中找到类似的值。就像惠普拼写错误一样,它会自动告诉它的惠普。有什么想法吗?

这就像一个自动完成,但有思想。自动填充但决定正确的值

我在VB.Net btw中这样做。我正在研究模糊搜索算法和levenstein和东西。但我仍然不知道如何使用

1 个答案:

答案 0 :(得分:1)

请参阅我的博客Solving the right problem,这有点类似。你可能最好做一个简单的匹配并将任何失败输出到你手动编辑的文本文件。这很苦差,但它会完成工作。当你开始谈论Levenstein距离和模糊搜索时,你就会把一个简单的,如果枯燥的任务变成一个研究项目。

如果您的数据库仅包含“数千”(而不是数百万)名称,那么您可以做的一件事就是将所有名称加载到列表中,然后对它们进行排序。然后在Excel文件中对名称进行排序。然后浏览两个列表(标准合并类型算法)。例如,您可能在数据库中:

Hasbro
Hewlett Packard
Home Depot

并在Excel文件中:

Grainger
Halliburton
Hewlet Packard, Costa Rica
Hewlett Packard (HP)
Humana

使用合并算法,您将“Hewlet Packard,Costa Rica”与“Hewlett Packard”进行比较,您甚至可以将其作为建议的替代品进行输出。这可能构成了你的大多数错误。

在任何情况下,我强烈建议您使用计算机识别不匹配项,然后手动解决它们。这通常是解决此类问题的最快方法。