您如何建议过滤包含巨大列表中定义的攻击性词语的注释

Qfe*_*zes 3 java search spring filtering hibernate

简而言之:

JAVA /休眠/ AJAX /用SpringMVC

我想这是由用户发布的每个评论应该在服务器端读取存储到数据库中之前,并拒绝评论是否包含令人反感的文字.

攻击性文本列表相当庞大(可能是数千个).看看这个示例列表:http://onlineslangdictionary.com/lists/most-vulgar-words/

我想迭代这个列表并执行如下函数并不是那么快.还有其他方法可以更快地完成此过滤吗?您认为搜索超过千分之一的项目会对资源CPU/RAM产生重大影响吗?欢迎任何建议!

for(String offensiveText : offensiveTextList ){     
    if(commentText.contains(offensiveText )){
         //reject comment
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:攻击性项目列表可以包含由其中的几个单词组成的项目(如3个单词的文本,并且可以包含停用词).它甚至可以包含非字母字符,如*&^%.

如果注释包含相应的攻势项目(正是相同的字母),那么它被认为是拒绝

ole*_*sii 6

您可能需要使用一些自然语言处理库.如果你要将评论中的每个M字与列表中的N个冒犯性字进行比较,那么你的算法复杂度就会O(MN) = O(N^2)很高.

看一下Lucene堆栈,您可能会发现一些非常好的想法,例如如何标记注释并通过删除无意义的单词来减少输入.

另请参阅论文:"在新闻文章中区分事实信息与侮辱或侮辱性消息的词语或短语"