敏感字词过滤业务涉及的知识点

目前网络言论环境相当自由,键盘侠层出不穷,拿起键盘一梭子就是问候祖宗十八代的现象屡见不鲜,这就需要应用有能力对这些低俗敏感词进行过滤,以营造绿色的网络环境,虽然“***”大家都心知肚明,但是表面功夫还是要做的,起码不能让家长发现我们的应用过于低俗。下面我们谈谈这个业务系统的设计和相关知识点。

1、敏感字词过滤系统的基本要素:敏感字字典敏感词匹配算法脱敏处理

2、敏感词过滤算法的设计

1)基于正向匹配:基于正向匹配会对字符串进行遍历操作,在字符串寻找满足敏感字典匹配的最长或者最短子串。这个脱离了句子的语义,可能会误判,但不会遗漏。

2)基于分词:基于分词的算法会先将输入文本进行分词处理,然后再查看分词的列表中是否包含敏感词,这种算法依赖于分词算法的可靠性,分词库参见https://www.cnblogs.com/lishanyang/p/6017155.html,这位老哥总结的挺多个,我觉得分词准确率比较高的是word。

3、敏感词匹配算法

1)KMP算法

2)DFA状态机

3)字典树

4)Bloom过滤器(适用于分词)。可以使用Guava、Redis、Spark等提供的Bloom过滤器。

5)搜索引擎:Sphinx、Elastic、Solr

4、扩展

1)过滤系统的严格等级设计

正常 – 根据字词进行匹配,比如敏感词“尼玛”只匹配“尼玛”。
严格 – 根据拼音和发音进行匹配,比如敏感词“尼玛”匹配“尼玛”也可以匹配“泥马”。
非常严格 – 根据拼音进行匹配,比如敏感词“尼玛”匹配“尼玛”也可以匹配“泥马”,也可以匹配“你骂”。

这种设计需要拼音注音库的支持,比如Pinyin4j。

设计通用匹配接口需要考虑:

1、如何设计TextMatcher使其能同时匹配分词和正向匹配两种MatchText?

2、注音操作如何匹配?现在的解决方案是将字典的所有单词翻译成拼音,在匹配时将输入字符串翻译成拼音,比较两者。

github代码:https://github.com/delin10/business

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子的木木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值