【发布时间】:2018-01-15 07:38:52
【问题描述】:
我需要使用 python 有效地匹配字符串中的一个非常大的关键字列表 (>1000000)。我发现了一些非常好的库,它们试图快速做到这一点:
1) FlashText (https://github.com/vi3k6i5/flashtext)
2) Aho-Corasick 算法等
但是我有一个特殊的要求:在我的上下文中,如果我的字符串是“XXXX 是 YYYY 的一个很好的指示”,则关键字“XXXX YYYY”应该返回匹配项。请注意,'XXXX YYYY' 不是作为子字符串出现的,但字符串中存在 XXXX 和 YYYY,这对我来说已经足够匹配了。
我知道如何天真地做到这一点。我正在寻找的是效率,还有更多好的库吗?
【问题讨论】:
-
很高兴知道您的幼稚解决方案,而不是重复它们。其中一个想法可能是从字符串中删除不在关键字列表中的所有内容,然后应用其中一个快速库。
-
@Maciek 天真的我的意思是将多词关键字转换为一个列表,并用一个和条件分别匹配每个元素(这是不使用 fats 库)。您的建议假设 YYYY 发生在 XXXX 之后,这可能也不正确。
-
好的,我明白了。你的问题不清楚。
-
您是在寻找空格分隔的模式还是更通用的模式?
-
@tripleee 空格和标点符号分开最适合我的情况
标签: python string pattern-matching string-matching keyword-search