项目描述:将收到英文的邮件分类,类似于邮箱中垃圾过滤器的功能
工具:MATLAB
主要完成工作:1、对邮件数据预处理;2、提取邮件特征
补充说明:怎么对SVM中的参数调参?
选定一个初始值,以三倍的增长率进行增加,然后去在测试样本中错误率最小的那组参数作为最后的参数。
1、数据预处理:(1)将所有字母都转化成小写;(2)将邮件里的HTML标签去掉(3)将网址用一个特别的文本代替,eg.httpaddr、邮件地址有emailaddr代替、数字用number代替、美元符用dollar代替;英文文本中的单词都将它们的时态去掉;其他的空白字符和标点都去掉。数据预处理之后邮件最后就剩下纯文本的词汇表了。
2、提取高频词表vocab.txt。是由垃圾邮件库中至少出现过100次的词构成;(在本项目中的高频垃圾词汇表有1899个词汇,实际应用中会有1万到5万的词汇量)
3、将处理后的邮件文本根据vocab映射成一个特征向量,如果邮件中的词在词汇表中出现过,就用词汇表中的该词的index表示,如果没有出现则忽略。经过这样处理后就将邮件转换成了一个特征向量。
4、将步骤3中得到的特征向量映射成1899维的列向量(向量的维度等于高频词表中表的个数),向量中的数是0或1
5、利用4000个训练样本对SVM进行训练,其中4000个样本同样是1899维的列向量,其中包含垃圾邮件和非垃圾邮件。训练之后就可以用来分类了。