【发布时间】:2013-12-24 11:03:15
【问题描述】:
我有一本包含大量字符串的字典。每个字符串可以有 1 到 4 个标记(单词)。示例:
字典:
- 肖申克的救赎
- 教父\
- 低俗小说
- 黑暗骑士
- 搏击俱乐部
现在我有一个段落,我需要弄清楚 para 中有多少个字符串是字典的一部分。 例如,当下面的段落:
肖申克的救赎在 IMDB 前 250 名中被认为是有史以来最伟大的电影。至少有一两年我偶尔会查看 IMDB 前 250 名 肖申克已赎回 与教父争夺头把交椅。
对字典运行,我应该得到粗体字作为字典的一部分。
我怎样才能用最少的字典调用来做到这一点。
谢谢
【问题讨论】:
-
字典应该有多大? '我怎样才能用最少的字典调用来做到这一点' 所以它关于查找复杂性,而不是内存使用 - 对吗?编程语言有什么限制吗?
-
段落如何给出,一个长字符串还是一个文件?
-
字典有几百万个多标记字符串。是的,查找复杂性是主要问题。没有限制 reg 编程语言。段落将是一团文本
-
Aho-Corasick string matching algorithm 是您想要的。它构建了一个 trie,并且搜索非常有效。有趣的是,我在 Google 中输入了问题标题,发现 en.wikipedia.org/wiki/String_searching_algorithm 作为第二个搜索结果,点击“使用有限模式集的算法”让我找到了 Aho-Corasick。学习如何使用搜索引擎会很有帮助。
-
文本的预期长度是多少?字典元素本身有多长?
标签: string algorithm search string-matching