(二)、社区反垃圾化之文本和谐化处理
序言:在以上篇博客中,我们讲述到了通过计算重复率来鉴别文本是否为垃圾内容,本篇我们就来通过垃圾文本库来鉴定垃圾内容.
前期准备:
需要准备出一个垃圾文本库,用于储存我们收集的垃圾信息文本、可以选择通过数据库储存也可以通过以json或txt文件的形式来进行储存,我这边提前准备了一个文本库,大概有10000+的垃圾词和网址在内.
场景:
用户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;
}
}
实战演示:
将脏词部分进行了和谐化处理.
尾:
以上就通过遍历词库来完成了一个脏词的和谐化处理,当然这样处理起来效率可能有点低,可以考虑提前将文本读到内存中,这样就无需每次都去重新读取文件,从而使用PHP来完成简单运算即可.
缺点就是需要维护一个脏词文本库,需要进行不断的维护和更新.
但目前这个办法也是最简单粗暴的形式,只需要维护好脏词的特征,即可完成和谐化处理,但对于项目级产品使用的话,可以尝试使用阿里或网易的文本检测技术,来减轻企业开发成本替代长期的人力资源开发.
就这些,Happy Coding.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。