【问题标题】:Algorithm for Fuzzy Matching Multiple Word Phrases in a Paragraph段落中多个单词短语的模糊匹配算法
【发布时间】:2016-10-23 16:18:43
【问题描述】:

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

目标:

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

示例段落:

嗨,妈妈!山姆和我正在考虑穿越加拿大 下个月。我们知道我们已经可以住在魁北克的约翰家了 城市。我知道你在加拿大旅行了很多次,所以我想去 你的建议。

就像我说的,我们将从魁北克市开始,然后可能会开车到 Miramichi,然后前往哈利法克斯。 2天后我们想去 布雷顿角。最后,我们想看看 Advocate Harbor 看看 芬迪湾迪格比圣伊丽莎白码头

马上和你谈谈!

预期结果

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

问题

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

  1. 根据我的位置名称列表模糊匹配第一个单词
  2. 如果不匹配,则对我的位置名称列表进行模糊匹配(第一个单词 + 第二个单词)
  3. 如果不匹配,对我的位置名称列表进行模糊匹配(第一个 + 第二个 + 第三个单词)
  4. ...等

这是我目前的方法,但它非常缓慢且效率低下。有没有一种聪明的方法可以完成我正在寻找的东西?

【问题讨论】:

  • 能否将段落视为单行字符串,并使用某种字符串匹配算法?例如en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm 匹配多个模式(在您的情况下为位置)
  • 是的,这正是我想要的。它不会进行模糊匹配,但效果很好。将此作为答案提交,我会将其标记为正确。
  • 谢谢。很高兴知道它有帮助:)

标签: database string algorithm search fuzzy-search


【解决方案1】:

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

这是他们的名单:String Matching Algorithms

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 2014-03-04
  • 2015-04-09
  • 2014-01-10
  • 1970-01-01
相关资源
最近更新 更多