朱昊,顧天一,董寧,王勇,梁滿志
(66139 部隊,北京 100144)
近期,國內多地發生新冠肺炎疫情,黨和國家高度重視,全國調派大量醫護人員馳援湖北,全國人民心手相連,堅決打贏疫情防控阻擊戰。在這場戰役中政府職能部門、醫療機構等每日處理大量的辦公文件,加強疫情防控工作的供給保障,疫情防控工作就是與時間賽跑,辦理文件更需要爭分奪秒。按照特事特辦的原則,對專門用于疫情防控治療的藥品、消毒用品、防護用品、醫療器械文件的處理,要求做到零延時。目前政府、軍隊和企業利用垃圾郵件的過濾方法提升辦公業務效率,本文研究利用垃圾郵件過濾技術,針對疫情防控工作中的重要郵件進行過濾,達到盡快處理疫情防控工作的目的,具有一定的現實意義。
中國互聯網協會對敏感郵件的定義是收件人事先沒有提出要求或者同意接收的廣告、電子刊物、各種形式的宣傳片的電子郵件,收件人無法拒絕的電子郵件,隱藏發件人身份、地址、標題等信息的電子郵件。
本文對疫情防控工作中敏感郵件的定義是郵件標題和內容與疫情防控工作高度相關,其中包含國家衛生健康委員會發布的疫情相關的官方指導文件、國家標準和國家軍用標準中相關詞匯的電子郵件。
中文敏感郵件是以字為單位,詞和詞之間沒有分割,并且由多個漢字組成的詞才有特定的含義。因此,中文敏感郵件的識別需要用到自然語言處理基礎、文本分類技術等。運用這些技術,中文敏感郵件識別的具體過程如圖1 所示。

圖1 中文敏感郵件識別過程
首先通過預先搜集到的大量普通郵件樣本通過jieba 分詞并且經過去除停用詞和特殊字符的處理后,得到普通郵件的關鍵詞,再根據國家衛生健康委員會發布的疫情相關的官方指導文件、國家標準和國家軍用標準進行取詞建立相應分詞指標體系,得到與疫情防控工作高度關聯的關鍵詞。得到關鍵詞后我們對每個郵件進行特征向量標記,每個郵件由n 個特征值標記,那么一封郵件就可以通過一個n 維的向量來表示,這樣就可以得出每封郵件的特征向量值,將得到的特征值使用支持向量機中的分類算法SVC 來訓練,得到敏感郵件的分類模型。得到訓練模型后,將測試郵件樣本進行分詞處理并根據關鍵詞進行特征標記,得到測試郵件的特征向量值,通過剛剛得到的訓練模型進行智能識別,驗證敏感郵件分類模型的準確率。
將有關疫情的關鍵詞和無關的詞匯作為關鍵詞分別在yiqing_key_words 和ham_key_words 中保存,并將所有關鍵詞保存在集合all_keys_set 中,將all_keys_set轉化為列表all_keys_list 并獲取特征矩陣。做完后先將特征向量排序并保存到文件columns_info.txt 中以便測試時使用。
中文郵件特征提取的過程如圖所示,該模型各部分功能如下:
建立分詞指標體系:根據國家衛生健康委員會發布的疫情相關的官方指導文件、國家標準和國家軍用標準進行取詞建立相應分詞指標體系。
郵件分詞處理:對訓練樣本中的郵件內容進行分詞處理。
提取特征:提取敏感郵件和非敏感郵件的樣本特征,待識別的郵件通過提取出的特征來進行識別。
郵件向量表示:利用空間向量模型把中文郵件利用提取出的特征表示成n 維的向量形式。
得到特征向量值:通過對郵件的特征進行標記得到一封郵件的特征向量值。

圖2 中文郵件特征提取過程
根據國家衛生健康委員會發布的《新型冠狀病毒肺炎診療方案(試行第六版)》、《新型冠狀病毒肺炎防控方案(第五版)》、《新型冠狀病毒感染的肺炎防控中常見醫用防護用品使用范圍指引(試行)》、《醫用一次性防護服技術要求GB19082-2009》等相關官方指導文件、國家標準和國家軍用標準進行取詞,建立相應分詞指標體系如圖所示,轉換成能用于統計分類的格式做好準備,在之后的疫情防控工作中根據國家下發的標準文件依據建立的指標體系滾動修訂分類分詞庫。

圖3 疫情防控敏感詞指標體系
(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 維的向量表示,這樣就可以得出每封郵件的特征向量值。
由于郵件的內容很多,因此找出其主要的分類關鍵詞尤為關鍵,在找出關鍵詞后就可以用這些關鍵詞對郵件進行特征標記,也就是如果關鍵詞在這篇文章中標記為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 訓練速度對比
利用訓練好的SVM 分類模型去驗證準備好的測試數據集 test_yiqing_100.utf8 和 test_ham_100.utf8 中的內容,最后得到的結果如圖6 所示。

圖6 識別結果
由圖中的結果可以看出,內容為“近期防控新型冠狀病毒感染的肺炎工作方案”的文本文件被判斷是敏感郵件。
對于數據測試結果有下面4 種情況:
TP:預測為正,實際為正
FN:預測為負,實際為正
TN:預測為負,實際為負
FP:預測為正,實際為負
經過對大量樣本進行識別,得到結果如表2。

表2 訓練結果準確率測試
通過大量的測試結果可以看出,敏感郵件的識別準確率均達到了90%以上,這說明該模擬訓練樣本的選擇比較合理。
在當今郵件泛濫現象,政府職能部門利用電子郵件處理防疫工作的背景下,本文嘗試對敏感郵件進行智能識別的方法,運用支持向量機分類算法對中文敏感郵件進行識別。同時,對有限的模擬測試樣本數據集進行測試,結果處理速度比較快,識別的效果精度也比較高。實踐證明支持向量機對敏感郵件智能識別是可行的。