何賢敏 李茂西 何彥青
1(江西師范大學計算機信息工程學院 南昌 330022) 2(中國科學技術信息研究所 北京 100038)
分類法是一種具有層級結構的分類體系,根據內容和屬性不同進行組織.雖然不同分類法的層級結構和編制原則差異很大,但其編制的基本原理和目的是相同的,都是為了提高檢索效率而編制的一系列表達概念及概念關系的標識.因此,不同分類法在概念表達上存在一定的相似性,所以可以建立它們之間的映射關系[1].
專利信息作為一種特殊的科技文獻,通常使用國際專利分類法(international patent classification, IPC)來對其進行組織和管理,為了標識專利所屬的領域和范疇,每份專利文件會標明適當的IPC分類號.如表1第1行給出了IPC中“輸入機構”有關的專利信息分類號及其類目文字描述,其中,符號“|”的個數表示分類法的類目層級數.而在中文學術期刊中,普遍使用中國圖書館分類法(Chinese library classification, CLC)來標識文獻,如表1第2行給出了CLC中“輸入設備”有關的期刊分類號及其類目文字描述.

Table 1 Examples of Identification of Patent and Journal Related to “Input Mechanisms (Devices)”
建立IPC與CLC之間的類目映射對實現專利信息與期刊文獻相互關聯以及它們組織體系間交叉瀏覽和檢索有著重要的意義,因此,許多學者對此展開了研究.基于規則的方法[2-6]大都是對IPC和CLC類目描述文本分別提取關鍵詞集或特征詞集,用于替代原始類目的含義,通過計算詞集之間的相似性間接得出類目之間的相似度,從而建立映射關系.基于傳統機器學習的方法[7]將類目映射轉化為分類問題,利用分類算法建立2部分類法之間的映射關系.但是它們都忽略了IPC和CLC類目描述文本的語義信息,導致映射的準確率不高.
針對這個問題,本文提出基于BERT預訓練上下文語言模型的孿生網絡將IPC類目描述文本和CLC類目描述文本完整地輸入到映射模型中,獲取IPC和CLC類目描述文本的句子向量,通過計算句子向量的余弦相似度,建立起2部分類法之間的類目映射關系.為了定量地驗證所提模型的映射性能,人工標注了1 000條IPC類目和CLC類目之間的映射語料庫,在該語料庫上使用5折交叉驗證,實驗結果表明本文提出的基于BERT模型的孿生網絡平均準確率可達94%,顯著優于其他對比模型.概括來說,本文的貢獻主要有3個方面:
1) 提出基于BERT預訓練上下文語言模型的孿生網絡對IPC和CLC進行類目映射,提高了IPC與CLC自動映射的準確率;
2) 構建了1000條高質量的IPC類目與CLC類目之間的映射語料庫,該語料庫覆蓋了IPC的8大類別,能更準確地訓練和測試模型的泛化能力;
3) 公開發布了相關代碼、模型和人工標注的語料庫(1)GitHub開源地址:https://github.com/i-wanna-to/IPC2CLC/,供其他研究人員免費使用.
分類法之間的類目映射方法包括人工標注和自動映射,人工標注盡管準確率得到一定的保障,但人力成本高,主觀性強,不利于構建2部分類法中大規模類目之間的映射關系.隨著計算機技術的發展,自動映射方法取得了很大的進步,它們大致可以分為4種:基于同現的方法[3]、基于類目相似度的方法[4-5]、基于交叉檢索的方法[6]和基于傳統機器學習的方法[7].
當一批文獻或圖書可以同時利用2部分類法的分類號來進行標識,說明標識同一文獻或圖書的2個分類號之間具有一定的聯系.基于同現的方法利用這種聯系建立2部分類法之間的映射[3].基于類目相似度的方法將分類法的每條類目描述文本分解成一組具有代表性的詞匯集,如類名詞、注釋詞和上下位類名詞等,通過計算詞匯集間的相似度,間接得到類目的相似度[4-5].基于交叉檢索的方法利用一種分類法在一個已被另一種分類法標識的文檔集中進行檢索,通過對檢索結果進行分析,進而構建2個分類法之間的映射[6].基于傳統機器學習的方法從2種分類法的類目描述文本中挑選出特征關鍵詞集,將一個分類法的特征關鍵詞集作為模型的訓練集,訓練得到一個分類器,用該分類器對另一個分類法的特征關鍵詞集進行分類,將預測為同一類的類目作為映射目標,從而實現分類法的映射[7].
有學者將人工標注和自動映射相結合進行類目映射.陳瑞等人[8]提出將眾包的思想應用在分類法類目映射上,眾包用戶把自動映射結果作為類目之間的初步映射,在其基礎上進行人工重新標注.該方法的映射效率和準確率隨眾包用戶標注差異而不同,映射可控性較差.
近年來,隨著深度學習的發展,許多神經網絡模型,如TextCNN[9],LSTM[10]和Transformer[11]等被成功地應用于文本序列建模任務中.同時,蘊含豐富句法、語義信息的預訓練上下文語言模型,如ELMo[12],BERT[13],GPT[14]等在自然語言處理領域引起了越來越多的關注,刷新了多個語言理解任務的最優性能.它們在海量單語文本上預訓練,獲得通用的語言模識(modeledge)[15],然后被應用到下游任務中并根據任務的特點進行微調.這種預訓練加微調的方式不僅極大地提升了下游任務的性能,而且大幅度降低了下游任務所需標注語料的規模.因此本文提出基于BERT預訓練上下文語言模型的孿生網絡以構建IPC和CLC的類目映射模型,結合BERT模型和孿生網絡兩者的優勢,提升映射的準確率.
BERT[13]是一種深度雙向編碼表征的預訓練上下文語言模型.它的網絡架構基于Transformer編碼器結構,將原始Transformer編碼器層數加深,并在“遮擋語言模型”和“下一句預測”2個訓練任務上同時訓練網絡的參數,得到一個表達能力很強的預訓練上下文語言模型.
BERT預訓練上下文語言模型的網絡架構如圖1所示,其結構主要分為3層,分別為詞向量編碼層、多頭自注意力機制(multi-head self-attention)和位置全連接前饋網絡(position-wise feed-forward networks),圖1中簡化了位于多頭自注意力機制和位置全連接前饋網絡之后的歸一化層,左側的符號N表示Transformer編碼器層堆疊的個數.

Fig. 1 The BERT model architecture圖1 BERT模型架構
與Transformer編碼器不同,BERT的詞向量編碼層由3個子層組成.其中位置嵌入(position embeddings)的參數由模型在訓練過程中自動學習得到,而不同于Transformer編碼器中通過規則進行設置;分段嵌入(segment embeddings)是為了區分輸入序列中的不同句子而設置,如果將2條句子拼接輸入BERT中,那么第1條句子的分段嵌入為0,第2條為1;標記嵌入(token embeddings)是將句子中的各個詞(token)轉化為特定維度的向量,這與Transformer編碼器相同;最終這3層嵌入會逐元素相加,得到詞向量編碼層的輸出.句子S={w1,w2,…,wn}的詞向量編碼層輸出經過N個多頭自注意力機制和位置全連接前饋網絡的組合層,得到句子中每個詞語的深層抽象表示O=(o1,o2,…,on).
孿生網絡(siamese network)最早應用于數字圖像的手寫體識別,用于驗證支票上的簽名是否與銀行預留的簽名一致[16],由于其性能優異,隨后在計算機視覺領域得到廣泛應用,包括人臉識別[17]和目標跟蹤[18].近年來,許多學者將孿生網絡應用于自然語言處理任務中,Neculoiu等人[19]和Mueller等人[20]提出基于LSTM結構的孿生網絡模型用于文本語義相似度計算;葉文豪等人[21]提出基于雙向門控循環單元(gate recurrent unit, GRU)以及Transformer編碼器的孿生網絡模型,用于檢測基金與受資助論文的相關性.
孿生網絡的基本模型架構如圖2所示,從圖2可以看出,模型中左右相同的子網絡共享參數權重,也由此得名“孿生網絡”.輸入的2個樣本(X1,X2)通過這個相同的子網絡分別得到其針對特定任務的深層抽象表示(R(X1),R(X2)),通過在抽象表示空間中計算2個樣本的距離Dw〈R(X1),R(X2)〉 即可獲取樣本的相似度Sw.

Fig. 2 The siamese network model architecture圖2 孿生網絡模型架構

Fig. 3 Siamese network architecture based on BERT pre-training contextual language model圖3 基于BERT預訓練上下文語言模型的孿生網絡架構
為了建立IPC類目和CLC類目之間的映射,我們提出利用基于BERT模型的孿生網絡計算IPC類目描述文本和CLC類目描述文本之間的相似度,實現IPC分類號和CLC分類號的匹配.該方法的出發點是通過相同的BERT網絡模型對IPC類目描述文本和CLC類目描述文本進行深層抽象,獲取它們的通用語義表示,在語義表示空間中對IPC類目和CLC類目進行映射.這不僅可以利用BERT預訓練模型實現語義映射,減少模型參數在訓練中對有標簽數據的需求;而且可以利用孿生網絡有效刻畫2個待匹配類目之間的差異,實現精準匹配.
基于BERT模型的孿生網絡總體架構如圖3所示,給定IPC類目描述文本X={x1,x2,…,xn}和CLC類目描述文本Y={y1,y2,…,ym},通過BERT預訓練模型可得IPC類目描述文本的抽象表示Ou和CLC類目描述文本的抽象表示Ov:
Ou=(u1,u2,…,un)=
BERT({x1,x2,…,xn}),
(1)
Ov=(v1,v2,…,vm)=
BERT({y1,y2,…,ym}),
(2)
其中,Ou∈n×d,Ov∈m×d,符號n,m分別表示IPC和CLC類目描述文本的長度,ui和vj分別表示IPC類目描述文本中第i個詞xi的抽象表示和CLC類目描述文本中第j個詞yj的抽象表示,d代表句子語義表示向量的維度,設置d=768.
為了直觀地說明IPC類目描述文本X和CLC類目描述文本Y的具體組成.例如當前IPC和CLC都為與“輸入機構(設備)”有關的專利信息和期刊文獻,那么X和Y分別為表1中IPC類目描述文本和CLC類目描述文本(不包含符號“|”,類目層級之間用單個分號連接形成一條句子),之后將X和Y分別利用開源工具包Transformers[22]的分詞器Bert-Tokenizer進行分詞,分詞后輸入到基于BERT模型的孿生網絡中.
由于IPC類目描述文本和CLC類目描述文本經BERT模型后語義表示Ou,Ov均為詞語級別,其長度不一定相同(m≠n),很難直接計算這2個不同維度張量的距離.為了進一步對類目描述文本的詞語級別語義表示進行抽象,我們初步對2種池化策略進行實驗:CLS池化和全局平均池化,最終選擇了全局平均池化提取句子級別的語義表示U和V:
U=GlobalAveragePooling((u1,u2,…,un)),
(3)
V=GlobalAveragePooling((v1,v2,…,vm)),
(4)
其中,U∈1×d為IPC類目描述文本句子語義表示,V∈1×d為CLC類目描述文本句子語義表示,GlobalAveragePooling表示在序列長度維度上對輸入向量進行全局平均池化.
利用余弦相似度計算U和V的距離:
(5)
其中,余弦相似度Dcos∈[-1,1].
在IPC和CLC映射階段將U和V的余弦相似度作為IPC類目描述文本和CLC類目描述文本的相似度得分Sw,之后將距離最近的2個類目設為相互映射.需要說明的是由于歐氏距離的取值范圍為[0,+∞),數值分散,不易規范化,因此類目映射時選擇余弦相似度來衡量U和V之間的距離.
在模型訓練時,對比損失函數(contrastive loss function)[23]被用來計算2個類目描述文本之間的匹配損失,設計目的在于使匹配的IPC類目描述文本和CLC類目描述文本在它們語義空間中距離最小,而不匹配的類目描述文本之間距離最大.計算公式為
(1-T)max(m-DEuc,0)2,
(6)
其中,θ為模型參數,N為樣本個數,T為樣本的標簽,m為閾值,初步實驗經驗設置為0.5,DEuc為U和V這2個句子向量之間的歐氏距離,其計算公式為
(7)
當樣本標簽T=1時,表示IPC類目描述文本和CLC類目描述文本為相互映射(正例),對比損失函數使模型調整參數以最小化U和V之間的距離;當樣本標簽T=0時,表示IPC類目描述文本和CLC類目描述文本不相互映射(負例),此時分2種情況:當U和V之間的距離大于閾值m,損失為零則不做優化;當U和V之間的距離小于閾值m,則對比損失函數使模型調整參數以增大U和V之間的距離到閾值m.
由于前人工作均只在2部分類法的部分類目上進行實驗測試,語料類目較為單一,很難充分驗證模型的泛化性能.而IPC分類法共有8個類別(部),CLC分類法共有22個類別,每個類別分屬不同的領域,為了構建覆蓋面全的映射語料庫,本文以IPC類目為基準,聘請8位專家對IPC和CLC類目映射進行人工標注,再由一位專家統一對標注后的語料進行校正和核驗.總共構建了包含1 000條完全映射的類目對用于模型測試.
圖4統計了IPC的8個類別包含的類目數量情況.可以看出,IPC不同類別的類目數量有較大差異,如果在IPC的8個類別中使用簡單分層采樣抽取類目進行人工映射,容易導致各個類別的采樣類目數量不平衡.為了保留各個類別之間的類目數量差異,提高使用其作為訓練集訓練后模型的泛化能力,借鑒跨語種預訓練模型XLM[24]中對不同語言進行隨機多項式采樣的方法計算IPC的8個類別的類目采樣數量,多項式采樣公式為
(8)
其中,參數α用來控制采樣比例,參考XLM取α=0.5,M為IPC類別的個數,ni,pi為第i個IPC類別包含的類目數量和比例,qi即為第i個IPC類別的采樣比例.

Fig. 4 Category quantity statistics of IPC圖4 IPC的類目數量統計
經過多項式采樣IPC各個類別后最終得到的類目數量如表2所示.從表2可以看出,如果使用簡單的分層采樣,IPC各個類別的采樣數量極不平衡,這不利于后續模型的充分訓練.而使用多項式采樣后,可以緩解這種不平衡的情況.

Table 2 Number of Samples in Each Category of IPC
表3展示了一對IPC和CLC數據樣例.其中,IPC和CLC都具有嚴格的層級結構,IPC層級結構分別為部、大類、小類,大組和小組,并且各小組的等級由小組類目名稱前的圓點數決定,r個·表示r點小組,最多有六點小組.本文映射語料庫建立在IPC的大組到六點小組之間,由多項式采樣方法從IPC的大組到六點小組中隨機采樣進行人工標注,CLC的類目級別由IPC人工標注時決定.此外,在表3中IPC“大組”和“二點小組”行中括號內加粗的句子在整個IPC分類法中重復出現.因此,人工標注時會進行數據清洗,剔除類似這類重復出現的句子,避免實驗數據中包含過多的噪音.為詳細說明人工標注語料庫的數據組成,例如,當人工標注表3中與IPC分類號“G06C7/02”相互映射的CLC分類號,專家根據IPC和CLC類目名稱定位到映射目標CLC分類號“TP334.2”,之后專家將IPC分類號“G06C7/02”和CLC分類號“TP334.2”所在類目層級及所有上一級類目層級的類目名稱經過數據清洗后利用分號連接成一條句子,最終得到IPC類目描述文本“物理;計算;推算;計數;數字計算機;輸入機構;鍵盤;”和CLC類目描述文本“工業技術;自動化技術、計算機技術;計算技術、計算機技術;電子數字計算機;外部設備;輸入設備;”,即構造得到一條相互映射的語料.需要說明的是,人工標注的語料庫中包含一對一和一對多的映射關系.

Table 3 Examples of IPC and CLC Hierarchy Structure
為了測試基于BERT模型的孿生網絡在IPC和CLC類目映射中的性能,本文采用5折交叉驗證,將1 000條人工標注的語料按照4∶1劃分成訓練集和測試集,然后將5次結果取平均作為最終的模型性能.此外,訓練集中的負例由排除正例后隨機產生,正負例的比例為1∶1.
實驗使用預訓練好的BERT上下文語言模型“bert-base-chinese”[22],它由12層Transformer編碼器堆疊而成,多頭自注意力個數為12,參數數量為1.03億,在中文維基百科語料上訓練獲得.在基于BERT模型的孿生網絡訓練時超參數設置為:批處理大小(batch size)設為64,學習率(learning rate)設為2E-5,優化器使用AdamW,優化器參數設為默認參數,為了減緩模型過擬合,dropout設為0.1,權重衰減(weight decay)設為0.01,使用15%的訓練數據作為預熱(warm up),訓練至模型收斂為止.
準確率(accuracy, AVE)、方差(variance, VAR)和Top-k準確率(Top-kaccuracy)被用作為模型的評價指標.將基于BERT模型的孿生網絡方法(Sia-BERT)與其他8個相關模型進行實驗對比:
1) Category-Sim.本文復現的基于匹配計數的類目相似度映射模型.
2) Sia-Multi.Reimers等人[25]開源的最佳多語言孿生網絡模型,該模型命名為“distiluse-base-multilingual-cased-v2”,支持中文處理.
3) TextCNN.基于Kim提出的TextCNN模型[9],將其實現為TextCNN孿生網絡,其中,卷積核大小為(1,3,5),每個尺寸的卷積核個數為256.
4) Bi-TextCNN.基于雙線性池化(bilinear pooling)[26]的TextCNN孿生網絡模型,卷積核大小為(3,4,5),每個尺寸的卷積核個數為128.
5) Bi-LSTM.基于雙向LSTM[27]實現的孿生網絡模型,Bi-LSTM的層數為1,隱藏層神經元個數為768.
6) T-Encoder.基于Transformer[11]編碼器實現的孿生網絡模型,層數為2,多頭自注意力個數為8.
7) Sia-Multi-Zero.為了驗證孿生網絡模型在零樣本遷移學習方面的映射性能,在Sia-Multi的基礎上不對模型參數進行微調訓練,直接利用模型對1 000條實驗數據進行映射.
8) Sia-BERT-Zero.與Sia-Multi-Zero設置和目的相同,在Sia-BERT的基礎上不對模型進行訓練,直接進行映射.
不同模型的IPC和CLC類目映射準確率和5折交叉驗證準確率的方差如表4所示,由于Category-Sim,Sia-Multi-Zero和Sia-BERT-Zero沒有進行訓練,因此表中沒有匯報這三者的方差.首先,本文提出的Sia-BERT方法取得了最高平均準確率94.0%,顯著優于其他在訓練集上優化的深度學習模型Bi-TextCNN,Sia-Multi,TextCNN,Bi-LSTM和T-Encoder.這說明本文提出的方法能極大地提高IPC和CLC類目映射的準確率.其次,Sia-BERT方法的方差值也較小,說明Sia-BERT模型性能十分穩定.再之,在訓練集上進行優化的深度學習模型其平均準確率超過80.0%,大幅度優于不使用訓練數據的深度學習方法Sia-Multi-Zero和Sia-BERT- Zero,它們平均準確率僅為55.0%左右,這間接說明我們人工標注的語料質量較高,在其上訓練的相關模型性能得到極大的提高.

Table 4 Accuracy and Variance of Classification Mapping of Different Models
同為基于預訓練的語言模型,Sia-BERT比Sia-Multi性能高出5.2個百分點,這可能是因為多語言模型在訓練時需要輸入多種語言,各種語言之間的差異導致訓練時無法在每種語言上都達到最佳表現.對比Bi-TextCNN模型和TextCNN模型,Text-CNN的平均準確率比Bi-TextCNN高出11.2個百分點,這可能是因為TextCNN編碼的句子向量質量已經足夠好,如果再進行雙線性池化操作導致學習到的句子語義被打亂,致使性能下降.而對比TextCNN,Bi-LSTM和T-Encoder三個模型,發現三者的性能比較接近,但是由于Transformer網絡本身的優勢,其更適合捕捉句子的深層語義信息,因此T-Encoder在這三者中性能表現最好,其在類別C,E和G上都取得了最高的準確率,分別為94.41%,98.72%和95.97%.
為了進一步展示模型的性能,圖5統計了匹配得分前3的類目映射準確率.Sia-BERT模型的Top-3準確率達到99.2%,顯著高于其他相關模型的Top-3準確率,且顯著優于其本身的Top-1準確率,這說明Sia-BERT模型性能還有很大的提升空間.
表5給出了Sia-BERT模型一個IPC類目“A01C 21/00”的CLC映射Top-3實例.從實例可以看出,Sia-BERT模型可以很好地區分出與IPC類目的描述文本含義比較接近的3個CLC類目“S147.35”“S776.24+1”和“TQ440.2+2”,雖然這3個CLC類目描述文本都與肥料相關,但是與IPC類目正確匹配的CLC類目“S147.35”相似度為0.92(最高為1),且3個CLC類目根據與IPC類目的相似度不同展現出明顯的數值差異.

Fig. 5 Mapping accuracy of Top-3 of each model圖5 各模型Top-3的映射準確率

Table 5 Mapping Example of Sia-BERT Model
損失函數引導網絡參數優化的方向,是孿生網絡訓練中最重要的一環.為了選擇最合適的損失函數,實驗對比了孿生網絡中3個常用的損失函數,分別為三元組損失(triplet loss)、多重否定排序損失(multiple negatives ranking loss)和對比損失(contrastive loss).表6給出了使用不同損失函數時模型的性能,其中對比損失函數的平均準確率最高,達到94.0%,多重否定排序損失函數的性能與對比損失函數相當,三元組損失函數的性能最差,僅為90.7%.雖然多重否定排序損失函數的性能也較好,但是該損失函數要求任務中數據為一對一映射關系,而對比損失函數沒有強制的映射關系要求,為減少模型對訓練數據的限制,本文選取對比損失函數作為模型優化的目標.

Table 6 Performance of Siamese Network Based on BERT Model Using Different Loss Functions
結合BERT模型在語義抽象和孿生網絡在差異表現上的優勢,本文提出將基于BERT模型的孿生網絡應用到IPC分類法和CLC分類法的類目映射任務上,實現2種類目的自動匹配.在高質量的人工標注語料上進行5折交叉驗證實驗,結果表明所提方法顯著優于對比的其他深度學習方法.實驗分析揭示基于BERT模型的孿生網絡能較好地刻畫類目文本的相似度,并在相似文本之間體現出適當的差異性.未來的工作包括借助現有的文本相似度語料訓練模型,利用遷移學習將模型應用到科技文獻類目匹配任務中,以克服人工標注類目匹配語料耗時耗力的不足.