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