假设您有权访问一个电子邮件帐户,其中包含过去几年接收电子邮件的历史记录(约 10,000 封电子邮件),分为 2 组
- 真实电子邮件
- 垃圾邮件
您将如何完成创建可用于垃圾邮件检测的神经网络解决方案的任务 - 基本上将任何电子邮件分类为垃圾邮件或非垃圾邮件?
假设电子邮件提取已经到位,我们只需关注分类部分。
我希望得到答复的要点是:
- 选择哪些参数作为神经网络的输入,为什么?
- 什么样的神经网络结构最有可能最适合此类任务?
此外,我们非常欢迎任何资源建议或现有实现(最好是 C#)
谢谢
编辑
- 我决定使用神经网络,因为该项目的主要方面是测试神经网络方法如何用于垃圾邮件检测
- 仅仅探索神经网络和垃圾邮件主题也是一个“玩具问题”
最佳答案
如果你坚持使用神经网络......我会为每封电子邮件计算一些特征
基于字符、基于单词和词汇的功能(据我统计,大约有 97 个):
- 字符总数 (C)
- alpha 字符总数/C alpha 字符比例
- 数字字符总数/C
- 空白字符总数/C
- 每个字母/C 的出现频率(键盘的 36 个字母 - A-Z、0-9)
- 特殊字符的出现频率(10 个字符:*、_、+、=、%、$、@、ـ、\、/)
- 总字数(M)
- 短单词总数/M 两个字母或更少
- 单词中的字符总数/C
- 平均字长
- 平均。句子长度(以字符为单位)
- 平均。句子长度(以单词为单位)
- 字长频率。 distribution/M 长度为n的单词的比例,n在1到15之间
- 类型标记比例 唯一单词数/M
- Hapax Legomena 频率。一次出现的单词
- Hapax Dislegomena 频率。两次出现的单词
- 尤尔的 K 测量
- 辛普森 D 测度
- Sichel 的 S 度量
- Brunet 的 W 测量
- Honore 的 R 度量
- 标点符号的频率 18 个标点字符: . Í ; ? ! : ( ) – “« » < > [ ] { }
您还可以根据格式添加更多功能:颜色、字体、大小……使用。
大多数这些措施都可以在网上、论文甚至维基百科中找到(它们都是简单的计算,可能基于其他功能)。
因此,对于大约 100 个特征,您需要 100 个输入、隐藏层中的一定数量的节点以及一个输出节点。
需要根据您当前的预分类语料库对输入进行标准化。
我将其分成两组,一组作为训练组,另一组作为测试组,从不混合它们。也许训练/测试组的比例为 50/50,具有相似的垃圾邮件/非垃圾邮件比率。
关于machine-learning - 用于电子邮件垃圾邮件检测的神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770238/