疫情防控工作中敏感邮件智能过滤方法研究
2020-08-19朱昊顾天一董宁王勇梁满志
朱昊,顾天一,董宁,王勇,梁满志
(66139 部队,北京 100144)
0 引言
近期,国内多地发生新冠肺炎疫情,党和国家高度重视,全国调派大量医护人员驰援湖北,全国人民心手相连,坚决打赢疫情防控阻击战。在这场战役中政府职能部门、医疗机构等每日处理大量的办公文件,加强疫情防控工作的供给保障,疫情防控工作就是与时间赛跑,办理文件更需要争分夺秒。按照特事特办的原则,对专门用于疫情防控治疗的药品、消毒用品、防护用品、医疗器械文件的处理,要求做到零延时。目前政府、军队和企业利用垃圾邮件的过滤方法提升办公业务效率,本文研究利用垃圾邮件过滤技术,针对疫情防控工作中的重要邮件进行过滤,达到尽快处理疫情防控工作的目的,具有一定的现实意义。
1 中文敏感邮件的识别过程
中国互联网协会对敏感邮件的定义是收件人事先没有提出要求或者同意接收的广告、电子刊物、各种形式的宣传片的电子邮件,收件人无法拒绝的电子邮件,隐藏发件人身份、地址、标题等信息的电子邮件。
本文对疫情防控工作中敏感邮件的定义是邮件标题和内容与疫情防控工作高度相关,其中包含国家卫生健康委员会发布的疫情相关的官方指导文件、国家标准和国家军用标准中相关词汇的电子邮件。
中文敏感邮件是以字为单位,词和词之间没有分割,并且由多个汉字组成的词才有特定的含义。因此,中文敏感邮件的识别需要用到自然语言处理基础、文本分类技术等。运用这些技术,中文敏感邮件识别的具体过程如图1 所示。
图1 中文敏感邮件识别过程
首先通过预先搜集到的大量普通邮件样本通过jieba 分词并且经过去除停用词和特殊字符的处理后,得到普通邮件的关键词,再根据国家卫生健康委员会发布的疫情相关的官方指导文件、国家标准和国家军用标准进行取词建立相应分词指标体系,得到与疫情防控工作高度关联的关键词。得到关键词后我们对每个邮件进行特征向量标记,每个邮件由n 个特征值标记,那么一封邮件就可以通过一个n 维的向量来表示,这样就可以得出每封邮件的特征向量值,将得到的特征值使用支持向量机中的分类算法SVC 来训练,得到敏感邮件的分类模型。得到训练模型后,将测试邮件样本进行分词处理并根据关键词进行特征标记,得到测试邮件的特征向量值,通过刚刚得到的训练模型进行智能识别,验证敏感邮件分类模型的准确率。
2 中文敏感邮件预处理
将有关疫情的关键词和无关的词汇作为关键词分别在yiqing_key_words 和ham_key_words 中保存,并将所有关键词保存在集合all_keys_set 中,将all_keys_set转化为列表all_keys_list 并获取特征矩阵。做完后先将特征向量排序并保存到文件columns_info.txt 中以便测试时使用。
中文邮件特征提取的过程如图所示,该模型各部分功能如下:
建立分词指标体系:根据国家卫生健康委员会发布的疫情相关的官方指导文件、国家标准和国家军用标准进行取词建立相应分词指标体系。
邮件分词处理:对训练样本中的邮件内容进行分词处理。
提取特征:提取敏感邮件和非敏感邮件的样本特征,待识别的邮件通过提取出的特征来进行识别。
邮件向量表示:利用空间向量模型把中文邮件利用提取出的特征表示成n 维的向量形式。
得到特征向量值:通过对邮件的特征进行标记得到一封邮件的特征向量值。
图2 中文邮件特征提取过程
2.1 建立敏感邮件分词指标体系
根据国家卫生健康委员会发布的《新型冠状病毒肺炎诊疗方案(试行第六版)》、《新型冠状病毒肺炎防控方案(第五版)》、《新型冠状病毒感染的肺炎防控中常见医用防护用品使用范围指引(试行)》、《医用一次性防护服技术要求GB19082-2009》等相关官方指导文件、国家标准和国家军用标准进行取词,建立相应分词指标体系如图所示,转换成能用于统计分类的格式做好准备,在之后的疫情防控工作中根据国家下发的标准文件依据建立的指标体系滚动修订分类分词库。
图3 疫情防控敏感词指标体系
2.2 训练样本文字处理
(1)jieba 分词的具体过程:
首先基于Trie 树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)。然后采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。最后对于未登录词,采用了基于汉字成词能力的HMM 模型,使用了Viterbi算法,最终实现对句子或者是文本文件的分词。
(2)去停用词和特殊字符
训练样本在经过分词以后已经可以对其进行计算,但是在实际应用时并不是所有的词对于邮件的分类都是有贡献的,对于那些经常使用的、出现频率较高的、贡献较小的词都可以去掉,而且对于整个分类效果都不会有什么影响的,这些词就是停用词。本文首先创建一个自定义的停用词列表,在使用jieba.analyse.extract_tags 分词之后,使用jieba.analyse.set_stop_words遍历停用词表实现去停用词和特殊字符的作用。
(3)提取关键词
在经过去停用词处理后,对邮件进行提取关键词,常用的提取方法有TF-IDF 算法和TextRank 算法。TF-IDF 算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。该算法在数据挖掘、文本处理和信息检索等领域得到了广泛的应用,如从一篇文章中找到它的关键词。因此决定采用TF-IDF 方法选取关键词,在计算IDF 的时候,考虑到我们是对整个类邮件进行分类,因此就没有采用IDF 的传统计算方法,而是计算这词语在整个类邮件中的邮件占比,也就是出现该词语的文档数量除以文档总数量。
(4)中文敏感邮件的向量空间模型
在向量空间模型中,文档被表示成向量的形式:d=<t1,w1;t2,w2,…;tn,wn>,其中 ti 词条,wi 是 ti 在文档中的词频或者仅用权值,“0,1”表示特征项是否在文档中。
在布尔型向量空间模型中,若该特征项在文档中出现,则特征值为1,反之,如果特征项在文档中没有出现,则特征值为0。布尔型向量空间模型通常应用于基于规则的学习算法中,在文档分类中,分类规则仅考虑单词是否在文档中出现。选取特征性一般可以选择字、词或词组。根据大量实验结果,普遍认为选取词作为特征项要优于字和词组,把这些词作为向量的维数来表示文本。
在数值型向量空间模型中,特征项的值可用一个函数计算得到,这样,每一文档都可以用有一定特征值的特征向量来表示。由于布尔型向量空间模型没有考虑到特征项在文本中出现的频率这一特性,因此,相对于数值型空间模型来说,分类精度有所下降。
为了能用机器学习的方法处理邮件,必须对邮件的文本进行处理。为了将字符串转换成能用于统计分类的格式,本文采用布尔型向量空间模型来表示文本信息,使文档被转换成具有高维空间的向量。在分词和提取出关键词之后,将这些提取出来的关键词存储在一个数组中,将关键词转化为向量的形式。对特征向量进行标记,正常邮件中的关键词标记为1,有关疫情的邮件中的关键词标记为-1,其他则标记为0,最终一封邮件则可以用一个n 维的向量表示,这样就可以得出每封邮件的特征向量值。
3 训练SVM分类模型
由于邮件的内容很多,因此找出其主要的分类关键词尤为关键,在找出关键词后就可以用这些关键词对邮件进行特征标记,也就是如果关键词在这篇文章中标记为1 或-1,不出现则标记为0。为了防止出现偏差并提高效果,对于任何词,无论它是否在文档中出现,都赋一个基础值0.0001。然后进行向量归一化的操作,消除文档长度对于关键词出现频率的影响。
我们使用SVM 中linear 核的SVC 函数进行训练最终得到svm_module 训练模型并存储为train_model.m。利用训练好的模型进行测试,判断一封邮件是否为与疫情工作相关的邮件。首先将邮件中提取出关键词用向量表示,并用predict 函数进行预测,得到返回值ret。
图4 训练样本集和测试集
对txt 文本文件和字符串的分词代码如下所示:
对字符串进行分词代码如下:
对提取出的关键词分别存储在yiqing_key_words.txt 和 ham_key_words.txt 中,内容如图 5 所示。
图5 关键词提取结果
标记邮件的特征向量值代码如下所示:
训练分类模型并保存如下所示:
在训练过程中,对于几种核函数:线性核函数、多项式核函数、高斯核函数、sigmoid 核函数,我通过多次调试比较发现,对于本分类模型线性核函数的训练速度较快,所以本文选择使用了线性核函数,对比结果如表1。
表1 训练速度对比
4 结果分析
利用训练好的SVM 分类模型去验证准备好的测试数据集 test_yiqing_100.utf8 和 test_ham_100.utf8 中的内容,最后得到的结果如图6 所示。
图6 识别结果
由图中的结果可以看出,内容为“近期防控新型冠状病毒感染的肺炎工作方案”的文本文件被判断是敏感邮件。
对于数据测试结果有下面4 种情况:
TP:预测为正,实际为正
FN:预测为负,实际为正
TN:预测为负,实际为负
FP:预测为正,实际为负
经过对大量样本进行识别,得到结果如表2。
表2 训练结果准确率测试
通过大量的测试结果可以看出,敏感邮件的识别准确率均达到了90%以上,这说明该模拟训练样本的选择比较合理。
5 结语
在当今邮件泛滥现象,政府职能部门利用电子邮件处理防疫工作的背景下,本文尝试对敏感邮件进行智能识别的方法,运用支持向量机分类算法对中文敏感邮件进行识别。同时,对有限的模拟测试样本数据集进行测试,结果处理速度比较快,识别的效果精度也比较高。实践证明支持向量机对敏感邮件智能识别是可行的。