陳鋼
(長三角信息智能創(chuàng)新研究院,安徽蕪湖 241000)
我國目前已有數(shù)千萬家企業(yè),并且每年都有大量新企業(yè)設(shè)立。市場監(jiān)督管理部門在企業(yè)注冊時都會強制要求其注明經(jīng)營范圍,但是從分散的經(jīng)營范圍中并不能直觀地得出該企業(yè)的行業(yè)歸屬[1]。除了上市公司會在網(wǎng)上公開自己的行業(yè)類別以外,其他大部分企業(yè)的行業(yè)類別都是未公開的。企業(yè)所屬行業(yè)由其經(jīng)營范圍描述而得,經(jīng)營范圍描述往往涉及到多個行業(yè)的描述,在現(xiàn)如今龐大的行業(yè)規(guī)模下人工進行行業(yè)分類存在效率低下、準(zhǔn)確性不高等問題[2]。
行業(yè)分類自動化的一般過程是從企業(yè)的經(jīng)營范圍文本中提取特征,然后使用分類器完成預(yù)測。企業(yè)經(jīng)營范圍文本需要向量化后才能作為分類模型的標(biāo)準(zhǔn)輸入。Word2vec、glove 等詞向量模型可以通過將自然語言中的詞轉(zhuǎn)換為稠密的詞向量嵌入到神經(jīng)網(wǎng)絡(luò)模型中,從而使神經(jīng)網(wǎng)絡(luò)模型可以獲取更多、更精確的語義信息,以提升分類的準(zhǔn)確率[3]。然而這類模型無法關(guān)注到上下文的關(guān)聯(lián)信息,在出現(xiàn)存在歧義的特征詞時可能無法正確表征,而包含大量先驗知識的預(yù)訓(xùn)練語言模型可以有效解決這類問題[4]。門控循環(huán)單元(Gate Recurrent Unit,GRU)適合對文本建模、獲取文本全局的結(jié)構(gòu)信息[5]。注意力機制(Attention)可以為經(jīng)營范圍中重要的詞賦予更高的權(quán)重,進而更好提取關(guān)鍵信息[6]。基于此,提出一種基于混合神經(jīng)網(wǎng)絡(luò)模型的企業(yè)行業(yè)分類方法,融合RoBERTa 預(yù)訓(xùn)練語言模型、GRU 網(wǎng)絡(luò)和注意力機制構(gòu)建候選集生成網(wǎng)絡(luò)和外部知識嵌入網(wǎng)絡(luò)。
為解決企業(yè)行業(yè)分類問題,通常會借助自然語言處理和機器學(xué)習(xí)的手段對經(jīng)營范圍進行數(shù)據(jù)挖掘,從而自動完成行業(yè)分類。主流分類方法分有兩種:基于機器學(xué)習(xí)的方法和基于深度學(xué)習(xí)的方法。基于機器學(xué)習(xí)的方法首先人工提取特征,然后將多個特征串聯(lián)起來組成一個高維度的特征向量,之后便可以使用傳統(tǒng)的機器學(xué)習(xí)的各種分類器,如樸素貝葉斯[7]、支持向量機、決策樹等完成行業(yè)分類。這種方法需要做大量的特征工程,特征的選取和分析方式復(fù)雜,需要耗費較多的成本,并且這些特征都是針對常規(guī)文本分類問題提出的,不存在對具體問題的依賴,這就會造成前端特征與后端任務(wù)的脫節(jié),導(dǎo)致前端花費大量精力構(gòu)思出來的特征可能根本與指定的任務(wù)不相關(guān)。另一種是基于深度學(xué)習(xí)的方法,如卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)[8]、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[9]、基于長短期記憶的循環(huán)神經(jīng)網(wǎng)絡(luò)(Long Short Term Memory,LSTM)[10]完成自動的特征提取和分類任務(wù)。相比行業(yè)門類,屬于不同行業(yè)小類的企業(yè)在經(jīng)營范圍描述上存在很多相似性,利用常規(guī)方法很難發(fā)現(xiàn)這種微小的差異,進而較難作出正確的判斷。
使用深度學(xué)習(xí)方法雖然免去了一些人工特征提取的工作,但是由于經(jīng)營范圍的描述信息通常很分散,包含了多個行業(yè)的內(nèi)容,單從經(jīng)營范圍無法確定哪些信息對判斷行業(yè)類別是有效的。為克服上述行業(yè)分類方法的缺陷,提出一種基于混合神經(jīng)網(wǎng)絡(luò)的行業(yè)分類模型,首先將企業(yè)經(jīng)營范圍文本序列輸入RoBERTa 預(yù)訓(xùn)練語言模型,并將輸出的特征向量作為輸入到下一層網(wǎng)絡(luò)的語義表征向量;通過引入企業(yè)外部知識,結(jié)合雙向門限循環(huán)神經(jīng)網(wǎng)絡(luò)(BiGRU)和注意力機制的外部知識嵌入網(wǎng)絡(luò),有效提高模型的理解層次,提升行業(yè)分類的準(zhǔn)確性。同時,提出一種基于GRU 的候選集生成網(wǎng)絡(luò),通過GRU 生成分類候選集用于增強算法的分類能力,在此基礎(chǔ)上引入跳層連接機制,以解決深度網(wǎng)絡(luò)訓(xùn)練中的信息丟失和網(wǎng)絡(luò)退化問題。
行業(yè)分類模型主要由三個部分組成,如圖1 所示。語義表征部分使用RoBERTa 模型作為基本模型,該模型相對BERT 模型進行了多項改進。為了使RoBERTa 模型適用于中文環(huán)境下的企業(yè)行業(yè)預(yù)測,使用RoBERTa-wwm-ext 作為文本特征提取模型,并將企業(yè)經(jīng)營范圍文本序列輸入其中[11]。處理后的文本表征向量被送入到候選集生成網(wǎng)絡(luò),產(chǎn)生包含類別候選集的特征向量,外部知識作為補充信息,在使用BiGRU 向量化后與特征向量進行拼接,得到融合的特征向量,融合后的特征向量最終輸入到分類器進行類別預(yù)測,以實現(xiàn)行業(yè)類別預(yù)測。
圖1 模型結(jié)構(gòu)
候選集是一種對企業(yè)行業(yè)類別可能判斷的候選選項的集合,模型使用GRU 網(wǎng)絡(luò)作為候選集的生成網(wǎng)絡(luò)。GRU 使用門機制跟蹤序列狀態(tài),重置門和更新門共同控制當(dāng)前狀態(tài)要更新的信息量。基于GRU的候選集生成網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 候選集生成網(wǎng)絡(luò)結(jié)構(gòu)
經(jīng)過預(yù)訓(xùn)練模型編碼后的語義向量結(jié)果xt構(gòu)成集 合X={xt|t=1,2,…,n},將X與類別語義信息Cs={|i=1,2,…,m}作為模塊的輸入。更新門zt、重置門rt均由輸入向量xt與上一步隱藏狀態(tài)ht-1線性組合并經(jīng)過sigmod 激活函數(shù)非線性化處理后得到。候選狀態(tài)的計算方式與傳統(tǒng)的RNN 類似,由重置門rt與隱藏狀態(tài)ht-1的哈達瑪積和輸入向量xt線性組合后,經(jīng)過tanh 激活函數(shù)非線性化處理得到。新的隱藏狀態(tài)ht由更新門zt、隱藏狀態(tài)ht-1和候選狀態(tài)共同計算得到:
將不同時間節(jié)點隱藏狀態(tài)ht構(gòu)成集合H={ht|t=1,2,…,n,n+1,…,n+m},經(jīng)由全連接層以及softmax 函數(shù)后得到候選集C={ci|i=1,2,…,m}。對候選集使用全連接層進行維度轉(zhuǎn)換,輸出與預(yù)訓(xùn)練語言模型同維度的結(jié)果VC={|t=1,2,…,n}。為了防止訓(xùn)練過程中網(wǎng)絡(luò)層數(shù)加深后可能存在的信息丟失和網(wǎng)絡(luò)退化問題,在候選集生成網(wǎng)絡(luò)中添加跳層連接[12],其主要過程是通過將網(wǎng)絡(luò)的輸入部分與輸出結(jié)果使用門控機制進行相加,得到最終網(wǎng)絡(luò)輸出結(jié)果Vout:
其中,f(X)是主干網(wǎng)絡(luò),它是由多個網(wǎng)絡(luò)層組成的非線性變換得到的。
完成候選集生成后,構(gòu)建了基于企業(yè)描述信息的Query-Tag 預(yù)測模型。除了經(jīng)營范圍描述外,企業(yè)也包含大量其他存在相關(guān)性的標(biāo)簽,單純利用某一類標(biāo)簽可能存在難以理解某些模糊描述的情況,理解層次偏低。通過引入企業(yè)外部知識,可以有效提高模型的理解層次,提升行業(yè)分類準(zhǔn)確性。因此,將企業(yè)其他信息作為外部知識信息引入分類模型,以鍵值對形式構(gòu)建出結(jié)構(gòu)化外部知識。輸入到模型中的結(jié)構(gòu)化知識庫表示為一個鍵值對列表:
其中,si表示企業(yè)信息對應(yīng)類型(例如企業(yè)名稱、注冊資本),vi表示對應(yīng)企業(yè)信息的具體內(nèi)容(例如安徽某有限公司、100 萬元人民幣)。
在單向神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,狀態(tài)是從前向后輸出的,難以抓取整個知識庫中的上下文信息。然而在文本分類中,當(dāng)前時刻的輸出可能與前一時刻的狀態(tài)和后一時刻的狀態(tài)都存在相關(guān)性。因此,使用BiGRU 網(wǎng)絡(luò)作為信息提取網(wǎng)絡(luò),為輸出層提供輸入序列中每一個點的完整上下文信息。注意力機制能選擇性地對這些外部信息進行篩選并聚焦到有效信息上,因此在分類模型中還引入注意力機制來增強補充外部知識后的預(yù)測效果。外部知識嵌入網(wǎng)絡(luò)主要包括結(jié)構(gòu)化知識庫(Structured KB)、BiGRU 網(wǎng)絡(luò)和Attention 機制,外部知識嵌入網(wǎng)絡(luò)如圖3 所示。
圖3 外部知識嵌入網(wǎng)絡(luò)
將L經(jīng)過Embedding 得到向量L=[I1,I2,…,In]。向量L中的元素Ii分別輸入前向GRU 和反向GRU,得到前向隱藏狀態(tài)和反向隱藏狀態(tài),拼接前向和反向隱藏狀態(tài)得到BiGRU 的隱藏狀態(tài)對BiGRU 的隱藏狀態(tài)hi應(yīng)用注意力機制,并引入知識庫上下文向量u來衡量知識的重要性,從而得到有助于增強行業(yè)分類的外部知識向量V。最后,通過全連接網(wǎng)絡(luò)將外部知識向量V的維度轉(zhuǎn)換為與主干網(wǎng)絡(luò)相同維度的結(jié)果向量。
使用正確類別的負(fù)對數(shù)似然作為訓(xùn)練的損失函數(shù):
其中,j是企業(yè)E的分類類別。
使用基于CUDA 9.0 的深度學(xué)習(xí)框架PyTorch 1.1.0 搭建網(wǎng)絡(luò)模型,實驗操作系統(tǒng)為Ubuntu 18.04,內(nèi)存32 GB,Intel(R)Core(TM)i7-7700CPU@3.60GHz,GeForce GTX 1080 Ti GPU。
為評估行業(yè)分類模型的有效性,構(gòu)建了由企業(yè)數(shù)據(jù)組成的數(shù)據(jù)集。數(shù)據(jù)集中的信息包括企業(yè)名稱、注冊資本、成立時間、經(jīng)營范圍、行業(yè)類別、行政許可、產(chǎn)品信息等。數(shù)據(jù)集中有60 000 條數(shù)據(jù),隨機選取了其中50 000 條數(shù)據(jù)作為訓(xùn)練集,5 000 條數(shù)據(jù)作為驗證集,5 000 條數(shù)據(jù)作為測試集。
在超參數(shù)設(shè)置上,RoBERTa 模型的嵌入維度為768維,多頭注意力機制的設(shè)置為12 個注意力頭,隱藏層維度同樣設(shè)置為768維,隱藏層層數(shù)設(shè)置為12,詞匯表大小為21 128字,GRU 的隱藏層維度設(shè)置為128。在訓(xùn)練設(shè)置上,批處理大小設(shè)置為16,批處理以token 為單位,每個輸入文本的token 個數(shù)設(shè)置為200。同時,模型使用學(xué)習(xí)率為1e-5 的Adam 優(yōu)化器。訓(xùn)練輪數(shù)設(shè)置為10 輪(epoch=10),并且使用學(xué)習(xí)率優(yōu)化策略,每兩個epoch 學(xué)習(xí)率下降為原來的80%。為了更好地說明模型的分類性能,采用準(zhǔn)確率(acc)和F1 值作為評價指標(biāo)。
在數(shù)據(jù)集上與多種基線分類方法進行了對比,對比結(jié)果如表1 所示。
表1 對比實驗結(jié)果
1)機器學(xué)習(xí)方法
使用TF-IDF 和N-grams 作為特征提取方法,分別以機器學(xué)習(xí)方法MultinomialNB、SGD 和SVM 作為分類器對特征進行分類。
2)深度學(xué)習(xí)方法
TextCNN[13]:使用卷積核窗口大小分別為2、3、4的三個卷積層和相應(yīng)的池化層提取特征并進行拼接,以此來獲得更豐富、不同粒度的特征信息。
TextRNN[14]:使用經(jīng)過詞嵌入之后的詞向量作為輸入,經(jīng)過RNN 網(wǎng)絡(luò)和池化層進行分類。
HAN[15]:使用基于單詞層面注意力機制的BiGRU模型和基于句子層面注意力機制的BiGRU 模型提取文本多層面的特征進行文本分類。
XLNet-linear:采用預(yù)訓(xùn)練語言模型XLNet模型[16]提取特征,并使用linear 分類器進行行業(yè)分類。
RoBERTa-linear:采用預(yù)訓(xùn)練語言模型RoBERTa模型提取特征,并使用linear 分類器進行行業(yè)分類。
可以看出,RoBERTa-GRU-EKB 模型在兩個數(shù)據(jù)集上均取得了比其他基線模型更好的分類效果。在RoBERTa 的基礎(chǔ)上增加候選集生成網(wǎng)絡(luò)和外部知識嵌入網(wǎng)絡(luò),能夠有效提升行業(yè)分類性能。
為說明候選集生成網(wǎng)絡(luò)和外部知識嵌入網(wǎng)絡(luò)的有效性,定量地比較了是否使用候選集生成網(wǎng)絡(luò)和外部知識嵌入網(wǎng)絡(luò)的實驗結(jié)果。將未使用候選集生成網(wǎng)絡(luò)的結(jié)果命名為RoBERTa-EKB,將未使用外部知識嵌入網(wǎng)絡(luò)的結(jié)果命名為RoBERTa-GRU,對比結(jié)果如表2 所示。
表2 消融實驗結(jié)果
由表2 可見,RoBERTa-GRU-EKB 模型在兩個數(shù)據(jù)集上的分類效果總是優(yōu)于RoBERTa-EKB 模型和RoBERTa-GRU 模型。圖4 展示了候選集生成網(wǎng)絡(luò)消融實驗性能對比。圖4(a)中曲線②幾乎總是在曲線①之下,曲線④幾乎總是在曲線③之下;圖4(b)中曲線②幾乎總是在曲線①上方,曲線④幾乎總是在曲線③上方,這表明模型加入了候選集生成網(wǎng)絡(luò)后,其損失值和準(zhǔn)確率均優(yōu)于未加入候選集生成網(wǎng)絡(luò)的模型。因此,基于GRU 的候選集生成網(wǎng)絡(luò)可以有效提升分類準(zhǔn)確率。
圖4 候選集生成網(wǎng)絡(luò)消融實驗性能對比
圖5 展示了候選集生成網(wǎng)絡(luò)消融實驗性能對比。圖5(a)中曲線②幾乎總是在曲線①之下,曲線④總是在曲線③之下;圖5(b)中曲線②幾乎總是在曲線①上方,曲線④總是在曲線③上方,這表明模型加入了外部知識嵌入網(wǎng)絡(luò)后,其損失值和準(zhǔn)確率均優(yōu)于未加入外部知識嵌入網(wǎng)絡(luò)的模型。因此,外部知識嵌入網(wǎng)絡(luò)可以有效提升分類效果。
圖5 外部知識嵌入網(wǎng)絡(luò)消融實驗性能對比
為更加直觀有效地展示行業(yè)分類效果,在實驗部分給出了RoBERTa-GRU-EKB 模型測試結(jié)果的混淆矩陣熱力圖,如圖6 所示,圖6 中給出了部分類別預(yù)測準(zhǔn)確率各模型對比直方圖(其中A、B、C 等代表某個特定行業(yè)類別),圖中方格顏色深淺表示預(yù)測率大小,從圖6 可知對角線上的方格顏色較深,這表明RoBERTa-GRU-EKB 模型在每個類別上的分類性能均較好。
圖6 混淆矩陣熱力圖
該文提出了一種用于企業(yè)行業(yè)分類的混合神經(jīng)網(wǎng)絡(luò)模型,該模型采用RoBERTa 預(yù)訓(xùn)練語言模型提取企業(yè)經(jīng)營范圍的文本特征,使用候選集生成網(wǎng)絡(luò)與跳層連接模塊增強分類性能。此外,還利用BiGRU 與注意力機制實現(xiàn)了結(jié)構(gòu)化的知識庫嵌入,通過引入企業(yè)外部知識金額提升行業(yè)類別預(yù)測準(zhǔn)確性。實驗結(jié)果表明,該文提出的行業(yè)分類模型相較于其他幾種基線模型都取得了最好的分類效果。