鱼C论坛

 找回密码
 立即注册
查看: 7652|回复: 31

[技术交流] python小练习(091):基于keras快速搭建神经网络(实战篇)之中文垃圾邮件自动识别

[复制链接]
发表于 2017-4-14 13:18:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天继续来分享基于keras搭建的神经网络实现中文垃圾邮件的自动识别。

上一次的小练习分享了如何处理英语文章,那么其实处理中文语句也是差不多的过程,只不过需要多一步中文的分词,我们可以用jieba来实现。

我从我的邮箱中,随机抽取了300封邮件并人工做好了标记,垃圾邮件标记为[1,0], 非垃圾邮件标记为[0,1]。

邮件我只选取了发件人和主题作为分类依据,格式如下:
网易有钱【有钱福利】投资1块钱,提现50元!3月21日
平安银行集团安全出行意外保障理财调查赠险中心耙徽马免费赠送壹佰万安全出行意外保障登记赠险筷级龙3月20日
Microsoft 帐户团队Microsoft 帐户安全代码23月19日
Microsoft 帐户团队Microsoft 帐户异常登录活动3月19日
随手记团队随手记@您,您有一个888元现金大礼包,马上签收>(AD)3月18日


这300封邮件都保存在mail.txt文件中,方便读取。

数据源准备好以后,接下来就要做数据清洗和词向量转化,这样才能输入计算机被机器学习。
def filtermail(s):
    sigbol = ',。“”~!@#¥%……&*()——+=【】{}、|;:‘’《》?!#$^&()[]{};:",.<>/?\\-'
    for sig in sigbol:
        s = s.replace(sig, '')
    return s
我定义了一个函数,用来剔除无用的符合
然后用jieba分词进行中文语句的分词,做成词汇表,然后依次统计词频。最后再把得到词向量做成训练模型。

我用了前250组数据进行训练,用最后的50组数据进行模拟测试。

来看看结果吧。
Number 1: Predict: [[ 0.98634988  0.01365006]] , Label : [[1 0]]
Number 2: Predict: [[ 0.203951    0.79604894]] , Label : [[0 1]]
Number 3: Predict: [[ 0.26326886  0.73673117]] , Label : [[0 1]]
Number 4: Predict: [[ 0.97269666  0.02730336]] , Label : [[0 1]]
Number 5: Predict: [[ 0.33845302  0.66154695]] , Label : [[1 0]]
Number 6: Predict: [[ 0.50604987  0.49395013]] , Label : [[1 0]]
Number 7: Predict: [[ 0.35238007  0.6476199 ]] , Label : [[1 0]]
Number 8: Predict: [[ 0.61632556  0.38367444]] , Label : [[1 0]]
Number 9: Predict: [[ 0.23883623  0.76116377]] , Label : [[0 1]]
Number 10: Predict: [[ 0.13383667  0.86616331]] , Label : [[0 1]]
Number 11: Predict: [[ 0.04003907  0.95996094]] , Label : [[0 1]]
Number 12: Predict: [[ 0.79294378  0.20705624]] , Label : [[1 0]]
Number 13: Predict: [[ 0.97742522  0.02257477]] , Label : [[1 0]]
Number 14: Predict: [[ 0.85788316  0.14211683]] , Label : [[1 0]]
Number 15: Predict: [[ 0.52055824  0.47944167]] , Label : [[1 0]]
Number 16: Predict: [[ 0.7491442  0.2508558]] , Label : [[1 0]]
Number 17: Predict: [[ 0.94122136  0.05877867]] , Label : [[1 0]]
Number 18: Predict: [[ 0.94317234  0.05682766]] , Label : [[1 0]]
Number 19: Predict: [[ 0.97556317  0.02443691]] , Label : [[1 0]]
Number 20: Predict: [[  9.99997854e-01   2.09253676e-06]] , Label : [[1 0]]
Number 21: Predict: [[ 0.87072337  0.1292766 ]] , Label : [[1 0]]
Number 22: Predict: [[ 0.97881579  0.02118419]] , Label : [[1 0]]
Number 23: Predict: [[ 0.46554291  0.53445703]] , Label : [[1 0]]
Number 24: Predict: [[ 0.55039632  0.44960371]] , Label : [[1 0]]
Number 25: Predict: [[ 0.62610424  0.37389573]] , Label : [[1 0]]
Number 26: Predict: [[ 0.39854428  0.60145569]] , Label : [[0 1]]
Number 27: Predict: [[ 0.46135575  0.53864431]] , Label : [[1 0]]
Number 28: Predict: [[ 0.90450335  0.09549663]] , Label : [[1 0]]
Number 29: Predict: [[ 0.83462173  0.16537824]] , Label : [[1 0]]
Number 30: Predict: [[ 0.52225518  0.47774485]] , Label : [[1 0]]
Number 31: Predict: [[ 0.77060652  0.22939353]] , Label : [[1 0]]
Number 32: Predict: [[ 0.64518857  0.35481146]] , Label : [[1 0]]
Number 33: Predict: [[ 0.03967079  0.96032917]] , Label : [[0 1]]
Number 34: Predict: [[ 0.78703678  0.21296316]] , Label : [[1 0]]
Number 35: Predict: [[ 0.91165984  0.08834018]] , Label : [[1 0]]
Number 36: Predict: [[ 0.79146421  0.20853582]] , Label : [[1 0]]
Number 37: Predict: [[ 0.62848341  0.37151659]] , Label : [[1 0]]
Number 38: Predict: [[ 0.81082708  0.18917286]] , Label : [[0 1]]
Number 39: Predict: [[ 0.802876    0.19712406]] , Label : [[1 0]]
Number 40: Predict: [[ 0.71207815  0.28792191]] , Label : [[0 1]]
Number 41: Predict: [[ 0.82638997  0.17361   ]] , Label : [[1 0]]
Number 42: Predict: [[ 0.9101544   0.08984561]] , Label : [[1 0]]
Number 43: Predict: [[ 0.42075378  0.57924622]] , Label : [[1 0]]
Number 44: Predict: [[ 0.73106056  0.26893941]] , Label : [[1 0]]
Number 45: Predict: [[ 0.83003974  0.16996031]] , Label : [[1 0]]
Number 46: Predict: [[ 0.99476117  0.00523886]] , Label : [[1 0]]
Number 47: Predict: [[ 0.93426859  0.06573144]] , Label : [[1 0]]
Number 48: Predict: [[ 0.90724856  0.09275148]] , Label : [[1 0]]
Number 49: Predict: [[ 0.766092    0.23390794]] , Label : [[1 0]]

从结果统计,准确率达到了83%,虽然还不是很高,但毕竟中文的分词难度比英语要大许多,而且我仅仅是根据邮件主题和发件人进行的分类,数据源的信息也并不是十分充分。

源代码及注解:
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 2荣誉 +20 鱼币 +20 贡献 +20 收起 理由
不二如是 + 10 + 10 + 10 超赞,鱼C垃圾处理机制,指日可待!
冬雪雪冬 + 10 + 10 + 10 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-14 13:59:55 From FishC Mobile | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-4-14 14:03 编辑

其实这次的鱼C大扫除活动完全可以用自动识别来做,只要有足够的数据源作为训练资料,500条以上的辨别好的数据应该足够了。然后用爬虫爬所有版面的帖子,转化词向量,导入训练模型,然后就能自动识别哪些是垃圾帖。
@~风介~ @冬雪雪冬 @SixPy @小甲鱼 @不二如是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 15:40:55 | 显示全部楼层
是个好主意,可以作为活动彩蛋
但现在先让“鱼油,热闹一下”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 18:39:43 | 显示全部楼层
天啊天啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-15 09:52:47 | 显示全部楼层
很好的邮件过滤策略
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-26 10:51:51 | 显示全部楼层
必须D
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-30 10:04:39 | 显示全部楼层
好文章 学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-11 12:35:50 | 显示全部楼层
前来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-19 13:50:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-19 17:54:03 | 显示全部楼层
什么鬼还得回复才能看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-17 12:09:31 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-6 16:00:13 | 显示全部楼层
感谢分享,学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 11:15:53 | 显示全部楼层
感谢楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-13 16:29:46 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-29 15:47:25 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-18 22:38:34 | 显示全部楼层
特意过来学习python, 同时学习神经网络, 最近要用到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-8 22:17:28 | 显示全部楼层
超级清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-27 09:55:53 | 显示全部楼层
学学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-27 23:16:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-3 19:14:52 | 显示全部楼层
前来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 02:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表