作家
登录

手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤

作者: 来源: 2017-07-20 14:06:54 阅读 我要评论

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!


 首图

文本发掘(Text Mining,大年夜文字中获守信息)是一个比较宽泛的概念,这一技巧在如今天天都有海量文本数据生成的时代越来越受到存眷。今朝,在机械进修模型的赞助下,包含情感分析,文件分类,话题分类,文本总结,机械翻译等在内的诸多文本发掘应用都已经实现了主动化。

在这些应用中,垃圾邮件过滤算是初学者实践文件分类的一个很不错的开端,例如 Gmail 账户里的“垃圾邮箱”就是一个垃圾邮件过滤的实际应用。下面我们将基于一份公开的邮件数据集 Ling-spam,编写一个垃圾邮件的过滤器。Ling-spam 数据集的下载地址如下:

这里我们已经大年夜 Ling-spam 中提取了雷同数量的垃圾邮件和非垃圾邮件,具体下载地址如下:

http://t.cn/RKQBkRu

下面我们精晓过以下几个步调,编写一个实际可用的垃圾邮件过滤器。

1. 预备文本数据;

2. 创建词典(word dictionary);

3. 特点提取;

  1. def extract_features(mail_dir):  
  2.     files = [os.path.join(mail_dir,fi) for fi in os.listdir(mail_dir)] 
  3.     features_matrix = np.zeros((len(files),3000)) 
  4.     docID = 0
  5.     for fil in files: 
  6.       with open(fil) as fi: 
  7.         for i,line in enumerate(fi): 
  8.           if i == 2
  9.             words = line.split() 
  10.             for word in words: 
  11.               wordID = 0 
  12.               for i,d in enumerate(dictionary): 
  13.                 if d[0] == word: 
  14.                   wordID = i 
  15.                   features_matrix[docID,wordID] = words.count(word) 
  16.         docID = docID + 1      
  17.     return features_matrix 

 

4.练习分类器

4. 练习分类器。

最后,我们会经由过程一个测试数据集对过滤器进行验证。

  1. 预备文本数据

如有问题,迎接在文末留言评论辩论。

这里我们将数据集分成了练习集(702封邮件)和测试集(260封邮件)两部分,个中垃圾和非垃圾邮件各占 50%。这里因为每个垃圾邮件的数据集都以 spmsg 定名,是以很轻易区分。

在大年夜部分的文本发掘问题中,文本清理都是第一步,即起重要清理掉落那些与我们的目标信息无关的词句,本例中也一样。平日邮件里一般都邑包含很多无用的字符,比如标点符号,停用词,数字等等,这些字符对检测垃圾邮件没什么赞助,是以我们须要将它们清理掉落。这里 Ling-spam 数据集里的邮件已经经由了以下几个步调的处理:

a) 清除停用词 --- 像 "and", "the", "of" 等这些停用词在英语语句中非经常见。然而,这些停用词对于剖断邮件的┞锋实身份并没有什么卵用,所以这些词已经大年夜邮件中被移除。

 1/4    1 2 3 4 下一页 尾页

  推荐阅读

  云知声梁家恩:智能语音需攻克的难点在哪?

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 云知声CTO梁家恩 梁家恩,云知声CTO.2001年卒业于中国科技大年夜学,2006年卒业于中国科学院主动化研究所,获博士学>>>详细阅读


本文标题:手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤

地址:http://www.17bianji.com/lsqh/36312.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)