【问题标题】:How to match only whole words with Aho corasick?如何仅将整个单词与 Aho corasick 匹配?
【发布时间】:2020-08-30 02:14:34
【问题描述】:

我们的 ruby​​ on rails 应用程序使用 aho corasick gem 来查找任何给定文本是否包含任何预先列出的坏词(这些是在加载应用程序时从静态配置中挑选出来的)。

但是,使用它会产生一些误报。例如,如果我的配置中的坏词是“abc”,那么包含“habcd”的文本也会被标记,这不是本意。

所以,我尝试将配置词从“abc”更改为“abc”(在单词前后添加空格)。 但是,这有另一个缺点,即“abc is xyz”之类的文本将不会被标记,因为它应该是。所以,我还必须在我的配置中添加另外 2 个单词 - “abc”和“abc”,同样我需要在我的配置中添加“-abc”、“abc-”、“:abc”等,使配置相当大,因为除了 abc 之外还有很多这样的词。

所以,我在想是否可以在我的配置中输入某种正则表达式,例如 [",-" "]abc[",-" "] 以便涵盖所有上述情况并且没有会发现误报。

我们使用 gem 'aho_corasick', '0.1.0' 和 ruby​​ - 1.9.3 和 rails - 3.2.8

非常感谢任何帮助。提前致谢!! :)

【问题讨论】:

  • 好问题,您找到解决方案了吗?我也有同样的问题。

标签: ruby-on-rails regex string pattern-matching aho-corasick


【解决方案1】:

解决此问题的最简单方法是使用标准实现获取所有匹配项,然后删除第一个和最后一个字符前后没有单词分隔符的匹配项。在一般情况下,不会对性能造成重大影响,因为您的匹配项很少。

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 2018-04-05
    • 2012-03-29
    • 2017-08-13
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多