段落中多个短语的模糊匹配算法

CHa*_*awk 5 database string algorithm search fuzzy-search

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

目标:

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

示例段落:

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

就像我说的,我们将从魁北克市出发,然后可能开车到 米拉米奇,然后前往哈利法克斯。两天后我们要去 布雷顿角。最后,我们想去艾德维科特港看看芬迪湾迪格比圣伊丽莎白码头等景点

以后再聊!

预期成绩

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

问题

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

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

这是我目前的方法,但速度非常慢且效率低下。有没有一种聪明的方法可以实现我正在寻找的目标?