毛尚偉,張志清,湯 檳, 鄭成坤,翟 波,符云清
(1.中冶賽迪技術(shù)研究中心有限公司, 重慶 401122;2.重慶中冶賽迪信息技術(shù)有限公司, 重慶 401122; 3.重慶大學(xué), 重慶 400044)
電子表格是一種交互式計(jì)算機(jī)應(yīng)用程序,用于以表格的形式組織、分析和存儲(chǔ)數(shù)據(jù),已被廣泛用于構(gòu)建、排序和共享表格列表的任何環(huán)境中。據(jù)微軟公司統(tǒng)計(jì),在全球范圍內(nèi)Excel用戶的數(shù)量已超過(guò)4億人次,如果加上其他一些電子表格軟件,這個(gè)數(shù)目將會(huì)更加龐大。據(jù)弗雷斯特研究公司(Forrester Research)的調(diào)查估計(jì),有50%~80%的企業(yè)在商務(wù)活動(dòng)中使用了電子表格[1]。
電子表格通常具有高度靈活的編輯方式,可呈現(xiàn)的表格結(jié)構(gòu)形式廣泛,利于用戶快捷使用。然而,當(dāng)進(jìn)行大規(guī)模的電子表格自動(dòng)處理時(shí),表格形式的多樣性給計(jì)算機(jī)的自動(dòng)處理帶來(lái)了挑戰(zhàn),嚴(yán)重影響了基于電子表格的復(fù)雜數(shù)據(jù)分析、可視化、錯(cuò)誤檢測(cè)等功能。因此,對(duì)海量表格的結(jié)構(gòu)識(shí)別是獲取表格數(shù)據(jù)、利用表格數(shù)據(jù)的必要步驟。目前,國(guó)內(nèi)外對(duì)電子表格的識(shí)別主要集中在表頭結(jié)構(gòu),如Dou等在2018年提出了一種表格的可擴(kuò)展組檢測(cè)方法[2],以表頭位于表格的前4行為前提,構(gòu)建了基于行的類型、格式以及類型和格式這3種規(guī)則來(lái)推斷表格的表頭結(jié)構(gòu)。Abraham等采用分類的方法研究表頭識(shí)別方法[1],提出了一種基于分類算法的表頭框架??傮w而言,現(xiàn)有相關(guān)研究較少,且存在算法識(shí)別條件較為苛刻、算法精度不高等問(wèn)題。針對(duì)這些問(wèn)題,本文對(duì)電子表格結(jié)構(gòu)的自動(dòng)識(shí)別進(jìn)行了研究。
本文主要針對(duì)工商業(yè)大量使用的縱向表格,采用深度學(xué)習(xí)模型transfer算法與條件隨機(jī)場(chǎng)算法(CRF)相融合,實(shí)現(xiàn)對(duì)電子表格行屬性的自動(dòng)識(shí)別。本文基于中國(guó)國(guó)家統(tǒng)計(jì)局以及相關(guān)政府機(jī)構(gòu)公開的電子表格數(shù)據(jù)集開展工作,采用提出的transformer-crf算法進(jìn)行實(shí)驗(yàn),并與CRF算法進(jìn)行比較。實(shí)驗(yàn)結(jié)果表明:本文提出的算法識(shí)別精度優(yōu)于CRF算法,能夠滿足電子表格自動(dòng)化處理需求。
電子表格按內(nèi)容布局方式可分為縱向電子表格、橫向電子表格、混合電子表格。由于縱向電子表格是商業(yè)和工業(yè)中最為常見的表格布局方式,本文重點(diǎn)研究縱向電子表格的結(jié)構(gòu)識(shí)別,后文電子表格均指縱向電子表格。典型的縱向排布電子表格如圖1[3]所示。
圖1 縱向電子表格樣例
電子表格通常由若干行內(nèi)容組成,可記為如下形式:
R=[r1,r2,r3,…,rn]T
(1)
其中ri(i= 1,2,3,…,n)表示表格的一行內(nèi)容。表格的一行內(nèi)容可能是表格的表頭、變量名、數(shù)據(jù)或者表尾,假設(shè)表格的行屬于且僅屬于前述4種行類別中的一類。表格的具體定義如表1所示。
對(duì)于縱向電子表格的結(jié)構(gòu)識(shí)別,需要識(shí)別出表格中每一行內(nèi)容的類別,R的類別標(biāo)簽序列可記為:
A=[a1,a2,a3,…,an]T
(2)
其中ai是ri的類別標(biāo)簽,ai∈{0,1,2,3}。其中,0是表頭的標(biāo)簽,1是變量名的標(biāo)簽,2是數(shù)據(jù)的標(biāo)簽,3是表尾的標(biāo)簽。
表格結(jié)構(gòu)識(shí)別模型M的目標(biāo)是判斷表格各行的類別標(biāo)簽,可記為:
A=M(R) (3)
為量化電子表格結(jié)構(gòu),本文提出了一系列的表格結(jié)構(gòu)特征,并以此為基礎(chǔ)構(gòu)建表格結(jié)構(gòu)識(shí)別模型,見表2。
表2 表格結(jié)構(gòu)特征
續(xù)表(表2)
表格各行的類別標(biāo)簽之間存在關(guān)聯(lián),如表頭下面很有可能是變量名而不是數(shù)據(jù),數(shù)據(jù)行下面更可能是表尾而不是表頭等。因此,表格結(jié)構(gòu)識(shí)別問(wèn)題可轉(zhuǎn)換為序列標(biāo)注問(wèn)題,如式3所示。
近幾年深度學(xué)習(xí)技術(shù)的快速發(fā)展使自然語(yǔ)言處理的各項(xiàng)任務(wù)取得了較大進(jìn)展,特別是近兩年出現(xiàn)的Transformer[4]結(jié)構(gòu),基于注意力機(jī)制構(gòu)建特征提取和表示模型,突破了原有LSTM模型不能很好地處理遠(yuǎn)距離依賴關(guān)系的限制,進(jìn)一步提升了針對(duì)語(yǔ)言序列的特征提取和表示能力,基于該結(jié)構(gòu)的GPT[5]、GPT2.0[6]、BERT[7]等預(yù)訓(xùn)練模型刷新了各大自然語(yǔ)言處理任務(wù)測(cè)評(píng)比賽最佳成績(jī)。
本文基于Transformer和CRF構(gòu)建一種新的深度學(xué)習(xí)序列標(biāo)注模型,如圖2所示。該結(jié)構(gòu)由row encoder、table encoder、CRF 3部分神經(jīng)網(wǎng)絡(luò)組成。row encoder網(wǎng)絡(luò)用于對(duì)表格內(nèi)容的每一行進(jìn)行編碼,目的是期望提取表格各行的語(yǔ)義信息,table encoder網(wǎng)絡(luò)則是對(duì)整個(gè)表格進(jìn)行編碼,重新得到表格各行的特征表示,以期提取表格行與行之間的關(guān)系,然后再經(jīng)過(guò)一層線性網(wǎng)絡(luò)得到CRF的發(fā)射概率,該結(jié)構(gòu)類似于BiLSTM-CRF[8],CRF層構(gòu)建了轉(zhuǎn)移概率矩陣。最后,基于table encoder層輸出的發(fā)射概率和轉(zhuǎn)移概率計(jì)算條件概率最大的輸出序列。
圖2 Transformer+CRF網(wǎng)絡(luò)結(jié)構(gòu)
Transformer-CRF網(wǎng)絡(luò)的輸入有人工特征E和表格內(nèi)容R兩部分。人工特征E來(lái)自表2的特征,表格內(nèi)容R表示了整個(gè)表格的內(nèi)容信息。為了便于提取語(yǔ)義信息,將每一行的單元格內(nèi)容拼接在一起形成長(zhǎng)字符串,并利用預(yù)先構(gòu)建的字符集將字符串映射為數(shù)值向量[9-11]。
輸入的E和R在網(wǎng)絡(luò)中傳輸?shù)倪^(guò)程可用下式表示:
Wn,b=row(Rn,m)
(4)
Cn,a+b=[Wn,b;En,a]
(5)
Tn,4=table(Cn,a+b)
(6)
An,1=CRF(Tn,4)
(7)
式(4)中的Rn,m是n×m的矩陣,表示n行且每一行的內(nèi)容長(zhǎng)度為m的表格。在row encoder層對(duì)每一行獨(dú)立進(jìn)行編碼后得到Wn,b,b為編碼長(zhǎng)度。具體row encoder層的示意圖如圖3所示。rij(j= 0,…,m) 表示了ri行的第j個(gè)字符,ri進(jìn)入網(wǎng)絡(luò)后首先經(jīng)過(guò)embeding將單數(shù)值rij映射為連續(xù)向量,然后再進(jìn)入transformer提取高階信息,最后將ri1對(duì)應(yīng)的輸出作為整個(gè)序列的編碼結(jié)果wi。Wn,b由wi組成,可表示為
(8)
圖2中的concat可用式(5)表示,其中En,a是n×a的矩陣,保存了n行a維人工特征向量;符號(hào)[A;B]表示將矩陣A和B水平方向拼接,式中Cn,a+b即是Wn,b與En,a拼接的結(jié)果。
式(6)表示了table encoder的處理過(guò)程,輸出的Tn,4是n×4的矩陣,矩陣T的列之所以為4,是因?yàn)榇A(yù)測(cè)的行標(biāo)簽有4類。式(7)表示了CRF推斷過(guò)程,輸出表格的行標(biāo)簽序列A。圖3、4表明了table encoder和CRF的結(jié)構(gòu),C進(jìn)入網(wǎng)絡(luò)后首先經(jīng)過(guò)transformer進(jìn)行表格編碼提取表格行關(guān)系特征,然后經(jīng)過(guò)linear層將每一行的編碼映射成4維向量得到CRF發(fā)射概率矩陣Tn×4,最后進(jìn)入CRF層推斷輸出標(biāo)簽序列Anx1。
圖3 Row encoder結(jié)構(gòu)
圖4 Table encoder結(jié)構(gòu)
本文以中國(guó)國(guó)家統(tǒng)計(jì)局及相關(guān)政府機(jī)構(gòu)的官方網(wǎng)站獲取的電子表格作為實(shí)驗(yàn)數(shù)據(jù)集,主要來(lái)自:中國(guó)統(tǒng)計(jì)年鑒、工業(yè)物料清單、采購(gòu)訂單、工業(yè)生產(chǎn)數(shù)據(jù)和市場(chǎng)調(diào)研表。數(shù)據(jù)集中包含10 265張表格,共計(jì)661 937行。將其按照7∶3的比例(考慮到表格劃分的一些特殊情況,實(shí)際的比例約為7.07∶2.93)分成訓(xùn)練集和測(cè)試集,其中訓(xùn)練集中包含了7 257張表格,共計(jì)466 115行;測(cè)試集中包含了3 008張表格,共計(jì)195 822行。
對(duì)于行屬性每個(gè)類別的預(yù)測(cè),可將其視為二分類問(wèn)題。根據(jù)模型的預(yù)測(cè)結(jié)果可以劃分為:真正例TPi、 假正例FPi、假負(fù)例FNi。以表頭的預(yù)測(cè)結(jié)果為例,TP0即真實(shí)類別為表頭且模型預(yù)測(cè)結(jié)果也為表頭的行的數(shù)量;FP0即真實(shí)類別為非表頭且模型預(yù)測(cè)結(jié)果為表頭的行的數(shù)量;FN0即真實(shí)類別為表頭且模型預(yù)測(cè)結(jié)果為非表頭的行的數(shù)量。以上述指標(biāo)為基礎(chǔ),本文從行和表格這2個(gè)角度分別評(píng)估模型的優(yōu)劣程度,分別構(gòu)建了行評(píng)估指標(biāo)和表格評(píng)估指標(biāo)。
3.2.1行評(píng)估指標(biāo)
行評(píng)估指標(biāo)由以下2個(gè)指標(biāo)構(gòu)成:
1) 微平均(Micro-average)
包括微平均準(zhǔn)確率mP,微平均召回率mR,微平均F1分值mF1,計(jì)算公式如下:
(9)
(10)
(11)
2) 宏平均(Macro-average)
包括宏平均準(zhǔn)確率MP,宏平均召喚率MR,宏平均F1分值MF1,計(jì)算公式如下:
(12)
(13)
(14)
3.2.2表格評(píng)估指標(biāo)
表格評(píng)估指標(biāo)為整表識(shí)別準(zhǔn)確率FTP,即模型對(duì)該表格所有行的類別全部識(shí)別正確的表格數(shù)NRT與測(cè)試集中總表格數(shù)NT之比:
(15)
1) 配置實(shí)驗(yàn)平臺(tái)
平臺(tái)主要軟硬件參數(shù):CPU為 i7-6850k,64 G內(nèi)存,顯卡GeForce GTX 1080Ti 2塊,軟件核心平臺(tái)python 3.7.2,深度學(xué)習(xí)框架為PyTorch 1.1.0,CRF 模型使用crfsuite(集成于sklearn)。
用本文2.1節(jié)的方法對(duì)表格特征進(jìn)行提取構(gòu)造CRF模型的數(shù)據(jù)集,將表格內(nèi)容和表格信息進(jìn)行拼接,構(gòu)造字典,利用字典構(gòu)造詞向量,作為Transformer-CRF的數(shù)據(jù)集。將數(shù)據(jù)集按照7∶3分為訓(xùn)練集和測(cè)試集。
3) 分別對(duì)CRF、Transformer-CRF模型進(jìn)行訓(xùn)練
模型網(wǎng)絡(luò)結(jié)構(gòu)見圖2。Transformer-CRF模型訓(xùn)練部分核心代碼如下:
model = TableNet(vocab_size_w,w_embd_size,c_embd_size,r_embd_size,
class_size,class_embd_size,row_info_size,row_info_embd_size,
bilstm_hidden_dim)
optimizer = optim.SGD(model.parameters(),lr=0.01,weight_decay=1e-4)
neg_log_likelihood_avg_min = 1000000000
1、農(nóng)田區(qū)域建造防護(hù)林網(wǎng)。農(nóng)田防護(hù)林網(wǎng)是治理風(fēng)沙的一項(xiàng)基本生態(tài)工程。低矮灌木和林木根系可以防止土壤風(fēng)蝕,喬木林冠帶可以截留隨風(fēng)飄移的顆粒,從而減少土壤及其中營(yíng)養(yǎng)物質(zhì)的損失,從根本上保證土壤營(yíng)養(yǎng)質(zhì)的保留,為農(nóng)作物的生長(zhǎng)與防護(hù)林的進(jìn)一步固化成長(zhǎng)具有重要的奠基作用。
for epoch in tqdm(range(epochs)):
neg_log_likelihood_avg = 0
for afile in tqdm(train_data):
model.zero_grad()
# Step 3.Run our forward pass.
neg_log_likelihood = model.neg_log_likelihood_wh([afile[1]],[afile[2]],[afile[3]],[afile[4]])
neg_log_likelihood_avg += neg_log_likelihood
# Step 4.Compute the loss,gradients,and update the parameters by
# calling optimizer.step()
neg_log_likelihood.backward()
optimizer.step()
print(epoch)
temp = (neg_log_likelihood_avg/len(train_data)).data[0]
print(temp)
if neg_log_likelihood_avg_min >= temp:
neg_log_likelihood_avg_min = temp
joblib.dump(model,′best_model.pkl′)
4) 對(duì)訓(xùn)練好的模型在測(cè)試集進(jìn)行測(cè)試
按照本文3.2.1、3.2.2節(jié)進(jìn)行評(píng)估計(jì)算。
使用此前篩選和構(gòu)造的特征在訓(xùn)練集上分別訓(xùn)練了傳統(tǒng)的CRF模型和Transformer-CRF模型,并使用訓(xùn)練好的模型分別在測(cè)試集上進(jìn)行了測(cè)試和驗(yàn)證。
根據(jù)各個(gè)模型在測(cè)試集上的測(cè)試結(jié)果,計(jì)算并得到了CRF、Transformer-CRF模型在測(cè)試集上的評(píng)估指標(biāo)結(jié)果,如表3、4所示。
表3 2種模型在測(cè)試集上的行評(píng)估指標(biāo)對(duì)比
表4 2種模型在測(cè)試集上的表格評(píng)估指標(biāo)對(duì)比
從實(shí)驗(yàn)結(jié)果來(lái)看,transformer-CRF模型在識(shí)別表格每一行的類別方面的性能優(yōu)于CRF模型。
本文就電子表格的結(jié)構(gòu)識(shí)別進(jìn)行了研究,使用人為構(gòu)造的表格特征模板,采用序列標(biāo)注模型對(duì)表格結(jié)構(gòu)的識(shí)別進(jìn)行建模,提出了transformer-CRF的模型結(jié)構(gòu)用于表格結(jié)構(gòu)識(shí)別。實(shí)驗(yàn)結(jié)果表明:本文方法能較好地識(shí)別表格的行類別,transformer-CRF模型結(jié)果最優(yōu)識(shí)別在本文實(shí)驗(yàn)數(shù)據(jù)集上,行識(shí)別精度高達(dá)99.988%,整表識(shí)別準(zhǔn)確率高達(dá)99.468%。
重慶理工大學(xué)學(xué)報(bào)(自然科學(xué))2019年10期