脏词检测系统
2019-02-19 本文已影响18人
赤子心_d709
背景
最近刚好调用脏词检测,看了下对应的系统大概实现,除了具体的匹配流程实现不便展开,框架层面稍微梳理一下,本质上是一个nlp强相关的系统
词典配置
不同语言配置:如英语,葡萄牙语,阿拉伯语,意大利语等26个字母大小写
中文繁体简体转化: 鎄 锿
中英文符号:〔 %
数字的规范: ⒈ 1
拼音规范,体现在发音习惯上面:zhu zu,ceng cen,
繁体->拼音:蹻 qiao
输入法距离:比如q w在键盘很近
字符大小写
其他:如emoji符号等用于过滤
大致匹配流程:
不同的匹配模式选择,如下面的组合:
繁体内容转简体后匹配,归一化后匹配,同音字和拼音都进行匹配,非连续匹配,组合排列匹配
涉及算法
ac自动机,模糊匹配,trie,gdbt模型,最短编辑距离等
大体上就是根据输入的text,以及查询的词表id,根据匹配模式的选择对text进行处理,和词表里面的词进行比较
系统设计
词表设计:
支持词表的内容的增删改查,每个词表支持不同语言的脏词,比如table 1下面中文是一堆词,英文是一堆词
匹配接口:
支持单个词匹配和批量匹配
指定table ids,language,匹配模式(支持默认),查看匹配结果,返回是否命中(0,1),命中哪个词表的哪些词等具体信息
总结
具体的算法因为是强nlp相关也不算懂,看个框架学习下