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

Algorithm for Fuzzy Matching Multiple Word Phrases in a Paragraph

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

目标:

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

示例段落:

Hi Mom! Sam and I are thinking of road tripping through Canada in the next month. We know we can already stay at John's house in Quebec City. I know you have traveled a lot in Canada, so I wanted to get your advice.

Like I said, we'd start in Quebec city, then probably drive to Miramichi before heading to Halifax. After 2 days we want to go to Cape Breton. Finally, we want to check out Advocate Harbor to see things like the Bay of Fundy, Digby, and the Pier of St. Elizabeth

Talk to you soon!

预期结果

问题

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

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

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

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

这是他们的列表:String Matching Algorithms

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