Aho-Corasick文字匹配整个单词?

Dot*_*Net 2 java algorithm full-text-search string-matching aho-corasick

我正在使用Aho-Corasick文本匹配,并想知道它是否可以更改为匹配术语而不是字符.换句话说,我希望条款成为匹配而不是字符的基础.举个例子:

搜索查询:"他",

句子:"你好世界",

Aho-Corasick将"he"与句号"hello world"匹配,但是我希望没有匹配.所以,我的意思是"术语"而不是字符.

tem*_*def 7

一种方法是像往常一样使用Aho-Corasick,然后进行过滤步骤,消除所有误报.例如,每次找到匹配项时,都可以确认输入中的下一个和前一个字符是空格或标点符号等非字母字符.这样,您可以获得Aho-Corasick查找的速度,但只考虑在文本中显示为整个单词的匹配项.

希望这可以帮助!


mcd*_*lla 6

一种可能性是在搜索词中包含空格字符,可能在预处理输入后将各种空格(空格,换行符,回车符,制表符...)转换为相同的空格字符.

另一种可能性是,就Aho-Corasick而言,将字母表中的字符视为单词.Aho-Corasick将使用大小为2 ^ 32的字母快速(如果不是更快)工作,其中输入文本中看到的每个单词都被编码为单个字符,因为它将使用大小为2 ^ 8的字母表,其中a像往常一样,字符只是一个字节.

在任何一种情况下,您都必须决定预处理对标点符号的作用.