高統超,張云華
(浙江理工大學信息學院,浙江杭州 310018)
信息安全與自然語言處理密切相關,近些年來,自然語言處理在信息安全上得到廣泛應用。文本表示是自然語言處理中的一項基本任務[1],以字符為基本元素,將元素的類型轉化成數學概念上可用于計算的數值形式,經常用于腳本攻擊檢測。隨著深度學習的發展,詞向量模型逐漸代替了傳統的文本表示。目前,針對中文詞向量模型研究方向主要有基于語義、基于形態和基于輔助知識三種。
但是,基于語義的方法存在噪音問題,上下文詞語和漢字,在不同語境中表現的語義不同,一詞多義的問題,需要使用特殊方式進行處理。基于形態的方法利用象形字的特點,提取特征信息,但是也會引入一定的噪音?;谳o助知識的方法處理流程比較復雜,對輔助知識的依賴性較強。針對以上存在的問題,Chen等人[2]在CWE(Character-enhanced Word Embedding)模型的基礎上提出RECWE模型。模型分為詞組預測模型和子信息預測模型。除了考慮單詞組成蘊含豐富的語義信息之外,還考慮漢字自身結構的形態特點。此外,還考慮到漢字演變過程中產生巨大的變化,對偏旁部首進行額外的映射處理,模型在實驗中取得了較好的效果。
因此,本文在R E C W E模型的基礎上進行研究。在詞組預測模型和子信息預測模中,通過累加求平均數的方式分別計算詞組預測層和子信息預測層向量,但是無法體現兩個模型各自組成部分不同的貢獻度。為此,本文基于注意力機制,采用SAN(Self-Attention)模型和基本注意力機制[3]分別對兩個預測模型進行改進,實驗結果表明改進后的RECWE模型具有較好的效果,在信息安全上具有重要的研究價值。
詞向量的概念最早來自分布式表示(Distributed Representation)[4]。語言模型生成詞向量是通過訓練神經網絡語言模型[5](Neural Network Language Model,NNLM)?;舅枷胧菍Τ霈F在上下文環境里的詞進行預測,本質上是一種對共現統計特征的學習。2013年Google團隊推出開源的Word2vec工具[5,6]。Word2vec工具是一款將詞表征為實數值向量,簡單高效,主要包含兩個模型:跳字模型(Continuous Skip-gram Model,Skip-gram)和連續詞袋模型(Continuous Bag-of-Words Model,CBOW)。Word2vec工具生成的詞向量可以較好地表達不同詞語之間的相似程度和類比關系。
本文以CBOW模型和Skip-gram模型為例,介紹采用語言模型生成詞向量。模型結構圖如圖1所示。

圖1 CBOW和Skip-gram模型結構圖
在CBOW模型中,通過上下文詞語對目標詞的預測,得到詞向量。模型包含三層結構,假設目標詞為 ,上下文詞向量用表示,為上下文詞窗口大小,則每一層操作為:
(3)輸入層,將輸出層內容構造為一顆Huffman樹,葉子節點為數據集中出現過的詞,以該詞在數據集中的頻數為權值。
模型提供了兩種近似訓練法:負采樣(Neg at i ve sa m pl i ng)和層次Softmax(Hierarchical Softmax),可計算出目標詞出現的概率。Skip-gram模型思想與CBOW模型相反,通過從目標詞對上下文詞的預測中學習到詞向量表達,用一個詞來預測它在文本序列周圍的詞,其計算過程與CBOW模型類似。
目前,中文詞向量模型主要在C B O W和Skip-gram兩個模型思想的基礎上進行廣泛研究。中英文語言結構本身存在較大的差異,許多學者基于漢字結構及字詞組合等不同特點進行研究,主要分為三種研究方向。
第一,基于語義的方法。該方法是顯式地對中文字符層級語義多樣性進行建模,可以有效地處理一字多義的問題,更能通過字詞語義相似性的先驗,非平均地對待構成詞的不同字符。Chen等人[7]根據中文漢字的特點,利用漢字自身也能夠表達較好的語義信息,提出了CWE模型。為了消除漢字歧義性問題,利用漢字在單詞中位置并結合k-means算法思想提出了三種方案。
第二,基于形態的方法。該方法深入挖掘漢字的形態構成特征,將中文詞語拆分成字符、偏旁部首、子字符、筆畫等細分的特征,與原詞語一并進入詞嵌入模型,為模型提供更多的語義信息。Yin等人[8]認為中西方語言存在差異,漢字內部豐富的語義信息更能表達詞語的意義,在此基礎上提出MGE (Multi-Granularity Embedding)模型。模型充分利用詞語和漢字的基礎部件,增強詞的向量表示,并在相似度和類比任務上驗證了模型的有效性。Cao等人[9]在Skip-gram模型基礎上,利用漢字一筆一畫的結構信息和聯系進行研究,提出了cw2vec模型,保證不損失詞向量語義信息。
第三,基于輔助知識的方法。該方法是利用漢字的外部特征與字詞建立聯系為模型提供語義輔助。Xu等人[10]認為CWE模型中單詞與漢字貢獻度不同,把中文翻譯成英文,使用方法計算單詞與字之間的相似度以表示貢獻的不同程度。Wu等人[11]根據象形文字的歷史演變進程,提出基于字形的Glyce模型。利用不同歷史時期的漢字字形(如甲骨文、金文、篆書、隸書等)和漢字書法(如行書、草書等)增加字符圖像的象形信息,更廣泛的捕捉漢字的語義特征。而且添加圖像分類的損失函數,利用多任務學習方法增強模型的泛化能力。
注意力機制(Attention Mechanism)[12]的主要目標是將當前任務目標相關的關鍵信息從各種信息中挑選出來,本質上來看注意力機制和人類的選擇性視覺注意力機制相似。注意力機制早先用于NLP領域中的機器翻譯,如圖2所示,在Encoder-Decoder模型[13]中運用注意力機制。


圖2 注意力機制模塊圖解


其中, 是一個函數,利用Decoder網絡最新的隱藏層狀態,和編碼器端第1個單詞的隱藏層輸出作為輸入,計算得到。
在以往的詞向量模型的研究中,研究者們基于CBOW模型或Skip-gram模型,通過單個通道的結構進行研究。RECWE模型改變了以往的做法,提出了新的方法抽取形態和語義特征,采用與CBOW模型結構相似的并行雙通道網絡模型,將目標詞語的上下文詞語和目標詞語中的漢字與上下文詞語中的漢字及各漢字結構信息一起使用來預測目標單詞。同時使用簡化的轉換和部首轉義機制來提取中文語料庫中的內在信息,結合豐富的漢字內部結構的形態語義信息。
R E C W E模型結構含有兩個子模塊。如圖3所示左邊是詞組預測模型(Word Prediction Module),通過利用目標詞語的上下文詞語進行預測,其中和表示上下文單詞,表示目標詞,表示詞組預測層向量;右邊是子信息預測模型(Sub-information Prediction Module),其中分別表示詞組預測模塊中目標詞和上下文詞的漢字、部首和漢字組件,模型對部首進行了轉換處理,能夠充分挖掘漢字的語義信息[14]。表示子信息預測層向量。為了消除音譯詞語和一詞多義的影響,直接使用代替。目標優化函數為:


在RECWE模型,詞組預測模型通過語義的方法獲取關于目標詞語的語義信息,子信息預測模型通過形態方法提供更多的語義信息。雖然模型在實驗中取得了較好的效果,但是還存在一些問題。
(1)在詞組預測模型中,通過對目標詞組語的上下文詞語向量進行累加求和,沒有體現詞語對目標詞語的重要性,例如“筆記本價格漲幅很大”,當“價格”作為目標詞語時,上下文詞語中“漲幅”更能體現目標詞語的重要性。在此基礎上,引入自注意力機制,用于計算上下文詞語的權重。
(2)在子信息預測模塊,通過對每一條評論語句中的漢字向量、部首向量和組件向量先進行求和再求平均,作為子信息向量。這種方法忽略了各自向量之間對子信息向量不同的貢獻。為此,采用基本注意力機制,為三者各自向量劃分不同權重,完善模型。最后通過對比實驗,驗證方法的有效性。
在原始注意力機制結構的基礎上,本文使用Vaswani等人[15]提出的SAN模型,它與傳統注意力機制不同之處在于不需要借助額外的語義向量進行計算。該模型處理某一個位置的單詞時,會自動處理其他位置的單詞是否能夠更好地表達目標詞語的語義信息,為了充分考慮句子之間不同詞語之間的語義及語法聯系。在機器翻譯任務中,架構分成編碼器-解碼器結構,假設編碼器中長度為 的單個序列輸入向量為編碼器將輸入向量映射為隱藏向量。利用隱藏向量表示整個序列,會導致輸入序列語義表示不充分,產生語義信息的損失。因此,計算隱藏向量時,考慮所有時間步長下的隱藏狀態,利用下列公式計算上下文向量。

圖3 RECWE模型結構

詞組預測模型利用單詞作為輸入變量的最小單位,在計算預測層上下文向量時,采用了公式(5)中累加求和的方式,忽略了不同上下文詞語對目標詞語的影響力。為此,在自注意力機制思想的基礎上,計算公式為:

為了能夠自適應學習評論語句中上下文的語義,針對自注意力機制中的權重向量進行了修改,采取了Self-Attention Unit模型中的方法進行計算,引入尺度變換函數,用sigmoid函數計算注意力權重向量。該函數曲線光滑連續,可以根據語境能夠較好的區分上下文詞語與目標詞語的語義關系。修改后的詞組預測模型如圖4所示。

圖4 詞組預測模型
子信息預測模型利用將對應單詞的漢字、部首和字組件之間的語義信息進行累加求和,計算公式如上式所示。模型中每個字都由三部分構成,但是三部分對字的貢獻度是不同的。在此基礎上,引入基本注意力機制完善模型,為三者增加不同權重。改進后的模型如圖5所示。


圖5 子信息預測模型
式(15)中,通過對三者求平均值作為最終子信息預測層向量。
本文利用爬蟲技術獲取新聞文本作為實驗的數據集。數據集中包含很多的英文,中文標點,亂碼等一些非中文字符以及圖形表示等問題。為了保證數據集的完整性和平衡性,從中篩選了部分數據。利用腳本從漢典獲取數據集的部首和組件數據,語料預處理流程圖如圖6所示。

圖6 評論文本預處理流程圖
清洗的目的是去除數據中有噪音的內容和非文本部分,包括提取原始文本中的標題、摘要和正文等信息[17]。本文主要使用正則表達式進行替換和刪除進行清洗。中文分詞中使用哈工大社會計算與信息檢索研究中心研制的語言技術平臺(LTP)的pyltp分詞工具[18],其支持使用分詞外部詞典和使用個性化分詞模型,在分詞測評任務上,準確率和分詞速度取得了較好的成績。停用詞是指文本中出現頻率很高,但是實際意義并不大的詞語,主要包括語氣助詞、副詞、介詞、連詞等。本文使用Mallet工具包[19]中所提供的缺省停用詞列表,在不影響情感分類準確率的情況下,過濾停用詞。實驗環境如表1所示。
實驗數據處理完成后,本文所有模型參數進行統一設置,詞向量維度選擇為200,詞窗口大小5,初始化的學習率為0.25,語料中最小詞頻為5,模型迭代次數為100,高詞頻下采樣閾值為10-4。

表1 實驗環境設置
本文使用詞語的相似度和類比兩項任務進行評價。在相似度任務中,利用余弦值表達單詞地相似性,采用Spearman相關系數[6]評價相似度任務的實驗效果。在類比任務中,目標是輸入一組具有特定聯系的詞語組,期望推理出含有特定單詞的另一組詞語。例如“首都城市1-國家1=首都城市2-國家2”,為此,轉成數據公式進行表示為,因此需要找出一個與的標準化內積的值為最大值的詞
向量,利用余弦相似度計算,計算公式如公式(16)。

在相似度的任務中,為了評估模型改進的效果,選擇部分模型作為基礎模型進行實驗對比。選擇wordsim-240和wordsim-296兩種數據集作為評測文件。實驗結果如表2所示。

表2 相似度任務實驗結果
為了更直觀地展示各個模型效果,將上述結果繪制成柱狀圖,如圖7所示。

圖7 六種模型相似度任務的實驗結果對比圖
從圖7中可以發現,改進的RECWE模型整體上較其他模型在性能上有一定的提升效果,在兩個數據集中模型提高了2.89%和1.04%。利用自注意力機制在詞組預測模型中,可以發現效果也比其他模型好,說明上下文詞語包含豐富的語義信息,自注意力機制可以較好的為上下文詞語分配權重。但是在實驗過程發現,單個子信息預測模型訓練效果較差,原因在于利用漢字及其部首信息會提供一定的語義,輔助詞組模型作為更好的判斷,但是存在一定的語義含糊或者無法提供語義幫助的情況,比如“東西”是一個名詞詞語,用于泛指各種具體或抽象的人、事、物。在現代語言交流也包含愛憎情感色彩成分。而其漢字組成“東”“西”分別是方位描述字,無語提供精確的語義信息。此時,需要詞組模型根據上下文詞語尋找更加匹配的語義信息。
在類比任務中,使用Chen等手動構建的用于中文詞向量類比任務的數據集,數據集的統計情況如表3所示。采用準確率作為評估指標,實驗結果如表4所示。

表3 數據集的統計情況

表4 類比任務實驗結果
為了更直觀地展示各個模型效果,將上述結果繪制成柱狀圖,如圖8所示。
從圖8中可以看出,改進后RECWE模型整體上取得了較好的效果,在三個不同主題的數據中,類比任務分別提高了2.47%、2.02%和1.72%,總體平均成績提高2.07%。說明不同詞語中的漢字及漢字部首提供的語義強弱不同,對詞語的貢獻也是不同的,通過利用注意力機制,可以較好的分配權重,以突出不同成分的重要性。不同類別數據,取得效果是不同的,主要原因是根據訓練集有關,存在部門詞語的漢字和部首無法提供較好的語義信息,影響類比任務的效果。同時,隨著漢字的不斷演化,僅僅依靠偏旁部首提供的語義是有限的。

圖8 五種模型類比任務的實驗結果對比圖
詞向量是自然語言處理中一項重要任務,在信息安全中廣泛應用,比如WebShell檢測和XSS注入檢測等。將WebShell文件和XSS攻擊樣本作為普通文本序列,利用詞向量模型進行特征提取,通過分類訓練識別訪問行為和攻擊行為。本文在RECWE模型的基礎上,通過引用注意力機制的相關知識,分別對詞組預測模型和子信息預測模型進行了改進,通過實驗驗證改進后的有效性。對于信息安全具有重要的實際意義。但是,相比較英文來說,效果還存在一定差距,還需要進一步研究。