YZSpamFilter 易用且有效的中文垃圾信息过滤工具 - 文章教程

YZSpamFilter 易用且有效的中文垃圾信息过滤工具

发布于 2021-09-19 字数 4349 浏览 898 评论 0

YZSpamFilter 易用且有效的中文垃圾信息过滤工具

用途

可为帖子、邮件、博客等提供中文垃圾信息过滤服务,开发人员提供训练数据即可生成自己所需的过滤模型,已被业界多个公司使用

特点

  • 准确性高:离线测试真实垃圾帖,垃圾信息过滤准确率在90%以上;在线测试真实垃圾帖,指标在80%以上;
  • 实时性好:可提供实时的垃圾信息过滤服务;
  • 模型可自动更新:支持自动更新模型,增加模型的有效性。

依赖

使用前需安装必要的 python 库,包括 jieba,flask

pip install -r requirements.txt

使用方法

1、准备两份垃圾信息的文档,一份为正常的信息,一份为垃圾信息,每一行为一条数据,如本项目内的 ham.txtspam.txt

注: 正负样本数量最好各大于1000

2、运行数据准备程序 createTrainAndTestData.py,生成训练与测试数据 示例: python createTrainAndTestData.py 运行完毕后,会生成 trainPos.txttrainNeg.txttestPos.txttestNeg.txt,分别对应训练正样本、训练负样本、测试正样本、测试负样本

3、运行训练测试程序 filter.py 示例: python filter.py 该程序首先会利用上步得到的训练样本训练出垃圾信息过滤的模型,然后对上步得到的测试样本进行测试并打印测试结果 其中tar为正确接受率,及正样本测试正确率,trr为错误拒绝率,即负样本测试正确率,accuracy为整体正确率 运行一次后,程序将模型保存为pickle文件,下次会直接从该文件中读取模型

特别提示: filter.py 程序最后的 single judge 为调用示例

4、运行 restful api 主程序 mainApi.py 示例: python mainApi.py 该程序首先会调用 filterApi.py 程序,为垃圾信息过滤提供网络接口服务,采用默认的网络接口时,会开启 resuful api 服务,此时调用示例为:

curl 'http://0.0.0.0:5060/api/spamfilter?query=赚钱test宝妈tes日赚学生兼职*.@打字员'

query 的信息为垃圾信息时,返回 {"spam": "True"};反之,返回 {"spam": "False"}

5、考虑到实际使用过程中,需要模型进行自动更新,因此 autorefresh.py 为垃圾信息的自动更新示例 示例: python autorefresh.py

5.1、当模型错误的将某个正常信息当做垃圾信息时,对于大多数垃圾信息过滤服务而言,问题较为严重,因此,示例中分两步

f.Algorithm.discover(FalseRejectstr, True) --- 将该信息从垃圾信息的统计分布取出
f.Algorithm.cover(FalseRejectstr, False) --- 将该信息加入正常信息的统计分布

5.2、当模型错误的将某个垃圾信息当做正常信时,问题严重性较低,因此,只做一步

f.Algorithm.cover(FalseAcceptstr, True) --- 将该信息加入垃圾信息的统计分布

注:True 表示信息为垃圾信息,False 则相反,实际使用过程中,上述两个步骤可根据实际需求自由修改,开发人员可设计程序与数据库对接,实现模型的自动更新

6、config.py 中存放了若干程序参数,使用过程中可自由配置,各参数说明如下:

'bind_addr': '0.0.0.0',   #服务绑定地址
'bind_port': 5080,        #服务绑定端口
'threshold': 83,                          #过滤阈值
'stopwords_file':'stopwords_common.txt',  #停止词文件
'classify_model':'filter.pickle',         #过滤模型
'ham_file':'ham.txt',                     #正常信息
'spam_file':'spam.txt',                   #垃圾信息
'train_rate':0.5                          #正常、垃圾信息中用于训练的信息比例(范围0到1)

效果统计

  1. 测试效果:tar = 99.49%,trr = 93.48%,accuracy = 97.61%
  2. 线上效果:经有赞线上效果统计,10.10 – 10.16日一个星期内,对于有赞 bbs 后台拦截统计,共拦截到垃圾帖子 289,其中误拦截为 9,漏拦截为 43

声明

本工具内所有数据与指标统计皆基于有赞BBS后台真实数据。

项目地址:https://github.com/youzan/YZSpamFilter

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

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

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2512 文章
30 评论
81924 人气
更多

推荐作者

qq_iQVWB

文章 0 评论 0

gyhjy

文章 0 评论 0

dianjvnan

文章 0 评论 0