涂飛明,劉茂福?,夏 旭,張耀峰
1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;
2.智能信息處理與實時工業(yè)系統湖北省重點實驗室,湖北 武漢 430065;
3.湖北經濟學院湖北數據與分析中心,湖北武漢430205
在互聯網大數據時代,各大采購平臺網站每天都會發(fā)布大量招投標和中標公告,這些公告內容涉及方方面面,蘊含著很大的商業(yè)價值。對于企業(yè)而言,及時獲取這些招投標數據,并從中抽取所需信息,具有十分重要的意義。而網站上發(fā)布的標書文本多為非結構化文本,這給信息的抽取以及統計工作帶來難度。
信息抽取(information extraction)是從非結構化或半結構化的文本中對用戶指定類型的實體、關系以及事件進行自動標識和分類,輸出為結構化的信息[1]。由于其廣泛應用,近年來,信息抽取成為自然語言處理(natural language processing)領域研究的熱門課題。信息抽取主要包括命名實體識別(named entity recognition)、關系抽?。╮elation extraction)和事件抽?。╡vent extraction)三個子任務[2],信息抽取的關鍵是命名實體的識別。早期常用的是基于規(guī)則的抽取方法[3],但該方法存在泛化能力差的問題。
深度學習的發(fā)展對自然語言處理領域產生了巨大的影響[4],在信息抽取中使用也相當普遍。在預訓練模型發(fā)布之前,信息抽取主要模型以CNN和RNN[5]為主。Akbik等[6]通過動態(tài)存儲每個詞的所有上下文嵌入,并對這些嵌入進行池化操作以提取詞的全局上下文嵌入,該方法顯著提高了命名實體的識別效果。BERT(bidirectional encoder representations from transformers)模型的提出[7],使得多項自然語言處理任務取得了更好的效果,預訓練模型被越來越多的學者使用。Xue等[8]提出針對聯合實體和關系提取任務的集中注意力模型,該模型通過動態(tài)范圍注意力機制將BERT模型集成到聯合學習中,提高了共享參數層的特征表示能力。Qiu等[9]使用預訓練模型,并以問答的方式,實現臨床醫(yī)療文本的結構化。
近年,有學者將信息抽取任務轉化為問答(question answering)任務來處理,取得較好效果。機器閱讀理解(machine reading comprehension)是一類基于文本的問答任務,Levy等[10]將關系映射為問題,把關系抽取任務轉為簡單的閱讀理解任務。McCann等[11]將10個不同的自然語言處理任務轉化為問答任務,并將10個不同的任務數據集轉化為問答數據集。Li等[12]利用閱讀理解模型進行多輪對話,從而實現對文本實體-關系信息的抽取。Qiu等[13]提出QA 4IE框架,利用問答的靈活性,在句子間生成更加豐富的關系三元組。Li等[14]針對命名實體識別任務,提出了一個統一的閱讀理解框架,能夠同時識別出文本中的非嵌套實體和嵌套實體。
機器閱讀理解任務定義為給定一篇文章以及基于文章的問題,讓機器給出問題的答案。隨著斯坦福大學發(fā)布SQuAD(Stanford Question Answering Dataset)閱讀理解數據集[15],閱讀理解任務獲得了大量的關注。Wang等[16]提出了在SQuAD數據集上的第一個端到端的閱讀理解模型,該模型先對問題和原文分別進行編碼,然后利用Match-LSTM將問題和原文融合,最后使用Pointer-Network從原文中選取答案片段。Seo等[17]在注意力機制的基礎上進行改進,提出了BiDAF(bi-directional attention flow)模型,該模型利用雙向注意力流,得到一個問題感知的上下文表征,獲得更深層次的上下文語義信息。由于之前的SQuAD數據集全為有答案的情況,斯坦福大學又發(fā)布了SQuAD 2.0數據集[18],SQuAD 2.0數據集存在原文中沒有材料支持,無法作答的情況,其語料更加符合現實應用場景。受人類閱讀習慣的啟發(fā),Zhang等[19]提出一種回顧式閱讀器(retrospective reader),集成泛讀和答案驗證的模式,在SQuAD 2.0中取得佳績。
本文提出一種基于BERT的閱讀理解信息抽取方法,用于對標書文本中的預算金額、甲方名稱、甲方聯系方式、代理機構名稱和代理機構聯系方式5項信息進行抽取。抽取的信息多為單位名、人名以及數字(包括金額和電話號碼)這樣的實體,若將其視為命名實體識別任務,則有以下兩個弊端:1)在標書文本中,公司名多為嵌套命名實體,而傳統命名實體識別模型大多是針對非嵌套命名實體識別任務的[20],抽取效果欠佳;2)部分要抽取的信息并不完全是實體,而是包含了其他符號的字符串,如金額“¥35,000.00元”、電話號碼“0755-82****88轉3454”(為保護隱私,電話號碼部分數字已掩蓋,下同)以及公司名“內蒙古電力(集團)有限責任公司”等。
本文將標書文本的信息抽取任務看作閱讀理解任務,而非命名實體識別任務。對于給定的標書文檔,對其提問,如“采購單位”,然后讓模型預測出答案,得到的結果即要抽取的甲方名稱,其他四項需要抽取的項目以類似的方式進行抽取?;陂喿x理解的方法可以同時適用文本中非嵌套實體和嵌套實體的抽取,相比于傳統的序列標注方法,基于閱讀理解的方法更簡單直觀,可遷移性也強。另外,基于閱讀理解的方法能夠讓問題編碼一些先驗語義知識,能夠更容易區(qū)分具有相似標簽的分類,如甲方名稱和代理機構名稱。
從中國政府采購網(http://www.ccgp.gov.cn/)獲取標書網頁文本1 450份,然后清洗數據,去除JavaScript、CSS代碼以及注釋文本等代碼文本,去除HTML標簽,替換部分符號,得到純凈、規(guī)范的中國政府采購網發(fā)布的標書正文。根據我們對中國政府采購網標書正文的了解,構建出規(guī)則庫,使用規(guī)則對其進行抽取,再進行人工檢驗,更正規(guī)則抽取錯誤的例子,給出預算金額、甲方名稱、甲方聯系方式、代理機構名稱以及代理機構聯系方式5個字段的內容。
將以上5個字段內容轉換成SQuAD數據格式,對標書文本提出5個問題,并給出答案文本以及答案開始位置,得到問題-答案對共7 250份。SQuAD格式的數據如例1。
例1
對標書文本抽取上述5項信息,整體架構如圖1所示。首先輸入原始標書網頁文本,對其進行預處理操作,得到標書純文本,基于文本內容,匹配問題關鍵詞列表,生成問題,把問題與文本拼接,然后使用BERT閱讀理解模型進行預測,得到問題的答案。
圖1 閱讀理解式信息抽取方法整體架構Fig.1 Overall structure of information extraction method via reading comprehension
對于每個要抽取的字段,都會為其設置一個問題,然后讓閱讀理解模型根據問題給出預測答案。為生成閱讀理解數據集,我們構建了規(guī)則庫用于信息的初步抽取,統計到標書文本中常見的信息關鍵詞,生成問題關鍵詞列表,表1為部分問題關鍵詞列表。我們?yōu)槊總€字段設置一個默認問題,然后在文本中查找這些問題關鍵詞,匹配成功則生成對應問題;否則,使用默認的問題。本文生成的問題均為偽問題。比如,例2中標書文本包含“招標單位”關鍵詞,抽取甲方名稱時,就生成問題:“招標單位”。
表1 部分問題關鍵詞列表Table 1 The partial of question keywords list
例2
段落:…項目概況如下:1.項目名稱:沈陽市紅十字會醫(yī)院棋盤山分院污水處理站運維服務項目2.項目編號:LNWX21046-C 3.招標單位:沈陽市紅十字會醫(yī)院…
問題:招標單位
答案:沈陽市紅十字會醫(yī)院
對于閱讀理解模型而言,問題包含了重要的先驗語義信息,能夠幫助模型確定答案的位置。所以,合適的問題對于答案的正確預測有著重要作用。
在得到問題和文本后,使用BERT模型進行預測。閱讀理解的任務是,給定問題(question)和包含答案的段落(paragraph),模型需要預測答案文本的起始位置和結束位置,從而給出答案文本,這實際上是一種抽取式問答。本文使用預訓練好的BERT中文語言模型[21],針對閱讀理解任務進行微調。
如圖2所示,在閱讀理解任務中,BERT將問題和段落組成一個序列,序列的第一個字符為一個特殊字符[CLS],并用一個特殊字符[SEP]將問題和段落區(qū)分開。E為輸入序列,特殊字符[CLS]的最終隱藏向量表示為C∈RH,第i個輸入詞的最終隱藏向量表示為Ti∈RH,其中H為隱藏層的維度。
圖2 BERT閱讀理解模型框架圖Fig.2 BERT-based reading comprehension model framework
微調過程中,引入向量Vstart∈RH和Vend∈RH,Vstart表示答案起始位置判斷向量,Vend表示答案結束位置判斷向量。表示第i個詞是答案片段開始的概率,通過Ti和Vstart點積,再接上段落中所有詞的softmax計算得到
從位置i到位置j的候選答案片段分數表示為Vstart·Ti+Vend·Tj,選取分數最高的片段作為預測結果,同時保證i≤j。
本文使用兩個評價指標:EM(exact match)和F1值,計算評價指標時忽略標點符號。
EM:對于每個問題-答案對,若模型預測結果與標準答案完全匹配,單個樣例EM為1,否則為0,最后取全部測試集數據的均值。EM用于計算預測結果與正確答案是否完全匹配,反映了精準匹配度。
F1:首先得到預測結果與標準答案的最長公共子串(longest common substring,LCS),根據LCS的長度和標準答案的長度計算召回率(R),根據LCS的長度和預測結果的長度計算精確率(P),再由R和P計算F1,如公式(3),然后同樣取全部數據均值。F1用于計算預測結果與標準答案之間字符級別的匹配程度,反映了模糊匹配度。
本文進行了基于BERT的命名實體識別抽取任務的實驗,將數據集格式轉換為適用于命名實體識別任務的格式,設置預算金額、甲方名稱、甲方聯系方式、代理機構名稱以及代理機構聯系方式5類命名實體,實驗目標為從文本中抽取這5類命名實體,并同樣使用EM和F1評價指標,用于對比閱讀理解的抽取方法。為了比較不同閱讀理解模型的抽取效果,本文進行了一系列閱讀理解模型對比實驗,選用Match-LSTM、BiDAF和Retro-Reader模型進行對比實驗,實驗結果如表2,其中“BERT”為本文模型。
表2 實驗結果Table 2 Exper imental results %
因為金額的特征比較明顯,多為數字加“元”或“萬元”,適合Match-LSTM模型識別抽取,所以在“預算金額”上Match-LSTM表現較好。在其他字段BERT和Retro-Reader模型的抽取效果都比其他模型好。在“甲方聯系方式”和“代理機構聯系方式”兩個字段上BERT抽取效果要優(yōu)于Retro-Reader。Retro-Reader模型預測集成了粗讀和精讀兩個階段,粗讀階段判斷問題是否可以回答;精讀階段尋找答案片段,驗證問題是否可以回答,給出最終的判斷。Retro-Reader適合處理包含無法回答問題的閱讀理解任務,而本文的語料均包含抽取的信息,因此更適合BERT。另外,BERT的解碼階段直接采用線性網絡層連接,設計上相比Retro-Reader更簡單,訓練時資源耗費更少。
例3
context:…采購代理機構信息(如有)名 稱:遼源市宏基建設工程招標有限公司地址:遼源市隆基華典55號樓門市 聯系方式:0437-31****3…
question:代理機構聯系方式
answer:0437-31****3
NER-BERT:0437
Match-LSTM:-
BiDAF:-
BERT:0437-31****3
Retro-Reader:0437-31****3
如例3,對于代理機構聯系方式的抽取,命名實體識別任務的抽取結果為“0437”,丟失了部分內容。閱讀理解任務的Match-LSTM和BiDAF預測答案為“-”,而BERT以及Retro-Reader預測答案為“0437-31****3”,與標準答案一致。標準答案的位置相對文中“采購代理機構信息”位置較遠,預訓練模型更能學習到上下文語義信息,在閱讀理解任務上更具有優(yōu)勢。
例4
context:…項目名稱:成安縣經濟開發(fā)區(qū)污水處理廠設施惡臭氣體設備采購項目…采購人信息名稱:成安縣環(huán)潔公司…
question:采購人
answer:成安縣環(huán)潔公司
NER-BERT:成安縣環(huán)潔公司
Match-LSTM:成安縣經濟開發(fā)區(qū)
BiDAF:成安縣經濟開發(fā)區(qū)
BERT:成安縣環(huán)潔公司
Retro-Reader:成安縣環(huán)潔公司
如例4,對于甲方名稱的抽取,標準答案是“成安縣環(huán)潔公司”,命名實體識別任務的抽取結果為“成安縣環(huán)潔公司”,Match-LSTM和BiDAF錯誤地從標書文本的項目名稱中選取“成安縣經濟開發(fā)區(qū)”片段作為答案,BERT和Retro-Reader則是從文本中選取位置與“采購人信息名稱:”相近的“成安縣環(huán)潔公司”作為答案,使用預訓練模型,更能準確定位到答案位置。
本文提出了一種基于BERT的標書文本閱讀理解式信息抽取方法,該方法將信息抽取任務轉換成閱讀理解任務,對于給定標書文本,生成問題對模型提問,然后模型從文本中抽取片段給出預測結果。使用BERT預訓練模型能夠增強語言表征能力,提升閱讀理解抽取效果。實驗結果顯示:對于標書文本信息抽取,閱讀理解抽取方法相比傳統的命名實體識別抽取方法具有更好的效果。在今后的工作中,將完善數據集的構建,嘗試用更多的方法實現文本信息抽取任務。