最近拿python做个敏感词过滤的程序.完成了一部分,还有待完善.现在将已经做的部分说明一下.
效果示例:
假设敏感词库中有 江责民 法论功 小泽玛莉亚 学潮 这几个词语
原文: ...法<>--=论,,.功
包含敏感词: 法<>--=论,,.功>
原文: 大家说学习fa仑功夫好啊
包含敏感词: fa仑功
原文: 我倒江.;;>泽.(*民
包含敏感词: 江.;;>泽.(*民
原文: 小..,,(())ze.,玛丽亚大家都喜欢
包含敏感词: 小..,,(())ze.,玛丽亚
原文: 为什么不让我搜索学潮
包含敏感词: 学潮
原文: 为什么不让我搜索xue潮
包含敏感词: xue潮
处理步骤
1.数据预处理,处理掉那些除中文和英文字母之外的字符,转化英文字母为小写.
"大家说.发.lun*>>功是个害人的"->
"大家说发lun工是个害人的->
['大','家','说','发','lun','工','是','个','害','人','的']
2.中文转化为拼音.
['大','家','说','发','lun','工','是','个','害','人','的'] ->
['da','jia','shuo','fa','lun','gong','shi','ge','hai','ren','de']->
_da_jia_shuo_fa_lun_gong_shi_ge_hai_ren_de_
3.敏感词库中的词语转化为拼音,并拼接正则
假设词库中有 江则民 法论功 两个词语.
正则为
"_jiang_ze_min_|_fa_lun_gong_"
4.找到存在敏感词的拼音的位置.
原文: "_da_jia_shuo_fa_lun_gong_shi_ge_hai_ren_de_"
正则: ""_jiang_ze_min_|_fa_lun_gong_""
5.根据拼音的位置找到原文中的实际位置.
这里中文转为为unicode会比较好处理
ps: 还需要解决的问题有两个 同音字 和 交叉字.
比如说敏感词库中有 "学潮",某人的名字叫 "薛超", 这个同音字就会被误判.
哈佛大学潮汐很漂亮.这个交叉字也会被误判,接下来会考虑加入中文分词来处理交叉词