一尘不染

您如何建议过滤包含在庞大列表中定义的令人反感的单词的评论

hibernate

简而言之:

JAVA /hibernate/ AJAX / SpringMVC

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

令人反感的文字清单相当庞大(也许数千个)。查看以下示例列表:http : //onlineslangdictionary.com/lists/most-vulgar-
words/

我猜想遍历此列表并执行如下所示的功能并不是那么快。还有其他方法可以更快地执行此过滤器吗?您认为搜索超过千分之一的项目会对资源CPU /
RAM产生重大影响吗?任何建议都欢迎!

for(String offensiveText : offensiveTextList ){     
    if(commentText.contains(offensiveText )){
         //reject comment
    }
}

更新:令人反感的物品清单中可以包含由几个词组成的物品(例如3词文字,也 可以 包含停用词)。它甚至可以包含非字母字符,例如*&^%。

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


阅读 218

收藏
2020-06-20

共1个答案

一尘不染

您可能需要为此使用一些自然语言处理库。如果您要比较注释中的每个 M 词和列表中 N个 令人反感的词,那么您的算法复杂度将O(MN) = O(N^2)很高。

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

也请看以下论文:“区分事实信息与带有新闻报道中的单词或短语的侮辱性或侮辱性消息”

2020-06-20