Check sensitive word in Rails

作者:周星 发布:2017-10-07

    在这个世界上,有这么一个神奇的国度,生活在这个国度,你必须知道你在网上那些词语可以说,那些可以不可以说,因为本站所发表的博客都可以评论,哥日夜担惊受怕有人在本网站上留下不和谐的言论,给彼此双方带来不必要的伤害,于是乎在很久之前的一个夜里,有人推荐了哥了这个 gem:和谐宝典

如其 github 官网所述,和谐宝典用于检查输入是否包含中文或英文敏感词,并可替换为特殊字符。生活在天朝,和谐宝典必须人手必备。其特点是速度快、可以输出检测到的敏感词、简单方便,那么现在我们来看看如何使用这一款“宝典”。

首先安装“和谐宝典”:

gem harmonious_dictionary

创建配置文件:

rails g harmonious_dictionary:setup

然后准备敏感词字库,如果你已经有自己的敏感词库,请把中文和英文词对应复制到项目目录config/harmonious_dictionary/ 下的 chinese_dictionary.txt 和 english_dictionary.txt。如果还没有自己的词库,就用和谐宝典预备的好了,请点击此处下载可能让你面红耳赤的的敏感词库,解压并替换。

最后生成序列化的词库,默认使用直接运行:

rake harmonious_dictionary:generate

将会生成 harmonious.hash 与 harmonious_english.yml 词库。

自定义使用运行

rake harmonious_dictionary:generate model = post

将会生成 post_harmonious.hashpost_harmonious_english.yml 词库。

不同与常规敏感词检查正则匹配,和谐宝典对输入的中文以给定敏感词字库做为分词词库做分词处理,把里里面的内容找出来。算法采用自 yzhang 的 https://github.com/yzhang/rseg,和谐宝典对算法做了简化处理以提高效率。

下面我们来看如何使用这一款“宝典”:

你可以在 model 上直接使用:

class Comment < ActiveRecord::Base
  validate_harmonious_of :nickname, message: '昵称里也敢放敏感词...想喝茶了吗'
  validate_harmonious_of :content, message: '内容里不要放敏感词嘛...要喝茶的哦' 
end

或者在任何地方调用:

检查输入是否包含敏感词    HarmoniousDictionary.clean?(your_input)
检查包含的敏感词         HarmoniousDictionary.harmonious_words(your_input)
替换包含的敏感词为*      HarmoniousDictionary.clean(your_input)

当然你也可以自定义使用,例如:

validate_harmonious_of [:title, :body], model: post

这时将会使用 post_chinese_dictionary.hash 与 post_english_dictionary.yml 敏感词库,

同理使用这两个敏感词库

检查输入是否包含敏感词     HarmoniousDictionary.clean?(your_input, 'post')
检查包含的敏感词          HarmoniousDictionary.harmonius_words(your_input, 'post')
替换包含的敏感词为        HarmoniousDictionary.clean(your_input, 'post')

(注:自定义使用时必须有相对应的敏感词库)

注意:和谐宝典目前有一个 bug,如果你在英文字母中夹杂敏感词,和谐宝典不会检测出此敏感词,比如:

abcd敏感词efg

所以暂时还请谨慎使用。

本站博客评论博客功能使用了和谐宝典,您可以尝试评论一个您认为最敏感的词语,但是如果不幸您的敏感词通过了检测并提交成功,系统会记录您的IP,此处呵呵一下你懂的。

如果您对本文有什么意见或建议,请联系博主。

支付宝扫码赞助博主


评论(10)

Qq3

aa第1楼

2015-09-29 04:26:46

Qq3

aa第2楼

sex

2015-09-29 04:37:15

Qq3

aa第3楼

www.sex.com

2015-09-29 04:37:23

Qq1

aa第4楼

<h1>aaa</h1>

2015-09-29 04:38:30

Qq3

aa第5楼

aa

2015-09-29 04:40:09

Qq3

aa第6楼

#aa#

2015-09-29 04:41:37

7楼 来自 呵呵 的吐槽已删除
Qq2

iiichou第8楼

星哥 赶快给你的 blog 弄一个 rss 吧 不然来看一次好麻烦

2015-10-07 02:58:07

Qq1

a第9楼

daf

2015-10-12 01:12:08

Qq1

hello第10楼

test only

2015-12-17 10:07:21