王 波
(中金金融認證中心有限公司,上海 201210)
隨著信息網(wǎng)絡的發(fā)展,大量個人用戶及企業(yè)信息數(shù)據(jù)暴露在公眾的視野中,這也暴露出互聯(lián)網(wǎng)存在重大的安全隱患,為了保障數(shù)據(jù)的安全,如何對個人信息數(shù)據(jù)
進行分類保存是當下網(wǎng)絡安全研究中具有實際意義的領(lǐng)域。2014 年,Verma 等人提出使用機器學習的文本分類(垃圾郵件)調(diào)查方法對傳入的郵件進行分類,并刪除不需要的信件。2012 年,王超學等人[1]利用 K-Means 算法對訓練樣本集進行聚類,得到了改進后的加權(quán) KNN 文本分類算法。2019 年,鄧曉衡等人[2]提出了一種基于詞義和詞頻的向量空間模型改進方法,明顯地提高了計算的效率和結(jié)果的準確性。
該文主要提出了一種基于K 近鄰分類的個人信息分類算法,運用該算法對移動端隱私文本文件進行分類學習,以提升提取個人信息數(shù)據(jù)的效率以及分類的準確性,通過該分類方法對移動應用隱私文本進行多元化分類,并研究移動應用收集個人信息的情況,這個階段的主要工作是對移動應用個人隱私文本進行分類、分析并給出可視化的結(jié)果。
根據(jù)《App 違法違規(guī)收集使用個人信息行為認定方法》的相關(guān)規(guī)定,網(wǎng)絡運營者收集、使用個人信息時應遵循合法、正當且必要的原則,公開收集、使用規(guī)則,明確收集、使用信息的目的、方式和范圍,還必須經(jīng)過信息所有者的同意。筆者對從互聯(lián)網(wǎng)中依法收集的移動端應用的個人信息進行分類,將其分為8 類:位置信息、身份信息、財產(chǎn)信息、工作信息、交易信息、上網(wǎng)信息、教育信息以及車輛信息。
個人信息分類映射問題主要是對樣本進行分類處理后,將其映射到滿足特定需求的集合中的數(shù)據(jù)處理方法,建模流程如圖1 所示。其建模難點在于建立準備識別分類特征的映射規(guī)則。
圖1 分類映射建模模型
該文研究的個人信息數(shù)據(jù)的分類檢測是運用分類映射提取分詞和文件的特征值,最終將文本特征轉(zhuǎn)換為向量的形式。該研究采用的是K 鄰近算法分類方法,K 近鄰算法是模式識別領(lǐng)域非常著名的統(tǒng)計算法[3],K 近鄰分類算法也是最早應用于自動文本分類的機器學習算法之一,KNN 算法屬于無監(jiān)督學習,與其他算法相比,它可以不通過訓練直接進行分類,對文本的適應性較強。該算法的基本思路如下:先將訓練文本集中的所有文本轉(zhuǎn)換為向量的形式,再將這些文本向量組成文本向量集儲存起來,當待分類文本到達時,計算這篇文本與訓練文本集中每個文本的相似度,將計算得到的值按降序排列,找出排在最前面的K 篇文本,然后根據(jù)該文本所屬的類別來判斷待分類文本所屬的類別。計算文本相似度的方法通常有歐氏距離、向量內(nèi)積和夾角余弦,該文采用夾角余弦計算文本之間的相似度,如公式(1)所示。
式中:W1i和W2i分別為2 個文本向量d1和d2中的第i個特征項的權(quán)重值。
得到的余弦值越大說明2 個文本的相似度越高,2 個向量所代表的文本就越可能屬于同一個類別。反之,2 個向量所代表的文本屬于同一個類別的可能性就越小。根據(jù)該文本對待分類文本進行歸類的方法如下:K 篇文本與待分類文本的相似度如公式(2)所示,對屬于同一個類的文本的相似度進行求和,然后對每個類所求的和進行排序,將待分類文本分到相似度之和比較大的那個類中。
式中:k為選取的文本數(shù);Tj(di)為文本di是否屬于Cj類,如果屬于,則值為1,否則值為0
一般來說,當獲取到移動應用的隱私文本后,對隱私文本信息進行文本預處理后,再對長句子進行劃分,提取特征詞,通過停用詞減少無用詞匯對最終分類結(jié)果的影響。用簡單的特征向量來表示每個文本的數(shù)據(jù),便于對數(shù)據(jù)進行分類計算。該文先對訓練集進行特征提取,再將測試集中的文本數(shù)據(jù)放入訓練集得到的向量空間中,確保訓練集和測試集的一致性。該文對這類挖掘推理采用機器學習的方式使其自動化地對個人數(shù)據(jù)進行分類,采用構(gòu)造分類器對個人信息進行處理,提升分類效率,具體流程如圖2 所示。
圖2 基于K 鄰近分類的處理流程
1.2.1 個人信息文本分類預處理
個人信息文本預處理是文本分類的起點,對之后的實驗結(jié)果有較大的影響,因此必須保證該階段的質(zhì)量,才能保證得到質(zhì)量較高的文本分類數(shù)據(jù)。同時,也能提高文本分類的效率。在預處理階段,需要對文本信息進行刪除噪聲和分詞處理。
該文利用Python 軟件進行編程,過濾掉雜亂無章的非中文字符,得到純文本信息。英文文本中的單詞與單詞之間是通過空格將其隔開的,與英文文本不同,中文文本的字與詞、字與字之間是沒有空格將其分隔開的,因此要將中文文本按照設定好的分詞算法分成以詞語為最小單位文本,用空格分隔符對文本內(nèi)容進行分隔,只有這樣才能在基于單詞的基礎上用結(jié)構(gòu)化的形式展示文檔。
1.2.1.1 降噪
對中文文本來說,采集到的數(shù)據(jù)通常包括大量的無用數(shù)據(jù)(噪聲),通常為數(shù)據(jù)的來源地、作者標簽以及采集過程中出現(xiàn)的特殊字符等,這一類文字常常與正文內(nèi)容毫不相干,對文本的分類沒有絲毫作用。大量的噪聲干擾將會導致出現(xiàn)分類模型的分類結(jié)果不準確的現(xiàn)象。在第一步預處理的過程中,對文本數(shù)據(jù)進行降噪處理,能夠減少文本數(shù)據(jù)中的詞匯量,降低特征空間的維度,減少后續(xù)工作的難度。
2)將鄉(xiāng)村作為基礎,選擇合適的地域。結(jié)合當?shù)匦罗r(nóng)村建設背景,同時結(jié)合當?shù)氐乩項l件,為農(nóng)村保留具有特色的自然景觀。然后結(jié)合本地人文資源,營造出優(yōu)美,富有內(nèi)涵的景區(qū)[4]。第三方面,發(fā)展農(nóng)村旅游業(yè),還需要突出文化特點,在其中融入當?shù)仫L土人情,對當?shù)匚幕厣M行充分利用,充分滿足游客的觀賞需要。
1.2.1.2 中文文本分詞處理
中文分詞模型的算法主要經(jīng)歷了3 個階段:基于匹配的詞典分詞算法、基于標注的機器學習算法和基于理解的深度學習算法[4]。在其他分類方法中,也被分為2 種分類方法,基于匹配的詞典分詞算法(機械分詞算法)和統(tǒng)計分詞算法。
1.2.1.3 去除停用詞
停用詞被定義為對文本分類沒有任何作用的高頻詞組,例如語氣助詞、人稱代詞、標點符號以及特殊符號等,這些詞被稱為停用詞。刪除停用詞可以節(jié)省儲存空間,提高編程代碼運行的速度,降低特征空間的維度,進一步提高中文文本分類的準確性和效率,一般采用停用詞字典的方法,即對所有的特征詞進行遍歷,去除包括停用詞字典詞語的方法。
1.2.2 個人信息文本表示
通過文本預處理階段后得到可以被人類識別的文本信息,但是對計算機來說,其并不能完整理解其中的含義,如果想用計算機對中文文本進行處理,那么需要將其轉(zhuǎn)化為計算機可以理解的結(jié)構(gòu)化二進制形式,預處理得到的文本為計算機可識別的特征文本,在該文中,筆者采用向量空間模型,向量空間模型是信息檢索領(lǐng)域中經(jīng)典的模型之一,它對文本信息進行簡化處理并表示成向量空間中的向量運算,將可以直觀反映的空間上的相似度表示為語義的相似度。
用特征空間的1 個向量d來表示1 個文檔a,如公式(3)所示。
式中:tn為第n個特征詞;wn為對應的權(quán)值。
1.2.3 個人信息文本處理階段
經(jīng)過文本分詞和文本表示2 個階段后,得到一系列的特征詞(表示1 篇文章),但是這一系列的特征詞中除去停用詞后,仍然包括一些對文本分類貢獻不大的無用特征詞,需要采用特征空間降維的方法減少特征詞的數(shù)量,提高分類的準確性。但是在實際情況中,經(jīng)過特征選擇后,出現(xiàn)頻率不同的特征詞對分類結(jié)果的重要性是不同的,給每個特征詞賦予權(quán)重,可以表示該特征詞對最終結(jié)果的影響。目前,有2種主流的方法對特征進行加權(quán)表示,布爾權(quán)重法和TF-IDF算法。布爾權(quán)重法將出現(xiàn)次數(shù)大于某一確定閾值的特征設定為1,低于閾值的特征設定為0,常用于特征項較少的情況。TF-IDF 算法將逆文檔頻率(IDF)和頻率(TF)作為衡量指標,IDF和TF如公式(4)、公式(5)所示。
從公式(4)、公式(5)中可以看出,TF-IDF 考慮了特征詞的2 個因素,TF為某一特征詞在該文出現(xiàn)的頻率,出現(xiàn)次數(shù)越多,對最終的分類結(jié)果越有利,而ID表示所有文本數(shù)據(jù)中有多少個文本包括這個單詞,而IDF為log 形式,表示出現(xiàn)次數(shù)越多,越不利于分類。該文采用TF-IDF 的向量空間對中文文本進行處理。
在對文本信息進行預處理后,一段話被分割成多個詞語,從每段話中提取重要詞語,使數(shù)據(jù)集文檔中沒有標點符號、語氣助詞等無用詞匯,利用空格分隔符對詞語進行分割,縮減文檔的內(nèi)容。但是,需要對每個詞語進行向量化處理,每個詞語被轉(zhuǎn)化成結(jié)構(gòu)化二進制形式后被計算機識別,再進行后續(xù)的分類計算。首先,利用Python 的第三方庫sklearn將文本內(nèi)容變成向量,再通過該文所采用的TF-IDF 向量空間模型進行建模,并利用sklearn 第三方庫進行計算。
將中文數(shù)據(jù)集拆分成訓練集和測試集。利用Python 中的第三方庫jieba 模塊對中文分詞進行處理,對長句子進行劃分,提取特征詞,將訓練集中的特征詞放入文件夾train 中,將測試集中的特征詞放入文件夾test 中,并按類別進行存放。將前人總結(jié)的停用詞放入hlt_stop_words.txt(縮減文檔的內(nèi)容)中,組成停用詞表,去除 train 和test 文件中的停用詞,減少無用詞匯對最終分類結(jié)果的影響。
利用Python 的第三方庫sklearn 將文本內(nèi)容變成bunch向量,每個bunch 向量包括4 類信息,文本類別、文本文件名、文本標簽和文本內(nèi)容。其中,文本類別包括所有的文本類型,文該文件名為當前正在處理的數(shù)據(jù)的文件名,文本標簽和文本內(nèi)容分別為當前正在處理的文本所屬的類別標簽和去除停用詞后的特征詞。
運用TF-IDF 方法提取文本特征詞中的特征,將每個文本的數(shù)據(jù)提取成簡單的特征向量,便于對數(shù)據(jù)進行分類計算。為了確保訓練集和測試集的一致性,該文先提取訓練集的特征,再將測試集中的文本數(shù)據(jù)放入訓練集得到的向量空間中。該文采用Python 的sklearn 第三方庫進行特征計算。
在最終的分類中,同樣采用Python 的sklearn 第三方庫構(gòu)建KNN 分類器,由TF-IDF 方法對訓練集中得到的特征進行訓練,對分類器參數(shù)進行微調(diào)。利用微調(diào)后的模型在測試集中進行測試,得到最終的分類結(jié)果。
在KNN 分類算法中,不同的K值在同一個加權(quán)方法下的分類方法的準確性是不同的,隨著K值的升高,使用的加權(quán)方法準確率有可能上升也可能下降。因此,筆者采用了不同的K值來確定最優(yōu)的K值。
由表1 可知,當K值等于5 時,分類精度、召回率最高,F(xiàn)1值(精確度和召回率的調(diào)和平均值)與K等于3 時并列第一,則在該實驗背景下,當K值等于5 時,得到的結(jié)果最優(yōu),因此選擇K等于5,為該實驗的參數(shù)設置。預測結(jié)果見表2。
表1 KNN 不同K 值下的精度、召回率、F1 值
由表2 可以看出,文本數(shù)量集中在位置信息、上網(wǎng)信息和教育信息中,3 類信息的數(shù)量明顯超過其他種類的文本數(shù)據(jù),數(shù)據(jù)分布不均勻,但是該文應用的KNN 分類算法仍然能夠?qū)Σ煌姆N類進行分類,正確率為94%。結(jié)果表明,該文的KNN 算法具有一定的優(yōu)越性。該文還將K=5 時的KNN算法與SVM 和樸素貝葉斯算法進行比較,結(jié)果見表3。
表2 各類別分類正確個數(shù)
表3 不同算法的識別率
由表3 可知,KNN 算法與樸素貝葉斯算法的精度、召回率和F1值都明顯高于SVM,說明SVM 在這一類文本數(shù)據(jù)中的分類效果并不是最優(yōu)的。KNN算法和樸素貝葉斯算法具有相同的精度,但KNN 算法的召回率比樸素貝葉斯算法高0.2%,在F1值也比樸素貝葉斯算法高0.2%,表明KNN 算法在該文的算法流程下,可以得到最優(yōu)的分類結(jié)果。
隨著互聯(lián)網(wǎng)的飛速發(fā)展,互聯(lián)網(wǎng)上的信息呈爆炸式增長,但也給人們帶來了很多困惑,如何從雜亂無章的信息中直接、高效地對個人信息進行分類受到了越來越多的關(guān)注。該文針對目前取證方法論的薄弱環(huán)節(jié)提出了K 近鄰分類的移動端個人信息分類算法,對移動端隱私數(shù)據(jù)進行分類學習,以提升隱私信息提取及分類效率,提升了識別隱私政策中個人信息分類的效率與準確性,豐富了關(guān)聯(lián)信息的多元連接性,有助于拓寬隱私數(shù)據(jù)取證范圍,為信息安全與取證開拓了思路。