(二)、社区反垃圾化之文本和谐化处理

序言:在以上篇博客中,我们讲述到了通过计算重复率来鉴别文本是否为垃圾内容,本篇我们就来通过垃圾文本库来鉴定垃圾内容.

前期准备:
需要准备出一个垃圾文本库,用于储存我们收集的垃圾信息文本、可以选择通过数据库储存也可以通过以json或txt文件的形式来进行储存,我这边提前准备了一个文本库,大概有10000+的垃圾词和网址在内.

image

场景:

用户A和B在评论区进行了以下内容留言:

A:我草尼玛...傻逼玩意...
B Go to hell Fuck you...

技术分析:

A和B用户发表的内容中都含有大量的脏词,可直接利用手头词库进行和谐化处理.

PHP代码如下:

function replaceBadWord($text, $replace = '*')
{
    $file = '词库路径';

    if (file_exists($file)) {
        $contents = file_get_contents($file);
        $badWords = explode("\n", $contents);
        $badWords = array_map(function ($badWord) {
            $badWord = base64_decode($badWord);
            $badWord = str_replace(["\n", "\r", "\n\r", '"', ';'], '', $badWord);
            return $badWord;
        }, $badWords);

        foreach($badWords as $badWord){
            //存在脏词就和谐化处理
            if(strpos($text,$badWord) !== false){
                $len = mb_strlen($badWord, 'utf8');
                $text = str_replace($badWord,str_repeat($replace,$len),$text);
            }
        } 
        
        return  $text;
    }
}

实战演示:

将脏词部分进行了和谐化处理.

image

尾:
以上就通过遍历词库来完成了一个脏词的和谐化处理,当然这样处理起来效率可能有点低,可以考虑提前将文本读到内存中,这样就无需每次都去重新读取文件,从而使用PHP来完成简单运算即可.

缺点就是需要维护一个脏词文本库,需要进行不断的维护和更新.

但目前这个办法也是最简单粗暴的形式,只需要维护好脏词的特征,即可完成和谐化处理,但对于项目级产品使用的话,可以尝试使用阿里或网易的文本检测技术,来减轻企业开发成本替代长期的人力资源开发.

就这些,Happy Coding.

image


Sinming
307 声望21 粉丝

Bug总工程师