一文詳解BERT模型實現NER命名實體抽取-王文廣

達觀資料DataGrand發表於2022-11-24

一文詳解BERT模型實現NER命名實體抽取-王文廣

在自然語言處理和知識圖譜中,實體抽取、NER是一個基本任務,也是產業化應用NLP 和知識圖譜的關鍵技術之一。BERT是一個大規模預訓練模型,它透過精心設計的掩碼語言模型(Masked Language Model,MLM)來模擬人類對語言的認知,並對數十億個詞所組成的語料進行預訓練而形成強大的基礎語義,形成了效果卓絕的模型。透過 BERT來進行實體抽取、NER的方法是當前在NLP和知識圖譜的產業化應用中最常用的方法,是效果與成本權衡下的最佳選擇。本文詳細講解使用BERT來進行實體抽取,看完本文就會用當前工業界最佳的模型了。


什麼是實體抽取?

實體是一個常見的名詞,《知識圖譜:認知智慧理論與實戰》一書將其定義為:
實體(Entity):是指一種獨立的、擁有清晰特徵的、能夠區別於其他事物的事物。在資訊抽取、自然語言處理和知識圖譜等領域,用來描述這些事物的資訊即實體。實體可以是抽象的或者具體的。
在實體抽取中,實體也成為命名實體(Named Entity),是指在實體之上會將其分門別類,用實體型別來框定不同的實體。圖1是一些常見的“實體”的例子,比如“城市”型別的實體“上海”,“ 公司”型別的實體“達觀資料”等。


一文詳解BERT模型實現NER命名實體抽取-王文廣

圖1 實體示例


實體抽取(Entity Extraction,EE)的目標就是識別一段文字中所包含的實體,在其他語境中,也被稱之為“實體識別(Entity Recognition,ER)”、“命名實體識別(Named Entity Recognition,NER)”,這些不同的名詞在大多數情況下所指代的意思是一樣的。


舉例來說,有一段文字:

達觀資料 同濟大學 聯合共建的“ 知識圖譜與語義計算聯合實驗室 ”正式揭牌成立

識別出其中的藍色部分,並標記為“機構”型別的實體,就是實體抽取。實體抽取的過程通常可以分為是兩個階段:

  1. 識別出所有表示實體的詞彙

  2. 將這些詞彙分類到不同實體型別中



在傳統的命名實體識別任務中,通常有人物、機構、地點等。而在知識圖譜中,實體型別可以有數十種,甚至數百種。對於知識圖譜來說,將各種文字中的實體抽取出來是最基本的任務,有許多方法都致力於解決這個問題。


一文詳解BERT模型實現NER命名實體抽取-王文廣圖2 實體抽取案例


眾所周知,實體抽取的複雜程度十分之高,這不僅僅有上圖中的這樣複雜的文件的原因,語言本身的理解也存在重重困難,有些場景下即使是人類也會出現不解之處。比如語言中隱含著專業的背景知識,隱形或顯性的上下文語境,同樣的文字表達著完全不同的概念,而相同的概念又有多變的語言表達方法等等。這些綜合的原因使得理解語言成為了人工智慧皇 冠上的明珠,而從文字中抽取實體則不可避免地要理解語言,實體抽取的效果則依賴於對語言理解的程度。


一文詳解BERT模型實現NER命名實體抽取-王文廣圖3 語言理解困難重重


歷史上,用來進行實體抽取的方法包括基於規則的方法、機器學習方法、深度學習方法和弱監督學習方法等幾大類,每類方法中都有很多種不同的演算法,具體的演算法內容可以參考《知識圖譜:認知智慧理論與實戰》第三章《實體抽取》(P78~136)。


BERT介紹 

BERT 是英文“Bidirectional Encoder Representations from Transformers”的縮寫,是Google開發的一種基於Transformer的深度學習技術,用於人工智慧領域的文字預訓練。BERT 由Jacob Devlin和他在 Google 的同事於 2018 年建立,並在論文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中釋出。在2019 年,谷歌宣佈已開始在其搜尋引擎中使用 BERT,到 2020 年底,它幾乎在搜尋查詢中都使用了 BERT。在2020 年的一篇論文《"A Primer in BERTology: What We Know About How BERT Works"》中提到“In a little over a year, BERT has become a ubiquitous baseline in NLP experiments and inspired numerous studies analyzing the model and proposing various improvements. The stream of papers seems to be accelerating rather than slowing down, and we hope that this survey helps the community to focus on the biggest unresolved questions.”自從 BERT 出來以後,也引導了至今炙手可熱的“大模型”浪潮。其本質就是“預訓練”+“微調”:


一文詳解BERT模型實現NER命名實體抽取-王文廣

圖4 BERT模型,來自參考文獻[2]


對於普羅大眾來說,人工智慧的標誌性事件當屬AlphaGo,號稱人類最難的智力遊戲敗於機器,可是街頭巷尾的談資。

在自然語言處理領域,BERT在當時的自然語言處理領域可謂掀起軒然大波,總結起來有:

  1. 在機器閱讀理解頂級水平測試SQuAD1.1中表現出驚人成績,首次兩個衡量指標上全面超越人類,並且還在11種不同NLP測試中創出最佳成績。
    關於 SQuAD資料集和評測參考,當前是2.0版本。

  2. 谷歌團隊成員Thang Luong表示,BERT模型開啟了NLP的新時代

  3. 證明了透過大規模語料集預訓練的技術,能夠大幅度提升各類文字閱讀理解的效果,也因此,“大模型”自此興起

  4. Masked LM(見下圖)透過學習masked的詞,不僅讓模型學會了上下文資訊,還學會了語法syntax、語義semantics、語用pragmatics等,並能夠很好地學會部分領域知識

  5. 預訓練模型越大,效果越好;對應的,成本也會越高。相比於單任務模型來說,無監督的預訓練模型成本要大1000倍以上

  6. 學術界傳統上認為,在一些很難處理的文字閱讀理解任務上,計算機有望能夠全面超越人類



一文詳解BERT模型實現NER命名實體抽取-王文廣

圖5 掩碼語言模型

掩碼語言模型的提出則來自於Google 的更早些的一篇論文《Attention Is All You Need》(下載地址:) 所提到的 Transformers 模型(見下圖)。但 BERT 與 Transformers 略有區別,使用的是其編碼器部分,這點從BERT 的論文標題也可以看出來。事實上,當前炙手可熱的大模型中(如 GPT-3等),幾乎都依賴於 Transformers 的模型結構,特別是其中的自注意力機制。《知識圖譜:認知智慧理論與實戰》一書 P123~130的“BERT 模型詳解”一節則對結合程式碼實現該BERT 的模型結構進行詳細的解析,通俗易懂,非常適合閱讀來深入理解BERT 模型。上述兩篇論文則提供了更多的實驗對比素材,深入閱讀有助於瞭解BERT 為何會在當時引起轟動,以至於在NLP領域引領風騷數年。



一文詳解BERT模型實現NER命名實體抽取-王文廣 圖6 Transformer模型結構


此外值得一提的是,Google最初 釋出的 BERT 模型有兩種配置:

  1. BERT BASE:12 個編碼器,帶有 12 個雙向自注意力頭;

  2. BERT LARGE:24 個編碼器,帶有 16 個雙向自注意力頭。


這兩種配置結構類似,Large版本要比Base版本“更大”,效果自然更好,同時使用時資源要求也更高。本文以Base版本示例,以使得在一張顯示卡上即可完成。換成 Large 版本不用改變任何程式碼,但因為網路更大,可能需要更高階的顯示卡或多卡來支援模型的訓練。


語料準備 


本文采用“MSRA實體抽取資料集”,並使用BIO標記方法來標記,資料集在GitHub 上有很多,也可以GitHub官網下載。

()


MSRA資料集中,實體型別有三種:

  1. LOC:地點型別  

  2. ORG:機構型別

  3. PER:人物型別

一個例子為:

1 O

、 O

中 B-ORG

國 I-ORG

作 I-ORG

協 I-ORG

和 O

現 B-LOC

代 I-LOC

文 I-LOC

學 I-LOC

館 I-LOC

負 O

責 O

人 O

在 O

巴 B-PER

金 I-PER

家 O

中 O

介 O

紹 O

文 B-LOC

學 I-LOC

館 I-LOC

新 O

館 O

設 O

計 O

模 O

型 O

。O

從上述例子可以看出:1.“中國作協”是組織機構(ORG)型別:

  • B-ORG標籤:因為它是一個 機構實體的開始
  • I-ORG標籤:因為它是一個 機構實體的延續

2. “現代文學館”和“文學館”是地點(LOC) 型別:

  • B-LOC標籤:因為它是 地點實體的開始
  • I-LOC標籤:因為它是 地點實體的延續

3.“巴金”是任務(PER) 型別:

  • B-PER標籤:因為它是 人物實體的開始
  • I-PER 標籤:因為它是 人物 實體的延續

4.其他詞被分配 O標籤:因為它們 不是任何實體

使用 BERT 來進行實體抽取的話,需要將語料進行處理,轉化成列表的形式(train_data和test_data,對應於原始的train.txt 和test.txt),列表的每一個元素是一個鍵值對元組,鍵為文字列表,值為標籤列表。如下圖所示:


一文詳解BERT模型實現NER命名實體抽取-王文廣圖7 資料樣例


用BERT進行實體抽取

這裡使用最流行的 PyTorch 框架來實現。首先是引入相關的庫。

一文詳解BERT模型實現NER命名實體抽取-王文廣

這裡選擇的是Google釋出的模型bert-base-chinese ( 提供了大量的模型供使用,包括各種專業的預訓練模型,比如面向金融領域 FinBERT,面向醫藥領域的 MedBERT等等): 

BERT_NAME = 'bert-base-chinese'


轉化為torch能夠使用的資料集

一文詳解BERT模型實現NER命名實體抽取-王文廣


再用如下程式碼將torch 的 dataset轉化為按微批提取的 dataloader:

一文詳解BERT模型實現NER命名實體抽取-王文廣


到此,資料準備完成,後面就可以使用資料集來訓練模型和測試模型效果了。


構建模型

在本文中,我們將使用來自HuggingFace的預訓練 BERT 基礎模型。既然我們要在token級別對文字進行分類,那麼我們需要使用BertForTokenClassificationclass。


BertForTokenClassificationclass是一個包裝 BERT 模型並在 BERT 模型之上新增線性層的模型,將充當token級分類器。基於BertForTokenClassificationclass來建立基於 BERT 的實體抽取模型非常簡單,見下面程式碼:

一文詳解BERT模型實現NER命名實體抽取-王文廣

透過如下程式碼即可例項化一個用BERT進行實體抽取的模型:

model = BertModel(len(label2id)+1)


訓練

我們的BERT模型的訓練迴圈是標準的PyTorch訓練迴圈。在訓練模型中,需要使用 GPU,否則會非常耗時。GPU建議使用nvidia的顯示卡提供,1080ti及其更高版本皆可。

model = model.cuda()

由於BERT已經使用了大規模語料訓練並得到了通用的語義表示,通常使用的話,僅需要重新微調最上面一層即可。為此,需要凍結其他不需要訓練的層的引數。下面程式碼實現了這個邏輯:

一文詳解BERT模型實現NER命名實體抽取-王文廣

接下來就是常見的深度學習訓練方法了,這裡使用AdamW最佳化器,其他最佳化器也可以根據需要進行選擇,具體的參考PyTorch的官方文件。

lr = 0.00005

optimizer = torch.optim.AdamW(optimizer_grouped_parameters, lr=lr)
下面是具體的訓練程式碼:

一文詳解BERT模型實現NER命名實體抽取-王文廣


在測試資料上評估模型

現在我們已經訓練了用於抽取實體的BERT模型。在前面資料集準備中還有測試集,這裡可以使用測試集來看效果:

一文詳解BERT模型實現NER命名實體抽取-王文廣

另外,上述的效果評估是比較簡單的,實際應用中還可以使用更為精細的評估方法,比如按所抽取的實體來評估的方法。更多的用於評估實體抽取的方法可參考《實體抽取:如何評估演算法的效果?》 一文。
(https://mp.weixin.qq.com/s/STS8N1PBML_2BvkO5NfiXg)


結論

本文介紹了全面介紹瞭如何使用BERT進行實體抽取,並給出了程式碼例項。透過本文,讀者可以很方便地“依瓢畫葫蘆”實現一個基於BERT模型的實體抽取程式,從而學會工業界中最好用的實體抽取模型,並將其應用到學習或工作當中。

具體來說,本文內容包括:

  1. 介紹了什麼是實體抽取

  2. 介紹了什麼是 BERT

  3. 用程式碼例項介紹瞭如何使用 BERT 進行實體抽取的完整過程,這包括四個內容:

  • 準備資料

  • 構建模型

  • 訓練模型

  • 測試模型效果

參考文獻

  1. Ashish Vaswani etc., Attention Is All You Need, arxiv: 1706.03762, 2017
  2. Jacob Devlin etc., BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arxiv:1810.04805, 2018
  3. Anna Rogers etc., A Primer in BERTology: What We Know About How BERT Works, arxiv:2002.12327 2020
  4. 王文廣,  知識圖譜:認知智慧理論與實戰, 電子工業出版社, 2022

   


作者簡介

王文廣,達觀資料副總裁,高階工程師,《知識圖譜:認知智慧理論與實戰》作者,曾獲得上海市計算機學會科技進步獎二等獎和上海市浦東新區科技進步獎二等獎,專注於自然語言處理、知識圖譜、影像與語音分析、認知智慧、大資料和圖分析等方向的技術研究和產品開發。現在是上海市人工智慧標準化技術委員會委員,上海科委評審專家,中國計算機學會(CCF)高階會員,中文資訊學會(CIPS)語言與知識計算專委會委員,中國人工智慧學會(CAAI)深度學習專委會委員。申請有數十項人工智慧領域的國家發明專利,在國內外知名期刊會議上發表有十多篇學術論文。曾帶隊獲得國內國際頂尖演算法競賽ACM KDD CUP、EMI Hackathon、“中國法研杯”法律智慧競賽、CCKS知識圖譜評測的冠亞季軍成績。在達觀資料致力於將自然語言處理、知識圖譜、計算機視覺和大資料技術產品化,以OCR、文件智慧處理、知識圖譜、RPA等產品服務於金融、智慧製造、貿易、半導體、汽車工業、航空航天、新能源、雙碳等領域。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997703/viewspace-2924871/,如需轉載,請註明出處,否則將追究法律責任。

相關文章