崔潔
(91001部隊,北京,100841)
現(xiàn)如今,人們每天都通過互聯(lián)網(wǎng)工具,如QQ、微信、微博和大型論壇有效且飛速地交換信息。這些工具極大地方便了人們的生活,同時也造就了海量的數(shù)據(jù)。隨著大數(shù)據(jù)時代的來臨,互聯(lián)網(wǎng)已經(jīng)容納了體量巨大的文本,圖像等各種類型的信息和數(shù)據(jù)。文本形式的數(shù)據(jù)比其他各種類型的數(shù)據(jù)如圖像、聲音等占據(jù)的互聯(lián)網(wǎng)資源少許多,也更加利于信息的傳播。由于文本的這一特性,文本成為了大多數(shù)網(wǎng)絡(luò)的信息傳播形式。對文本信息數(shù)據(jù)處理研究能夠快速并準(zhǔn)確的幫助人們獲取自己所需要的信息,因此提高文本搜尋結(jié)果的精確性是十分重要的。因此,無數(shù)學(xué)者開始研究文本分類技術(shù),以便于分門別類地管理各種文本信息。
文本相似度計算的各類方法日漸增多。對表面文本相似度的方法是利用字符的組合以及字符串序列,其容易受原始文本直接影響,其測量準(zhǔn)則根據(jù)兩個文本的字符匹配程度或距離來體現(xiàn),這種計算方法的原理并不復(fù)雜也容易實現(xiàn),是在各類文本相似度算法中研究歷史最長的一類。表面文本相似度算法只進(jìn)行了對表層詞匯的考慮,但是缺少對這些詞匯的語義也就是在句子中真實的含義的考慮。為了解決這些問題,對語義相似度[1][2]的計算方法又被學(xué)者們進(jìn)行進(jìn)一步研究后提出。
本文是在word2vec[3][4]詞向量模型的基礎(chǔ)上,改進(jìn)了基于均值word2vec的文本相似度的算法。該模型不僅僅能夠計算詞匯與詞匯之間的語義相似度,而且還能夠提高語義相似度值的準(zhǔn)確率。由于word2vec詞向量能夠表示語義信息,因此考慮把加權(quán)word2vec模型引入到文本相似度計算方法中。該方法能夠從重疊和非重疊兩部分相似度綜合計算文本相似度,從而進(jìn)一步實現(xiàn)文本分類。
本文設(shè)計的加權(quán)word2vec的文本分類方法,主要由以下五部分組成:語料庫的采集,文本預(yù)處理、詞向量訓(xùn)練,文本內(nèi)容的提取,相似度計算和文本分類。
為了驗證加權(quán)word2vec相似度算法的有效性,本文在搜狗綜合語料庫,使用Skip-gram模型對訓(xùn)練文本集進(jìn)行訓(xùn)練,從而得到訓(xùn)練文本集中每個特征詞的詞向量。最終本課題選用維數(shù)為200的詞向量。
1.1.1 預(yù)處理步驟
圖1 文本預(yù)處理
(1)首先是將訓(xùn)練文本集構(gòu)造詞匯表,對每個詞匯的出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計,詞頻需要按照從高到低的順序進(jìn)行排序,取最頻繁也就是詞頻最高的V個詞,構(gòu)建成一個詞匯表。每個詞匯都有一個維度是V的one-hot向量。若某個詞匯在詞匯表中出現(xiàn)過,那么向量中詞匯表中對應(yīng)的位置就賦值為1,其他位置就全賦值為0;若詞匯表中沒有出現(xiàn)該詞匯,則向量全賦值0。
(2)對于每一個詞匯都需要都生成對應(yīng)一個one-hot向量。因為上下文相關(guān)的關(guān)系,所以需要對每個詞匯的原始位置進(jìn)行保留。
(3)確定size參數(shù)也就是詞向量的維數(shù)N。
1.1.2 Skip-gram處理步驟
圖2 Skip-gram處理
(1)確定窗口大小的參數(shù)(window),對每個詞生成兩倍窗口大小數(shù)的訓(xùn)練樣本。
(2)選定batch_size,要確保該參數(shù)的大小是兩倍窗口大小數(shù)的整數(shù)倍,這樣就能夠讓一個詞匯的所有樣本都能被涵蓋在每個batch中。
(3)該模型的訓(xùn)練算法有兩種,分別是層次softmax和Negative Sampling,本課題選用softmax訓(xùn)練算法。
(4)輸入層到隱藏層的參數(shù)矩陣需要在神經(jīng)網(wǎng)絡(luò)迭代訓(xùn)練達(dá)到一定的次數(shù)后獲得,對應(yīng)詞匯的詞向量就是該參數(shù)矩陣中每一行的轉(zhuǎn)置。
本文采用了一種加權(quán)word2vec的文本相似度計算方法主要包含三個步驟:第一根據(jù)相似度閾值將文本關(guān)鍵詞劃分為重疊詞與非重疊詞兩部分;第二分別計算重疊部分和非重疊部分的相似度;第三對重疊部分和非重疊部分的相似度進(jìn)行線性加權(quán)。算法的具體步驟描述如下:
(1)計算詞匯間向量的距離[5],如公式(1)所示。
(2)根據(jù)公式(1)計算出詞匯間向量距離,提取文本A、B中相似度大于閾值的相同詞性詞匯匹配對作為重疊列表C,求其平均相似度作為重疊部分加權(quán)相似度值,如公式(2)所示:
其中k表示文本A、B提取的重疊列表C中詞匯匹配對的數(shù)目,m、n表示文本A、B的長度,ai和bj表示文本A、B中按詞性分類的關(guān)鍵詞,N表示詞向量維數(shù)。
(3)使用重疊列表C分別對分詞后的A、B文本進(jìn)行過濾,得到非重疊列表和循環(huán)遍歷列表 ′、B′中的詞,依據(jù)公式(1)計算非重疊詞匯間相似度值,用來生成如下公式所示的文本非重疊詞相似度矩陣,如公式(3)所示。
(4)利用文本非重疊詞相似度矩陣,用加權(quán)雙向最大相似度的算術(shù)平均值作為文本A、B非重疊詞部分相似度值simD,如公式(4)所示。
公式中m、n分別表示非重疊列表A′、B′中的詞項個數(shù)。iω、jω分別表示列表中相應(yīng)詞項在相應(yīng)文本中的TF-IDF[6]權(quán)值,di、dj定義見公式(5)、(6)
(5)采用參數(shù)化線性加權(quán)的方式計算文本A、B相似度值,其中λ為可調(diào)節(jié)因子。
KNN(k-NearestNeighbor)分類算法[7]屬于數(shù)據(jù)挖掘領(lǐng)域中最簡單的分類方法之一。本文采用KNN分類器對文本測試集進(jìn)行測試。對加權(quán)word2vce文本相似度準(zhǔn)確性驗證的具體做法如下:
(1)輸入為訓(xùn)練文本集train_text和測試文本集test_text。輸出的是帶有分類標(biāo)簽的測試文本集test_text。
(2)首先對文本集進(jìn)行預(yù)處理步驟。下載Python外部擴(kuò)展庫jieba,用jieba分詞對訓(xùn)練文本集和測試文本集進(jìn)行分詞,加載中文停用詞表剔除停用詞之后就得到初始的文本特征集合。
(3)運(yùn)用word2vec詞向量模型中的Skip-gram模型對訓(xùn)練文本集進(jìn)行詞向量訓(xùn)練,得到每個詞匯對應(yīng)的詞向量,并根據(jù)公式(1)計算詞匯兩兩之間相似度值。
(4)根據(jù)2.1小節(jié)相似度計算方法,得到測試文本集中某一個文本同訓(xùn)練文本集中每一個文本的相似度值,然后對相似度進(jìn)行遞減排序,選取前K篇訓(xùn)練文本集中的文本對測試文本進(jìn)行分類。
(5)最后重復(fù)以上步驟,直到測試文本集中每一篇文本都分類完成,得到每篇文本的類別標(biāo)簽,在表格中輸出分類標(biāo)簽和原標(biāo)簽以便后續(xù)進(jìn)行對比。
本文運(yùn)用語料庫,采集各類短文本,各類別文本數(shù)量分布較均勻,采用搜狗的綜合性分類語料,共分10類,其最終包括汽車、財經(jīng)、IT、健康、體育、旅游、教育、招聘、文化、軍事),選用python擴(kuò)展包jieba分詞, 選取中文停用詞表去除停用詞。采用TF-IDF 算法來計算非重疊詞匯特征權(quán)值,參數(shù)設(shè)置如下:相似度閾值為0.65,可調(diào)節(jié)因子λ=0.2,K=100。
將爬取的搜狗語料庫整合為文本形式后,對其進(jìn)行文本預(yù)處理。經(jīng)過Jieba中文分詞且去除無意義停用詞后,將原文本的內(nèi)容,類型,以及詞集導(dǎo)入表格,并標(biāo)明序號。結(jié)果如圖4、圖5所示。
圖4 分類前結(jié)果
圖5 分類后結(jié)果
選取某一基準(zhǔn)文本,類型固定為汽車,對測試集中不同類型的文本分別進(jìn)行相似度計算,每種類型的文本各選取五篇,分別使用均值word2vec和加權(quán)word2vec兩種計算方法對相似度值計算,如表1所示。
表1 基準(zhǔn)文本對不同文本的相似度計算結(jié)果
由表1可以看出,當(dāng)兩文本類型同時為汽車時,兩種計算方式得出的相似度值明顯比不同類型的文本之間計算的相似度值要高。但是單一對加權(quán)word2vec和平均word2vec兩種不同計算方案的相似度值做對比并不能明顯體現(xiàn)加權(quán)算法的優(yōu)越性,需要對計算結(jié)果做后續(xù)處理。
相似度計算結(jié)果只能展示兩文本之間抽象的相似程度,要評價相似度計算的優(yōu)化效果還需依靠文本分類從側(cè)面體現(xiàn)。
本文選取文本測試集,測試文本集內(nèi)含有十種不同類型的文本(分別是汽車、財經(jīng)、IT、健康、體育、旅游、教育、招聘、文化、軍事)各20篇,共200篇文本。用測試集中的某一個文本與訓(xùn)練集中的每一個文本都進(jìn)行相似度的計算。將計算得到的數(shù)值按從大到小的順序排序,排在前面的100篇訓(xùn)練集中大多數(shù)的文本的類型就是該文本經(jīng)過KNN分類后的結(jié)果,同時輸出該文本分類后的標(biāo)簽和原標(biāo)簽導(dǎo)入表格便于后續(xù)對比展示優(yōu)化效果。
由表2和表3可見,與均值word2vec模型相比,本文的算法提高了文本計算準(zhǔn)確率、召回率和 F1值指標(biāo)。具體數(shù)值如下:平均準(zhǔn)確率提升了3.06%、召回率提升了8.00%、F1值提升了5.49%,證明本文的文本相似度方法的性能比傳統(tǒng)的文本相似度的計算方法的有效性高。
表2 加權(quán)word2vec文本分類效果
表3 均值word2vec文本分類效果
本文研究了一種加權(quán)word2vec文本相似度計算方法。首先對語料庫抽取訓(xùn)練集進(jìn)行詞向量訓(xùn)練,然后把獲得的關(guān)鍵詞分割成重疊和非重疊兩部分,進(jìn)而分別計算重疊與非重疊部分的相似度值,最后利用線性加權(quán)方法計算獲得最終結(jié)果。實驗結(jié)果表明本文的算法對文本相似度計算的考慮更加全面也更加準(zhǔn)確。