模糊匹配段

时间:2016-06-21 22:56:34

标签: database string algorithm search fuzzy-search

首先,我不是在寻找实际的模糊匹配算法。我们同时使用Dice的Coefficient和Levenshtein距离。我正在寻找最聪明的方法来利用这些算法。

目标:

我试图按照它们出现的顺序检测文本段落中的城市名称。我们有一个约100万个位置名称的列表。我想搜索一段文字,并检测其中一个位置是否存在,然后存储该城市。位置名称可以是单个或多个单词。

示例段落:

  你好妈妈!山姆和我正在考虑通过加拿大的道路绊倒   下个月。我们知道我们已经可以住在魁北克省的约翰家   城市即可。我知道你已经在加拿大旅行了很多,所以我想得到   你的建议。

     

就像我说的那样,我们从魁北克市开始,然后开车去    Miramichi 前往哈利法克斯。 2天后我们想去   布雷顿角。最后,我们想查看倡导港来查看   像芬迪湾 Digby ,以及圣伊丽莎白码头

     

尽快和你谈谈!

预期结果

  • 加拿大
  • 魁北克市
  • 加拿大
  • 米拉米希
  • 哈利法克斯
  • 布雷顿角
  • 倡导港湾
  • 芬迪湾
  • 迪格
  • 圣伊丽莎白码头

问题

我目前的包版是如何检测多个单词的位置名称。我知道我可以将段落分成单词,然后将它们与我的列表进行比较,例如:

  1. 模糊匹配第一个单词与我的位置名称列表
  2. 如果不匹配,则模糊匹配(第一个单词+第二个单词)与我的位置名称列表
  3. 如果不匹配,则模糊匹配(第一个+第二个+第三个单词)与我的位置名称列表
  4. ...等
  5. 这是我目前的方法,但它非常缓慢且效率低下。有没有一种聪明的方法可以完成我正在寻找的东西?

1 个答案:

答案 0 :(得分:1)

我认为一些字符串匹配算法非常适合您,

以下是他们的列表:String Matching Algorithms

在您的情况下,我认为您需要多个匹配模式字符串,例如Aho–Corasick algorithm