注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

偶有所得,记录在此

有分享交流才有进步,永远不要固步自封

 
 
 

日志

 
 

发布一个敏感词过滤的小项目  

2010-05-11 11:14:10|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
项目背景
-------------------
对于用户发表的内容,我们通常要做一些敏感词的检测,如果敏感词规模很小,逐个词进行 Search 也没啥大问题;但如果敏感词规模很大,并且会逐渐积累,那么就需要一种新的算法来提高检测效率。

实现原理
-------------------
采用红黑树来存储敏感词汇列表,采用全分词算法来检测敏感词。

项目安装
-----------------
>> wget "http://pysoft.googlecode.com/files/filter_keywords-0.1.tar.gz"
>> tar -zxf
http://pysoft.googlecode.com/files/filter_keywords-0.1.tar.gz
>> cd
filter_keywords-0.1
>> python setup.py install

使用样例
---------------
>> import
filter_keywords
>> dir(
filter_keywords)
['FkwDict', '__doc__', '__file__', '__name__', 'filter_keywords', 'fkw_full_seg']

创建字典
>> from filter_keywords import FkwDict
>> fkw_dict =
FkwDict(10)    # 参数为 Hash 的大小,可根据关键词规模自行调整
>> dir(fkw_dict)
['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'add_word', 'load_dict', 'search_word']

添加一个关键词
>> fkw_dict.add_word(u"叮当猫".encode("utf-8"))  # 只接受 utf-8 编码,内部不做编码检测
>> fkw_dict.search_word
(u"叮当猫".encode("utf-8"))
True
>> fkw_dict.search_word(u"叮当猫2".encode("utf-8"))
False

加载字典文件
fkw_dict.load_dict("src/word.txt") # 字典文件只接受 utf-8 编码,每行一个关键词
print fkw_dict.search_word(u'世界'.encode("utf-8"))

注: 网上收集了一个字典文件,下载地址如下:
     http://pysoft.googlecode.com/svn/trunk/c-project/filter_keywords/src/word.txt

敏感词检测
text = u"工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作 "
result = filter_keywords(fkw_dict, text.encode("utf-8"))
print " ".join([unicode(item, "utf-8").encode("GBK") for item in result])

检测结果:
工信 处女 干事 每月 月经 经过 下属 科室 都要 亲口 口交 交代 口交 交换 交换机 技术 技术性 性器 器件 安装 工作

其它信息
---------------
被你看出来了,其实,我是做分词的,全分词算法发布一个敏感词过滤的小项目 -  ChinarenWei - 偶有所得,记录在此
函数
filter_keywords 只是 fkw_full_seg 的 alias。

使用 mem_collector 管理内存,红黑树存储字典条目,经 Valgrind 检测,无内存泄漏。
欢迎下载试用,有问题麻烦及时反馈,谢谢。


注:mem_collector 项目
      http://chinaren.wei.blog.163.com/blog/static/13907612920103225325129/


C 语言接口,请参照 src/test.c 文件。
  评论这张
 
阅读(2708)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017