请教下java中关于敏感词检测程序的设计思路?

发布于 2021-11-23 14:38:55 字数 371 浏览 738 评论 10

如题,现在手头有现成的敏感词库文件(格式是“敏感词|等级”),还有分词工具jcseg,项目工程里要实现一个对传入的文本(100~200字)进行敏感词检测的功能。 

一开始我的思路是这样:

  1. 项目启动时对载入敏感词库作为缓存(一个大map,敏感词为key,等级为value)
  2. 对请求传入的文本分词,遍历分词结果,每个分词在map中查找,如果有值,则请求文本存在敏感词 

今天百度了下,还有其他方法:如项目加载时把敏感词库拼接成一个大的正则表达式,然后直接对文本匹配(貌似不用预先分词),这样效果会比我想的更好吗? 或者说还有没有其他敏感词检测方案?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

爱的故事 2021-11-28 15:24:02

正则在过滤词组多的时候,效率很慢。 分词相对更准确,比如是‘他妈`是过滤词,那么,那个弹吉他妈妈唱的真好听。就不会被过滤,而正则就肯定匹配上了。

狼亦尘 2021-11-28 15:23:35

这个我也做过,我是用的多模匹配,wumamber算法,如果敏感词典不是很大的话可以试试。

旧伤慢歌 2021-11-28 15:18:57

不要忽略网民的智慧

尐偏执 2021-11-28 15:13:01

http://www.cnblogs.com/chenssy/p/3751221.html#2966041

顾忌 2021-11-28 15:11:58

应该要用正则表达式吧?

顾挽 2021-11-28 13:13:47

谢谢,我说的等级可能就是频次吧,第一次接触这块,没啥概念。

自此以后,行同陌路 2021-11-28 05:41:31

以前好像看到过一个方案,但敏感词没有等级之说,只要你先把词库set进类中,然后传入文本,它就会反馈出现过1次以上的敏感词,并返回出词和出现的次数。你搜搜,好像是用树形节点实现的算法,貌似非常快。

无边思念无边月 2021-11-28 02:59:03

jcseg作者亲自回答,真荣幸:) 确实目前我的需求比较简单,只是从一个短文本中找出有没有敏感词而已。昨天查了很多资料,最后决定还是先用把敏感词载入做成一个关联数组和索引数组,然后对目标文本进行逐字逐词查敏感词索引的方法来做。 参考了 http://bbs.9ria.com/thread-88142-1-1.html 这个帖子里的方法。以后如果有更复杂的需求,还是会考虑分词处理一下

策马西风 2021-11-27 14:36:03

回复
过奖了,其实我很早就看到你的提问了。苦于新安装的系统无法输入中文。 是一个有效的方法。。

笑红尘 2021-11-27 05:25:55

从最终的过滤效果来看,其实使用正则是比分词后更好的.

例如:骂人,假设是一个敏感词,如果写成:"骂 人", jcseg是会切分成 骂/ 人/ 两个词条的.

但是实际上,人还是会看成本身的意思,而"/骂s{1,}人/"这个正则 则可以过滤掉.

目前我使用的方法也是正则,如果你要使用Jcseg,Jcseg从1.9.4开始支持检测模式切分,正好可以用于这个需求:也就是直接返回词库中有的词条,你将所有的敏感词加入到词库中,只要返回了词条就是敏感词.

具体还是要考虑你的使用场合吧.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文