什么是字典中少量模式的最简单快速的字符串匹配算法,以找到一个小字符串

问题描述 投票:0回答:1

我有大量包含小对话的文本文件,这些对话本身包含小字符串(<1000字)。我还有一个我想在这些文本文件中搜索的标签和短语列表。

所以,我需要一个搜索算法

  1. 容易明白。
  2. 易于实施。
  3. 并在时间效率方面给出相当好的结果(对于每个文件)

有什么建议?

python algorithm pattern-matching string-matching
1个回答
1
投票

当您想要在一组单词中查找单词时,选择的数据结构就是trie。 trie是一棵树,每个节点都传达一个字母并指向词汇表中的所有下一个字母。

例如,如果集合是'cat''carrot''clock',则trie的根将指向节点'c'。然后'c'将指向'a''l''a'指向't''r'。 trie结构可以继续到单词的结尾,或者您可以单独保留单个后缀。

现在,如果你搜索单词'card',你将遵循节点'c' > 'a' > 'r'并看到没有'd'并得出结论该单词不存在。

https://en.wikipedia.org/wiki/Trie


你可以根据你的情况调整这个想法,将“word”替换为“sentence”,将“letter”替换为“word”。由于单词集大于字母表,您必须在每个节点中使用散列图,以将可能的单词与指向以下节点的指针相关联。

要解决您的初始问题,请依次取出每个单词并进行比较,并将其与其继承者匹配。我猜总的运行时间将是文本中单词数量乘以匹配的平均长度的顺序,乘以执行hashmap查找所需的时间。


为了便于开发,请考虑首先在标准trie中实现单词查找。

© www.soinside.com 2019 - 2024. All rights reserved.