多字词Bloom Filter的最长匹配前缀

时间:2014-03-23 07:49:18

标签: java string-matching bloom-filter

我在Java中使用Bloom Filter实现了一个字典/检查器。但是,我发现最适合我的应用程序找到多字词的最长匹配前缀。

例如,在我的Bloom Filter中,我有以下几个字:

{'mac', 'macbook', 'macbookpro'}

经过一些文本分析后,我发现人们倾向于改变他们写某个单词的方式,例如

'I love my mac book pro' or 'I love my MacBook Pro' or 'I love my macbookpro'

现在让我处理这样的句子,如果这是在布隆过滤器中,我会单独检查每个单词。如果没有,我希望过滤掉这个词。例如,

I -> no
love -> no
my -> no

但现在是棘手的部分。 “Mac”肯定在字典中,但“macbook”也是如此,甚至更好的是“macbookpro”

mac -> yes
book -> no
pro -> no
macbook -> yes
macbookpro -> yes
由于'macbookpro'是最长的,我希望将这个词作为最终输出。

是否有一些算法或有效的方法让我用Bloom Filter完成这个?

修改 需要注意的是,这样的多词术语不一定需要先匹配,然后可能不匹配才能成为最长的词。

例如,在我的字典中只有单词{'macbook', 'macbookpro'}

我有句'I love my mac book pro'

此处,'mac'一词会首先导致不匹配,但'macbook''macbookpro'会匹配。

0 个答案:

没有答案