李碧秋,王佳斌,劉雪麗
(華僑大學工學院,泉州 362000)
數(shù)據(jù)清洗是發(fā)現(xiàn)并解決數(shù)據(jù)質(zhì)量問題的過程,通常包含對相似重復數(shù)據(jù)、異常數(shù)據(jù)、不一致數(shù)據(jù)等的清洗,通過數(shù)據(jù)清洗提高數(shù)據(jù)質(zhì)量,使得企業(yè)能夠通過數(shù)據(jù)挖掘與數(shù)據(jù)分析做出科學判斷。針對相似重復數(shù)據(jù)的清洗可以降低數(shù)據(jù)庫的冗余度,提高數(shù)據(jù)庫的利用率。目前關(guān)于相似重復中文文本數(shù)據(jù)清洗主要包括通過預處理將句子文本這種非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)進行處理;基于詞語共現(xiàn)度或基于詞袋模型的詞向量判斷文本是否相似;針對不同領域的特點制定相應的清洗算法;考慮中英文的差異,從詞語語義角度分析記錄的相似性、精確度仍不夠理想??梢娨延醒芯繉χ形臄?shù)據(jù)清洗效率問題、算法普適性及相似性檢測的準確度方面還有很大提升空間。所以本文在現(xiàn)有研究基礎上提出利用BERT模型改進文本向量化過程,將文本轉(zhuǎn)化為計算機可理解的數(shù)學表達,再求可計算的文本之間的余弦相似度,利用K-means和Canopy算法將相似重復文本聚類,實現(xiàn)相似重復數(shù)據(jù)的清洗。
計算機不能直接對自然語言進行計算,所以需要將文本數(shù)據(jù)轉(zhuǎn)化為向量形式,再對其做數(shù)學計算。常用的文本向量化方法包括TF-IDF[1]、Word2Vec模型[2]、GloVe模型[3]、ELMo模型[4]等,但是上述方法缺失文本語義信息、不具有上下文的“語義分析”能力。2018年谷歌AI團隊發(fā)布的BERT模型[5]在問答任務與語言推理方面展示了驕人的成績。其亮點在于,與傳統(tǒng)雙向模型只考慮句子左右兩側(cè)的上下文信息不同,BERT還將融合在所有層結(jié)構(gòu)中共同依賴的左右兩側(cè)上下文信息。此模型主要基于雙向Transformer編碼器[6]實現(xiàn)。BERT模型結(jié)構(gòu)如圖1所示。
圖1 BERT模型結(jié)構(gòu)
t1,t2...ti代表文本輸入,T1,T2...Ti代表經(jīng)過Transformer處理后的文本向量化表示。
BERT主要用了Transformer的Encoder,而沒有用其Decoder。Transformer模型中Encoder的結(jié)構(gòu)如圖2所示。
圖2 Encoder結(jié)構(gòu)
圖2表示了自然語言序列經(jīng)過計算得到文本的數(shù)學表達,Transformer模型沒有循環(huán)神經(jīng)網(wǎng)絡的迭代操作,而是引入位置信息來識別語言中的順序關(guān)系。
此外,在BERT中提出了兩個新的預訓練任務Masked LM(Masked Language Model)和Next Sentence Prediction。Masked LM即隨機把一句話中15%的token替換成以下內(nèi)容:
(1)這些token有80%的幾率被替換成[mask];
(2)有10%的幾率被替換成任意一個其他的token;
(3)有10%的幾率原封不動。
在Next Sentence Prediction任務中選擇一些句子對S1與S2,其中50%的數(shù)據(jù)S1與S2是一組有邏輯的句子,剩余50%的數(shù)據(jù)S2是隨機選擇的,學習其中的相關(guān)性,添加這樣的預訓練的目的是讓模型更好地理解兩個句子之間的關(guān)系。
基于以上理論,具體的向量化過程為:
Step1:文本預處理,去掉停用詞與特殊符號,留下有實際意義的文本;
Step2:將超過512字符的長文本數(shù)據(jù)的前128個字符與后382個字符相加代替原文本,使其符合BERT可接受的文本序列范圍;
Step3:構(gòu)建字向量、位置向量、文本向量作為BERT模型的輸入;
Step4:通過BERT模型中的Transformer編碼器融合全文語義信息,得到文本向量。
向量化結(jié)果為{詞id:向量表示}
部分句子向量化結(jié)果如下:
{45466:11.464980125427246,45438:11.46498012
5427246,10419:3.8473434448242188,44612:11.46498
0125427246......7173:10.771833419799805}
經(jīng)過向量化的文本即可進行余弦相似度的計算。用向量空間中的兩個向量夾角的余弦值作為衡量兩條記錄間的差異大小的度量,余弦值越接近1,就說明向量夾角角度越接近0°,也就是兩個向量越相似,就叫做余弦相似。計算方法為:
(1)
聚類算法是指將一堆沒有標簽的數(shù)據(jù)自動劃分成幾類的方法,這個方法要保證同一類數(shù)據(jù)有相似的特征,所以相似重復文本數(shù)據(jù)的清洗可以采用聚類的思路。K-means[7]首先隨機初始化質(zhì)心,然后重復執(zhí)行以下兩項操作:①計算每個成員與質(zhì)心之間的距離,并將其分配給距離最近的質(zhì)心;②使用每個質(zhì)心的成員實例的坐標重新計算每個簇的質(zhì)心坐標,直到類簇中心不再改變(或誤差平方和最小或達到指定的迭代次數(shù))。
K-means聚類原理簡單,容易實現(xiàn),聚類效果較優(yōu),可解釋度較強,整個過程只需調(diào)整參數(shù)k。該算法簡單的同時也帶來了一定的麻煩:①人為選取k值不一定能得到理想的結(jié)果,不同的k得到的最終聚類結(jié)果相差明顯,需要反復實驗才能找到最佳k值,這樣就會浪費大量的精力和時間,并且要求開發(fā)人員有相關(guān)的經(jīng)驗。②k值選取不當會導致聚類結(jié)果的不穩(wěn)定。所以本文先采用Canopy粗聚類[8]確定聚類中心,獲取聚類中心后執(zhí)行K-means聚類算法,以此避免k值選取的隨機性。
本實驗數(shù)據(jù)來自某平臺運行過程中產(chǎn)生的日志數(shù)據(jù),主要記錄了該平臺在運行過程中產(chǎn)生的業(yè)務流程信息,共317.11萬條記錄,其中包含了大量的相似重復記錄。
分別選擇100萬、150萬、200萬、250萬、300萬條數(shù)據(jù)作為實驗數(shù)據(jù),對通過TF-IDF向量化的K-means算法、Canopy+K-means算法與本文提出的基于BERT的Canopy+K-means算法就查準率、查全率、F1值進行對比。
(1)查準率
查準率以預測結(jié)果為計算范圍,計算方法為預測為重復的記錄中實際也為重復的記錄與所有預測為重復記錄的比值,取值在0到1之間,越接近1,說明聚類正確的命準率越高,效果越好。結(jié)果如表1所示。
表1 查準率對比
從表1可以看出,經(jīng)過BERT向量化的聚類結(jié)果準確率最高,而傳統(tǒng)K-means聚類最差,且效果不太穩(wěn)定,當k值恰好取到合適的值時,其效果最好,但仍不夠理想,雖然經(jīng)過Canopy大致確定k值,由于向量化不夠準確,本不相似的數(shù)據(jù)被聚到一個類里,導致最終聚類結(jié)果排名沒達到最優(yōu)。出現(xiàn)以上結(jié)果的原因是,在日常表達中,同一個詞在不同語境下代表不同的意思,如“在商店里買了一袋蘋果”與“在商店里買了一部蘋果手機”,兩句話的詞語共現(xiàn)度達到了80%,意思卻明顯不同,第一句話中的“蘋果”代表一種水果,第二句話中的“蘋果”代表一種手機品牌,按照傳統(tǒng)的TF-IDF向量化表示,則將其識別為相似重復數(shù)據(jù),而按照BERT模型學習之后,判斷這兩句話相似度很小,后續(xù)聚到不同的類里,準確度有所提升。再如“我比你高”與“你比我高”,兩句話的意思完全相反,而按照TF-IDF得到的結(jié)果是兩句話共同出現(xiàn)的字詞達到100%,認為這兩句話重復,這顯然是錯誤的。而BERT引入位置信息,得到恰當?shù)南蛄勘磉_,進而在計算句子間的相似度時更加準確,聚類結(jié)果也更加可信。以上結(jié)果說明BERT對存在一詞多義的文本進行相似性聚類有重要作用。
(2)查全率
查全率以原樣本為計算范圍,計算方法為:預測為重復的記錄中,實際也為重復的記錄占樣本所有重復記錄的比例。取值在0到1之間,越接近1,說明聚類覆蓋的越全面。結(jié)果如表2所示。
表2 查全率結(jié)果對比
從表2可以看出,K-means算法雖然在查準率上波動較大,但是在查全率大致穩(wěn)定0.6附近,Canopy+K-means較之略有提升,大約在0.7附近,兩種方法都未能將所有的相似重復數(shù)據(jù)聚到一類中。而經(jīng)過BERT文本向量化處理后的聚類則有優(yōu)秀的表現(xiàn),這是因為對于兩個文本,采用大量同義詞來表達相近的意思時,其詞語共現(xiàn)度很小,因此采用傳統(tǒng)TF-IDF向量化的K-means聚類難以將全部相似的文本聚類到一起,而經(jīng)過BERT模型處理后,充分理解句子語義,從而將字面上看似不同的相似文本檢測出來并聚到一起。以上結(jié)果說明BERT對存在多詞一義的文本進行相似性聚類有重要作用。
(3)F1值
查全率與查準率是一對互斥的量,一般不能同時得到最優(yōu)值,F(xiàn)1值是二者調(diào)和平均值,計算公式為:
(2)
F1取值在0到1之間,越接近于1,聚類效果越好。結(jié)果如表3所示。
表3 F1值對比
F1值對前兩個指標做了一個平衡,從表3可以得知,本文提出的基于BERT的相似重復聚類表現(xiàn)最好,Canopy+K-means次之,傳統(tǒng)K-means最差。綜上可以看出,中文文本通過BERT模型生成向量后再進行相似聚類能得到更好的清洗效果。
本文充分考慮了中文文本存在的不同語境下一詞多義與多詞一義的情況,引入了BERT語言模型,改進文本向量化過程,使文本的向量化表達更能承載真實的語義信息,從而使后續(xù)相似文本聚類更加準確。