国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于TextCNN 的政策文本分類

2022-06-29 06:08悅,湯
電子設(shè)計工程 2022年12期
關(guān)鍵詞:類別卷積向量

李 悅,湯 鯤

(1.武漢郵電科學(xué)研究院,湖北武漢 430070;2.南京烽火天地通信科技有限公司,江蘇 南京 210019)

在當(dāng)今的大數(shù)據(jù)時代,政府進行宏觀決策時,常常需要參考各地市出臺的政策文件,然而現(xiàn)在各地市的政策文件分布雜亂,且類別不統(tǒng)一,目前市面上也并沒有把各地市的政策全部綜合起來的政策文本類數(shù)據(jù)集,而此類數(shù)據(jù)集為政府在宏觀決策時提供參考,基于此,文中構(gòu)建了一個大型綜合的全國各地市政策文本類數(shù)據(jù)集。其次,針對政策文本分類,目前市面上大都只進行了單標(biāo)簽分類,而單標(biāo)簽分類顯然并不適用于政策文本的分類,用一個標(biāo)簽來概括整篇文本太籠統(tǒng),因此,文中對政策文本數(shù)據(jù)集進行多標(biāo)簽分類。此外,在政策文本分類中,當(dāng)前普遍的思路是采用TF-IDF+SVM 分類算法[1]來構(gòu)建分類模型,或者使用BERT 進行分類[2],效果都不佳。文中經(jīng)過實驗驗證了采用神經(jīng)網(wǎng)絡(luò)TextCNN 更適合進行政策類長文本的多標(biāo)簽分類。

1 TextCNN原理介紹

TextCNN 模型可以并行處理,且自帶n-gram 屬性,訓(xùn)練速度和預(yù)測精度都比較理想,是一種非常優(yōu)秀的文本分類模型[3]。對于500 字以上長度的長文本,即使是LSTM 在這么長的序列長度上也難免梯度消失,而CNN 就不存在該問題,TextCNN 不僅適合處理短文本,同樣也適合處理長文本,該文待處理的政策文本即為長文本。下面介紹了TextCNN 模型的原理。

1)Word Embedding

如圖1 所示,在TextCNN 中,首先將“這個青團不錯,你嘗嘗”分詞成“這個/青團/不錯/,/你/嘗嘗”,通過Embedding 將每個詞映射成一個5 維詞向量(維度可任意)[4-5]。

圖1 Word Embedding

這步主要是為了將自然語言數(shù)值化,從而方便后續(xù)的處理。可以看出,映射方式不同,最后結(jié)果不同。構(gòu)建完詞向量后,將所有的詞向量拼接成一個6×5 的二維矩陣,將其作為最初的輸入。

2)Convolution 卷積

這一步驟是將輸入詞向量矩陣與卷積核進行卷積運算操作,將“這個”/“青團”/“不錯”/“,”4 個詞語構(gòu)成的矩陣與卷積核分別對應(yīng)相乘再相加,可得到最終的Feature Map,這個步驟即為卷積[6],具體操作如圖2 所示。卷積操作后,輸入的6×5 的詞向量矩陣就被映射成了一個3×1 的矩陣,即Feature Map。

圖2 卷積

3)Pooling 池化

在得到Feature Map=[1,1,2]后,從中選取最大值‘2’作為輸出,便是max-pooling[7]。如果選擇平均池化(mean-pooling)[8],就是求平均值作為輸出。由此,最大池化在保持主要特征的情況下,極大地減少了參數(shù)的數(shù)目,加速了運算,并降低了Feature Map的維度,同時,也降低了過擬合的風(fēng)險。

圖3 max-pooling

4)使用Softmax k 分類

接下來是將max-pooling的結(jié)果合并到一起,再送入Softmax 中,可以得到各個類別[9],如label 為1 和-1的概率,如圖4 所示。

圖4 Softmax

在做模型預(yù)測時,使用TextCNN,此時要根據(jù)預(yù)測標(biāo)簽以及實際標(biāo)簽來計算損失函數(shù),分別計算出卷積核、max-pooling、Softmax 函數(shù)、激活函數(shù),這4 個函數(shù)中的各個參數(shù)需要更新的梯度,再依次更新這些參數(shù),即可完成一輪訓(xùn)練。

2 數(shù)據(jù)集的構(gòu)建

由于該文研究任務(wù)的特殊性,沒有現(xiàn)成的語料可以使用,所以需要構(gòu)建相應(yīng)的語料庫。其數(shù)據(jù)集來源于全國各個地市的政府政策公告文本信息的爬蟲爬取,然后再對爬取的結(jié)果利用正則以及結(jié)合人工清洗的方式進行數(shù)據(jù)的清洗,構(gòu)建數(shù)據(jù)庫,將爬取并清洗后的數(shù)據(jù)入庫,構(gòu)建政府政策文本語料庫。

2.1 爬取數(shù)據(jù)及數(shù)據(jù)處理

文中所采用的數(shù)據(jù)均為網(wǎng)絡(luò)爬蟲所得,先挑選出幾個所需字段,再對各個地市政府官網(wǎng)公開的政策文本數(shù)據(jù)分別進行采集,經(jīng)過簡單清洗后整理入庫。

為了豐富數(shù)據(jù)庫的數(shù)據(jù)內(nèi)容,文中挑選的字段涵蓋了標(biāo)題、文本、適用對象、原文鏈接等。全部字段有:title 標(biāo)題、themeList 主題、styleName文體、levelName 層級、dispatchList_commonName 發(fā)文單位、targetList 適用對象、original_url 原文鏈接、publishTime 發(fā)文時間、industryList 適用行業(yè)、scaleList 適用規(guī)模、qx_content 內(nèi)容、classify_tag_list分類標(biāo)簽。

共爬取數(shù)據(jù)100 000 條,經(jīng)去重、去空,以及刪除過短文本后數(shù)據(jù)量為96 640 條。對數(shù)據(jù)進行如下操作:

1)增加標(biāo)簽、篩掉無關(guān)類別的數(shù)據(jù)(和分類沒關(guān)系的字段)。

2)繁簡轉(zhuǎn)換、清洗無意義字符。

3)人工打標(biāo),主要是對“其他”這個類別的數(shù)據(jù)進行打標(biāo)。

4)構(gòu)建訓(xùn)練集和測試集,按照6∶2∶2 進行劃分。

2.2 數(shù)據(jù)集的介紹

2.2.1 類別的構(gòu)建

由于爬取的數(shù)據(jù)集中,內(nèi)容的類別雜亂不統(tǒng)一,不利于后續(xù)進一步利用該數(shù)據(jù)集,因此,對自建數(shù)據(jù)集中的“qx_content 內(nèi)容”字段進行文本分類操作。

在類別的設(shè)定上,首先參考了國務(wù)院政策信息網(wǎng)的類別設(shè)定;另外,文中對數(shù)據(jù)集進行TF-IDF+LDA 聚類[10],通過聚類得到了一些政策重點詞,針對這些政策重點詞,進行類別的設(shè)定。最終,共擬定了47 種類別。全部類別為:產(chǎn)業(yè)發(fā)展、營商環(huán)境、政務(wù)公開、學(xué)校教育、人才引進和能力培育、創(chuàng)新研發(fā)、復(fù)工復(fù)產(chǎn)、資質(zhì)認(rèn)定、稅收優(yōu)惠、節(jié)能環(huán)保、信息化建設(shè)、轉(zhuǎn)型升級、互聯(lián)網(wǎng)+、市場拓展、工程報建、企業(yè)創(chuàng)辦、穩(wěn)企穩(wěn)崗、醫(yī)療健康、金融財稅、平臺基地建設(shè)、知識產(chǎn)權(quán)、電子政務(wù)、成果轉(zhuǎn)化、數(shù)字政府、不動產(chǎn)登記、科研課題、融資幫扶、三農(nóng)發(fā)展、租金減免、孵化器及基地建設(shè)、市場監(jiān)管、疫情扶持、緩繳社保、大數(shù)據(jù)、水電氣減免、招商引資、法律法規(guī)、數(shù)字經(jīng)濟、電子商務(wù)、品牌建設(shè)、數(shù)據(jù)治理、智慧城市、改制上市、并購重組、一帶一路、區(qū)塊鏈、其他。

2.2.2 數(shù)據(jù)集示例

針對上文中的自建數(shù)據(jù)集,想要實現(xiàn)對每條數(shù)據(jù)進行清洗、分詞后,對該條數(shù)據(jù)打上相應(yīng)分類標(biāo)簽的目的。樣本和標(biāo)簽的情況如下:

樣本是政策的文本內(nèi)容,標(biāo)簽是政策文本涉及到的類別,而每條政策涉及到的類別可能為多個,所以需要進行政策文本的多標(biāo)簽分類。所以訓(xùn)練模型的目的,是希望輸入政策文本數(shù)據(jù),輸出該政策涉及到的類別。數(shù)據(jù)集示例如圖5 所示。

圖5 數(shù)據(jù)集示例圖

3 TextCNN模型的構(gòu)建

3.1 搭建TextCNN模型

1)定義Embedding 層

加載預(yù)訓(xùn)練詞向量,在自定義Embedding 層時,將把詞向量矩陣加入其中。采用這種方法,可使詞向量矩陣在模型初始化時就加載好了??梢赃x擇詞向量在訓(xùn)練過程中凍結(jié)還是微調(diào)。如果選擇微調(diào),即freeze=False,能夠一定程度上提升效果,盡管訓(xùn)練速度會變慢[11]。

2)定義卷積層和池化層

如果卷積層的層數(shù)太淺,會無法捕捉長距離的語義信息,從而不足以提取文本的特征,但是如果卷積層數(shù)太深,就會陷入梯度消失的境地[12]。為了便于提取長文本中的句子特征,文中增加了卷積層數(shù)、更改了池化方式。

采用的池化為1/2 池化,在卷積之后,每經(jīng)過一個大小為3,步長為2 的池化層,序列的長度就被壓縮成了原來的一半。即同樣是size=3 的卷積核,每經(jīng)過一個1/2 池化層后,其能感知到的文本片段就比之前長了一倍,解決了原TextCNN 模型中無法捕獲長距離語義信息的問題。

3)全連接層

該文對模型在全連接層處也進行了修改,TextCNN 的原論文中,網(wǎng)絡(luò)結(jié)構(gòu)只有一個全連接層作為輸出層,且無激活函數(shù)。它是把卷積池化的結(jié)果拼接,然后進行dropout 操作,再接輸出層。而該文在輸出層之前,又加了一個全連接層(激活函數(shù)為ReLU),將卷積池化的結(jié)果拼接,進行dropout,加全連接層,再接上輸出層。這樣做的原因主要是網(wǎng)絡(luò)加深后,便于提取更豐富的特征。而且如果輸出的類別較少,那么輸出的維度劇烈降維的情況下,如直接從幾百維降到幾維,可能對分類的效果產(chǎn)生不好的影響。因此需要加一個全連接層來過渡。

4)輸出層

輸出層是線性層,不需要使用激活函數(shù)。后面的loss 函數(shù),將sigmoid 和計算binary loss 兩步同時進行,這樣計算更有效率,也更穩(wěn)定,故不必加sigmoid函數(shù)得到概率。

文中經(jīng)改進后的TextCNN 模型與原TextCNN 模型相比,有如下優(yōu)勢:

基于傳統(tǒng)的TextCNN 模型,為了解決模型中無法捕捉長距離語義信息的缺點,該文加深了卷積深度,同時提出了等長卷積和1/2 池化方式,使得卷積范圍增加。

另外,增加一個全連接層作為過渡,防止在輸出維度劇烈降維情況下,對分類效果產(chǎn)生的不利影響。

3.2 多標(biāo)簽分類的評估函數(shù)

該文選擇采用海明損失[13](Hamming loss)和F1值[14](宏平均和微平均)作為主要指標(biāo)來評估模型的性能。關(guān)于宏平均和微平均:如果每個class 的樣本數(shù)量相差不大,那么宏平均和微平均差異也不大。如果每個class 的樣本數(shù)量相差較大并且想更注重樣本量多的class,就使用微平均;更注重樣本量少的class,就使用宏平均。如果微平均遠(yuǎn)低于宏平均,則應(yīng)該去檢查樣本量多的class。如果宏平均遠(yuǎn)低于微平均,則應(yīng)該去檢查樣本量少的class[15]。這里可直接用sklearn 函數(shù)來計算。對于每一個預(yù)測樣本,需要47 個類別的每一個類別都預(yù)測正確,才能算該樣本預(yù)測正確,其難度太大,并不適合用于評價模型的效果,該文需要分類的共有47 個類別,如果部分類別可以預(yù)測正確的話,模型也是可以用的。在模型的訓(xùn)練過程中,如果監(jiān)控到驗證集上的F1 值有提升,那么會在測試集上做一次評估,同時保存模型。

多標(biāo)簽分類的損失函數(shù)不再是多分類的crossentropy loss,而是binary cross-entropy loss。具體實現(xiàn)的函數(shù)為:criterion=nn.BCEWithLogitsLoss (pos_weight=config.class_weights)[16]

該函數(shù)將模型的輸出做sigmoid,然后計算損失。pos_weights 這個關(guān)鍵字參數(shù),用于傳入類別的權(quán)重,引入該參數(shù)緩解類別不平衡的問題,這里只在訓(xùn)練時傳入,驗證和測試時不用。

4 實驗結(jié)果及對比分析

4.1 配置環(huán)境及實驗參數(shù)

1)實驗環(huán)境

該實驗的運行環(huán)境為:tensorflow-gpu=1.12.0、keras=2.2.4、python3.6、Scikit-learn=0.21.3、Torch=1.1.0。

2)實驗參數(shù)

在config 類中,配置好相關(guān)的參數(shù),如文件路徑、模型的各個參數(shù)等。其他一些需要通過計算得到的模型參數(shù),在數(shù)據(jù)處理過程中添加,如輸入的最大長度、類別數(shù)、詞表的尺寸等。該文設(shè)置的部分參數(shù)如下:

①batch size=128;

②學(xué)習(xí)率=1e-3;

③百度百科詞向量維度=300;

④卷積核尺寸=[2,3,4,5];

⑤卷積核數(shù)量=128;

4.2 文本預(yù)處理

首先數(shù)值化樣本及標(biāo)簽,在配置參數(shù)初始化后,依次完成文本的清洗和分詞,確定輸入的最大長度,對樣本進行zero pad,轉(zhuǎn)化為id,對標(biāo)簽進行數(shù)值化,以及構(gòu)建詞表等操作。數(shù)值化后的標(biāo)簽每一位是0或1,類別數(shù)是列數(shù),標(biāo)簽的類別數(shù)為47,也就是TextCNN 的輸出維度為47。在數(shù)值化樣本及標(biāo)簽后,加載百度百科詞向量。針對類別不平衡問題,該文的數(shù)據(jù)集多標(biāo)簽類別有47 個,經(jīng)過統(tǒng)計分析,每個類別之間數(shù)量差別巨大,存在比較嚴(yán)重的類別不平衡問題。通過計算各個類別的權(quán)重,來計算加權(quán)的loss。對于數(shù)量較多的類別,給予較小的權(quán)重,數(shù)量較少的類別,權(quán)重較大,以期能緩解多標(biāo)簽的類別不平衡問題。

4.3 對比實驗結(jié)果

該節(jié)測試基本的多標(biāo)簽貝葉斯分類算法MLNB、多標(biāo)簽分類KNN 算法ML-KNN,以及RoBERTa算法與文中改進過的TextCNN 模型之間的性能對比。該選擇將以上各個算法在該文的自建數(shù)據(jù)集上進行測試運行對比,結(jié)果如表1 所示。

表1 實驗結(jié)果對比

在該文的自建數(shù)據(jù)集上,TextCNN 模型在主要的性能指標(biāo)上超過了所有其他模型,達到了較好的效果。F1-micro 的值分別比RoBERTa、ML-KNN、ML-NB 高出了3.19,8.68,5.84 個百分點。

5 結(jié)束語

該文首先介紹并構(gòu)建了一個全新的全國政策文本類的數(shù)據(jù)集,通過爬蟲來獲取全國各個地市的政策文本數(shù)據(jù),對數(shù)據(jù)進行預(yù)處理后,構(gòu)建訓(xùn)練集、驗證集和測試集。后在自建數(shù)據(jù)集上進行基于TextCNN 的多標(biāo)簽分類任務(wù)。最后通過改進過的TextCNN 神經(jīng)網(wǎng)絡(luò)來訓(xùn)練模型對數(shù)據(jù)進行多標(biāo)簽分類,經(jīng)過實驗對比測試,經(jīng)過改進后的TextCNN 結(jié)合百度百科詞向量在自建數(shù)據(jù)集上達到了較好的分類效果。

當(dāng)然,該文在研究過程中仍然有不足之處,比如文中自建數(shù)據(jù)集里的政策數(shù)據(jù)是多標(biāo)簽文本,存在一定程度上的標(biāo)簽類別不平衡的問題,雖然使用權(quán)重在一定程度上緩解了類別不平衡的問題,但權(quán)重應(yīng)用的效果并不是很好,這部分內(nèi)容待優(yōu)化。未來將在該方面繼續(xù)進行研究。

猜你喜歡
類別卷積向量
基于全卷積神經(jīng)網(wǎng)絡(luò)的豬背膘厚快速準(zhǔn)確測定
向量的分解
一種基于卷積神經(jīng)網(wǎng)絡(luò)的地磁基準(zhǔn)圖構(gòu)建方法
基于3D-Winograd的快速卷積算法設(shè)計及FPGA實現(xiàn)
一種并行不對稱空洞卷積模塊①
聚焦“向量與三角”創(chuàng)新題
一起去圖書館吧
簡析基于概率預(yù)測的網(wǎng)絡(luò)數(shù)學(xué)模型建構(gòu)
向量垂直在解析幾何中的應(yīng)用
向量五種“變身” 玩轉(zhuǎn)圓錐曲線