採用BERT的無監督NER(附代碼)

採用BERT的無監督NER(附代碼)

作者:Ajit Rajasekharan

翻譯:陳之炎

校對:王雨桐

本文約8700字,建議閱讀10+分鐘。

本文介紹了一種無監督命名實體識別(NER)的方法。

採用BERT的無監督NER(附代碼)

圖1. 展示了未微調的BERT(bert-large-cased)無監督NER標記的句子樣本

上圖僅挑選了用這種方法(BERT)標記的幾個實體類型。標記500個句子可以生成大約1000個獨特的實體類型——其中一些映射到如上所示的合成標籤。

採用BERT的無監督NER(附代碼)

BERT模型無法區分GENE和PROTEIN,因為這些實體的描述符(descriptors)與屏蔽詞(masked terms)的預測分佈落在同一尾部區域(所以無法將它們與基本詞彙表中的詞彙區分開來)。區分這些密切相關的實體可能需要對特定領域的語料庫進行MLM微調,或者使用scratch中自定義詞彙進行預訓練(下文將進一步闡述)。

TL;DR

在自然語言處理中,為了在句子中識別出感興趣的實體(NER),如人物、地點、組織等, 我們需要對句子進行標記。其中我們可以手動對每個句子進行標記,或通過某種自動的方法對每個句子進行標記(通常使用啟發式方法來創建一個噪聲/弱標記的數據集)。隨後用這些標記好的句子訓練模型以用於識別實體,這可以看作一個監督學習任務。

本文描述了一種無監督NER的方法。NER是使用BERT模型在沒有標記句子的情況下無監督地完成的,並且BERT模型僅在屏蔽詞模型目標的語料庫上進行了無監督訓練。

該模型在25個實體類型(維基文字語料庫)小型數據集上的F1得分為97%,在CoNLL-2003語料庫上的人員和位置的F1得分為86%。 對於CoNLL-2003語料庫的人員、位置和組織,F1得分較低,僅為76%,這主要是由於句子中實體的歧義(在下面的評估部分中進行了闡述)。完成這兩項測試時都沒有對測試的數據進行任何模型的預訓練/微調(這與在特定領域數據上對模型進行預訓練/微調,或在監督訓練中使用帶標籤的數據形成了鮮明對比)。

它是如何工作?

如果要問術語(term,術語指文章中的單詞和短語)的實體類型到底是什麼,即使我們以前從未見過這個術語,但是也可以通過這個術語的發音或句子結構猜得八九不離十,即:

  • 術語的子詞結構為它的實體類型提供了線索。Nonenbury是_____。

這是一個杜撰的城市名稱,但從它的後綴“bury”可以猜出這可能是一個地點。此時即便沒有任何語境,術語的後綴也給出了實體類型的線索。

  • 句子結構為術語的實體類型提供了線索。他從_____飛到切斯特。

此處句子的語境給出了實體類型的線索,未知的術語是一個地點。即便以前從未見過它,但也可以猜測出句子中的空白處是一個地點(如:Nonenbury)。

BERT的 MLM前端(Masked Language Model head)(MLM-圖7)可以對上述屏蔽的候選詞進行預測,如前所述:它的訓練目標是通過預測句子中空白的單詞來進行學習。然後在推理過程中使用這種學習後的輸出對屏蔽術語進行預測,預測是基於BERT固定詞彙表的概率分佈。這種輸出分佈有一個明顯短小的尾部(大約小於總數的0.1%),其中包括了術語語境敏感實體類型的候選詞,此短尾便是用BERT詞彙表表示的語境敏感術語的標識。例如句子中屏蔽位置的語境敏感標識如下所示:

Nonenbury是_____。

語境敏感性預測:村莊(village,Village) 、小鎮(hamlet,Hamlet)、 聚居區、教區村、農場 、小鎮(Town,town)。

BERT固定詞彙表(bert-large-cased 為28996個詞)是一組通用的描述符集合(如:專有名詞、普通名詞、代詞等)。通過下述聚類過程獲得這個描述符集合的子集(有可能重疊),其特徵為一個獨立於句子語境術語的實體類型。這些子集是獨立於語境的術語標識。在BERT的詞彙表中獲取接近語境敏感標識的實體類型的過程如下:

<code>

[

'villages'

'towns'

'village'

'settlements'

'villagers'

'communities'

'cities'

]

[

'Village'

,

'village'

]

[

'city'

,

'town'

,

'City'

,

'cities'

,

'village'

]

[

'community'

,

'communities'

,

'Community'

]

[

'settlement'

,

'settlements'

,

'Settlement'

]

[

'Township'

,

'townships'

,

'township'

]

[

'parish'

,

'Parish'

,

'parishes'

]

[

'neighborhood'

,

'neighbourhood'

,

'neighborhoods'

]

[

'castle'

,

'castles'

,

'Castle'

,

'fortress'

,

'palace'

]

[

'Town'

,

'town'

]

/<code>

在BERT詞彙表的嵌入空間中實現最近的匹配函數(基於單詞嵌入的餘弦相似度),匹配函數在語境敏感標識/集群和語境獨立標識/集群之間產生一個表示術語的NER標籤的語境獨立標識子集。

具體來說,m組術語 {B1,B2,C3,…. Bm} 構成語境敏感標識的集合, n組術語{C11、C12、C13、… Ck1}、{C21、C22、C23、… Ck2}、…{Cn1、Cn₂、Cn₃、… Ckn}構成語境獨立標識,生成帶有NER標籤的語境獨立標識子集(如下圖2)。

採用BERT的無監督NER(附代碼)

圖2. 句子的NER標記

  1. 經過最小預處理後,將帶有屏蔽詞的句子輸入到模型中。
  2. 得到BERT詞彙表中28996個詞彙的前10位預測術語。
  3. 這10個術語在BERT的字嵌入空間中通過一個函數重新進行排序。
  4. 重新排序後排位位於頂部的k個術語以及6000個集群(離線計算)作為輸入,輸入到輸出匹配集群的集群匹配函數之中。

然後,這些集群的標籤(可以是一次性手動標記,或在某些用例中使用)聚合後輸出NER標籤。 在圖中執行3、4和5的函數均在BERT的嵌入空間中使用了單詞向量之間的餘弦相似性,一次性離線生成約6000個集群也是通過計算BERT詞嵌入空間的餘弦相似度完成的。 圖中BERT基模型隱含的大小為768。文中BERT large cased示例隱含大小為1024。

給定語境獨立標識的數目,可以從BERT的詞彙表中自動獲取數千個標識(bert-large-cased 為6000)。利用這種方法,可以實現在細粒度級別上對大量實體類型進行無監督識別,而無須對數據進行標記。

上述無監督的NER方法應用十分廣泛:

  • 通過BERT詞彙表中的其他詞彙,BERT的原始詞嵌入可以捕獲BERT有用信息和可分離信息(通過詞彙量小於0.1%直方圖尾進行區分),用它可以生成6000多個集群。
  • 帶有MLM head的BERT模型輸出經過轉換之後,可用於對屏蔽詞進行預測。這些預測結果也有一個易於區分的尾部,這一尾部可用於為術語選擇語境敏感標識。

執行無監督NER的步驟

1. 一次性離線處理

一次性離線處理為從BERT的詞彙表中獲取的語境獨立的標識集合創建映射,將其映射成單個描述符/標籤。

第1步:從BERT的詞彙表中篩選對語境敏感的標識術語

BERT詞彙表是普通名詞、專有名詞、子詞和符號的混合體,對此集合的最小化過濾是刪除標點符號、單個字符和BERT的特殊標記。 進而生成包含21418個術語的集合--普通名詞和專有名詞相混合,作為描述實體類型的描述符。

第2步: 從BERT的詞彙表中生成語境獨立的標識

如果簡單地從它的尾部為BERT詞彙表中的每個術語創建語境獨立標識,即便選擇較高的餘弦相似閾值(對於bert-large-cased模型來說,大約有1%的術語位於平均餘弦閾值超過0.5的尾部),也會得到數目相當大的集群(大約20000個)。即便有這麼大量的集群,也無法捕捉到這些標識之間的相似性。 所以我們要:

  • 迭代BERT詞彙表中的所有術語(子詞和大多數單個字符將被忽略),併為每個術語選擇餘弦閾值超過0.5的語境獨立標識。 將單詞尾部的術語視為一個完整的圖,其中邊的值為餘弦相似值;
  • 選擇與圖中所有其他節點具有最大連接強度的節點;
  • 將該節點視為由這些節點組成的語境獨立標識的主元,此節點是此圖中所有其他節點的最近鄰居。
採用BERT的無監督NER(附代碼)

圖3. 找到完整圖中的主元節點

在上面的完整圖中,“smoothly”節點與其鄰居具有最大的平均連接強度。 因此,“smoothly”是此圖的主元節點-與此圖中所有其他節點最為近鄰。

  • 一旦術語被選為標識的一部分,它將不會成為候選的評估主元(但是,如果計算出另一個術語的主元節點,它則可能成為間接的主元)。 從本質上講一個術語可以成為多個集合的元素,可以是主元,也可以是間接主元。
<code>

airport

0

.6

0

.1

Airport

airport

airports

Airfield

airfieldstroking

0

.59

0

.07

stroking

stroked

caressed

rubbing

brushing

caressJournalism

0

.58

0

.09

Journalism

journalism

Journalists

Photography

journalistssmoothly

0

.52

0

.01

smoothly

neatly

efficiently

swiftly

calmly

/<code>

在上述示例標識中,兩個數值是子圖中邊的平均值和標準差,第一列術語稱為該標識的主元術語。 這些術語作為實體標籤代理,可以手動映射(一次性操作)成為用戶自定義的標籤。

圖4a和圖4b顯示了映射這些實體集群的示例,只需對那些代表與我們特定應用程序相關的實體類型的集合進行映射。 可以自動將其餘集合映射為合成標籤“其他/misc”。 圖中的參注部分描述了一種方法,通過使用模型本身來引導/加速描述符,從而手動將其映射到用戶自定義標籤。

由於大約30%的BERT詞彙是專有名詞(人名、地點等),我們也僅對一個小的術語集合進行標記(如圖4和4b所示:手動標記2000個左右集群需花費約5個工時),而沒有對大量的句子進行標記,這看上去有點像是在作弊。將對句子的標記問題轉化成標記語境非敏感描述符的主要優點是:它是一個一次性過程。

與有監督訓練方法相比,這不可避免地創建出更多的標記數據,不僅要對模型進行訓練,而且要對訓練完成之後生成的句子(通常是在部署中)重新訓練。 然而在這個例子中,最壞的情況是必須重新對BERT模型訓練/微調,對這些新句子進行無監督訓練-而無需再多做任何標記。

上述的語境非敏感標識將生成大約6000個集合,平均基數約為4/7個節點。 這6000個集合的集群強度平均值為0.59,偏差為0.007-這些集群是相當緊密的集群,集群平均值遠遠高於從分佈中獲得的閾值(圖4c)。有大約5000個術語(佔詞彙表的17%)為單例集合,將被忽略。 如果改變閾值,這些數字也會隨之改變。 例如閾值選為0.4,總尾質量將增加到0.2%,集群平均值也會相應增加(但如果實體類型混合在一起,集群開始變得嘈雜)。

採用BERT的無監督NER(附代碼)

圖4. BERT (bert-large-cased)語境獨立標識集數據集

平均基數約為4,標準差為7。 這6110個數據集合的集群強度的平均值是0.59,偏差是0.007 -因為平均值遠遠高於從分佈中選取的閾值,這些集群是非常緊密的集群。可以看出:語境敏感的術語往往是相對比較弱的集群,有大約17%的BERT詞彙是單例集合。子詞、特殊標記和大多數單字符標記將不會當作集群來考慮。

採用BERT的無監督NER(附代碼)

圖4a. BERT (bert-large-cased)詞彙集群的實體分佈

大部分實體為人員、地點和組織(ORG)。AMB是指集群中的術語不明確的集群,例如,如下圖4b所示,有7個集群在人員和地點之間存在歧義,其他集群在人物、事物、體育/傳記等方面存在歧義。 當想要找出特定領域的實體類型時,使用自定義詞彙表是很有必要的。這些自定義類型可能會消除對人員(PERSON)、地點(LOCATION)和組織(ORG)的歧義。

採用BERT的無監督NER(附代碼)

圖4b. BERT (bert-large-cased)詞彙表的實體子類分佈

這些是圖4a中主要類型的細粒度實體子類型。

從BERT詞彙表中獲取的語境獨立集群示例:

採用BERT的無監督NER(附代碼)

圖4c. BERT’s (bert-large-cased)詞彙表中獲取的集群示例

語境非敏感的集群為模糊集群,標記為AMB。另外要考慮將子詞進行聚類時的子詞聚類(儘管本文中的實體識別結果已過濾掉類似結果)。

2. 為每個輸入的句子預測實體

執行下述步驟為輸入的句子標記術語。

第3步:輸入句子的最小化預處理

在給一個輸入句子標記實體之前,需對輸入進行小量的預處理。其中之一是大小寫規一化-所有大寫的句子(通常為文檔標題)被轉換為小寫,每個單詞中的首字母保持原始狀態。這有助於提高下一步檢測短語跨度的準確性。

<code>He flew 

from

New York to SFO/<code>

轉化為:

<code> He flew 

from

New York to Sfo/<code>

第4步:識別句子中的短語跨度

用一個POS標籤來標記輸入句子(理想狀態下,訓練也會處理所有小寫單詞句子),這些標籤用於識別短語,並將名詞首字母轉為大寫。

<code>He flew 

from

New York to Sfo/<code>

上述標記為名詞的術語用粗體表示。BERT的屏蔽詞預測對大寫非常敏感,為此要使用一個POS標記來可靠地標記名詞,即便只有小寫才是標記性能的關鍵所在。例如對下面句子的屏蔽詞進行預測,可以通過改變句子中一個字母的大寫來改變實體意義。

<code>Elon Musk 

is

a ____CS Predictions: politician musician writer son student businessman biologist lawyer painter member/<code>

CS預測:政治家、音樂家、作家、兒子、學生、商人、生物學家、律師、畫家、成員。

<code>Elon musk 

is

a ____(注:musk意為麝香)CS Predictions: brand Japanese beer German common Turkish popular French Russian Brazilian/<code>

CS預測:品牌、日本語、啤酒、德國、通用、土耳其、流行、法國、俄羅斯、巴西。

此外,BERT的屏蔽詞預測只能可靠地偵測實體類型(上面第一個例子中的人物),並不能對事實進行準確的預測,雖然BERT偶爾也可能會對事實做出準確的預測。

第5步:利用BERT‘s MLM head 預測每個屏蔽詞的位置

對於句子中的每個名詞術語,生成一個帶有該術語屏蔽詞的句子。利用BERT的MLM head來預測屏蔽詞位置的語境敏感標識。

<code>He flew 

from

__ to SfoCS Predictions: Rome there Athens Paris London Italy Cairo here Naples Egypt/<code>

CS預測:羅馬,雅典,巴黎,倫敦,意大利,開羅,那不勒斯,埃及

<code> He flew 

from

New York to ___CS Predictions: London Paris Singapore Moscow Japan Tokyo Chicago Boston France Houston/<code>

CS預測:倫敦、巴黎、新加坡、莫斯科、日本、東京、芝加哥、波士頓、法國、休斯頓

與在圖2中查找主元節點的方法一樣,找出集合中每個節點和其它節點之間的強度。然後按強度大小進行排序,得到單詞嵌入空間中CS預測的重新排序列表。重新排序後,有相近實體意義的術語被彙集在一起,此外還需要對嵌入空間中的與語境無關的詞重新排序。

例如在下面第一個示例中,經過重新排序之後,將術語“那裡”和“這裡”(空白位置的有效語境敏感預測)推到了末尾。在下一步中,將選取這些重新排序後節點的前k(k≥1)個節點。

<code>He flew 

from

__ to SfoCS Predictions: Rome there Athens Paris London Italy Cairo here Naples Egypt/<code>

CS預測:羅馬、雅典、巴黎、倫敦、意大利、開羅、那不勒斯、這裡、埃及

<code>

CI

space ordering of CS predictions: Rome Paris Athens Naples Italy Cairo Egypt London there here/<code>

CS預測的CI空間排序:羅馬、巴黎、雅典、那不勒斯、意大利、開羅、埃及、倫敦、那裡、這裡

<code> He flew 

from

New York to __CS Predictions: London Paris Singapore Moscow Japan Tokyo Chicago Boston France Houston/<code>

CS預測:倫敦、巴黎、新加坡、莫斯科、日本、東京、芝加哥、波士頓、法國、休斯頓

<code>

CI

space ordering of CS predictions: Paris London Tokyo Chicago Moscow Japan Boston France Houston Singapore/<code>

CS預測的CI空間排序:巴黎、倫敦、東京、芝加哥、莫斯科、日本、波士頓、法國、休斯頓、新加坡

第6步:找出語境敏感標識和語境獨立標識之間的密切匹配

利用一個簡單的緊密匹配函數便可生成合理的結果,它從上一個術語中選擇一個語境敏感標識的主元節點,使之與語境獨立標識集中的所有6000個主元做點積,然後對它們進行排序,以獲得候選實體標記。此時從本質上來講,緊密匹配函數是找出離語境敏感集群主元最近的那個語境非敏感集群主元的關鍵。為提高標籤/預測的可信度(圖5),我們選取頂部前k個主元,而非選取頂部的那個主元。

採用BERT的無監督NER(附代碼)

圖5. 詞嵌入空間中語境敏感標識和語境獨立標識之間的緊密匹配

實現緊密匹配的最為有效簡單的方法是:語境敏感標識的主元節點與語境獨立標識中集合的主元之間的點積。此時,緊密匹配函數本質上是找出離語境敏感集群主元最近的那個語境非敏感集群主元。

另外一個更優的實現是:根據語境敏感標識中節點的均值和標準差決定是否將其選為主元節點,然後在二分圖中選定要考慮的主元數,以找到與每個語境敏感集群主元最近的那個語境非敏感集群主元。

b圖中顯示的情況為:當語境敏感詞計數是3,並且只有一個語境獨立的術語節點(為中斷二者之間的關係,在這裡選取奇數可能相對更優一些;同樣,也無需從語境非敏感集合中選取三個節點,因為它們是緊密的集群,正如前面所述,平均偏差為.007)。

在計算中使用所有語境敏感標識中的節點不太可能生成良好的結果,因為語境敏感節點的平均標準差要高出許多。由於在嵌入空間中評估語境敏感標識時,會擴展到在更大的區域範圍,即使在捕獲單個實體類型時也是如此。

對語境敏感的標識中頂部那個主元的標記預測如下所示。標記以及用戶標籤如下所示:

<code>He flew 

from

__ to SfoCI space ordering

of

CS predictions: Rome Paris Athens Naples Italy Cairo Egypt London there here/<code>

CS預測的CI空間排序:羅馬、巴黎、雅典、那不勒斯、意大利、開羅、埃及、倫敦、這兒、那兒

<code>

Tags

: Italy Venice Athens Bologna Madrid Carthage Roma Sicily Turin Vatican/<code>

標記:意大利、威尼斯、雅典、博洛尼亞、馬德里、迦太基、羅馬、西西里、都靈、梵蒂岡

<code>

User

Label - location location location location location location location location location location/<code>

用戶標籤 - 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點

<code>He flew 

from

New York to __CI space ordering

of

CS predictions: Paris London Tokyo Chicago Moscow Japan Boston France Houston Singapore/<code>

CS預測的CI空間排序:巴黎、倫敦、東京、芝加哥、莫斯科、日本、波士頓、法國、休斯頓、新加坡

<code>

Tags

: London Madrid Geneva Vienna Bordeaux Chicago Metz Athens Cologne Istanbul/<code>

標記:倫敦、馬德里、日內瓦、維也納、波爾多、芝加哥、梅茨、雅典、科隆、伊斯坦布爾

<code> 

User

Label - location location location location location location location location location location/<code>

用戶標籤 - 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點 地點

評價結果

該模型在兩個數據集上進行了評估:

  • 具有三種實體類型(人員,位置,組織)的標準數據集CoNLL-2003;
  • 具有約25種實體類型的Wiki文本數據集。

在CoNLL-2003集中,所有三種數據類型(PER-81.5%;LOC-73%;ORG — 66%;MISC-83.87%)的平均F1得分僅為76%。這是由於兩個原因:

  • 測試數據中很大一部分的CoNLL文本結構不是完整的句子,而是板球分數的簡潔報告,它並沒有規則的句子結構。由於該模型未經過句子的預訓練或微調,因此很難預測這些分佈句子中的掩蓋詞。實際上,可以通過預訓練或對新句子結構上的模型進行微調來改善這種情況。
  • 測試數據將許多來自特定地區的球隊標記為一個位置。該模型總將它們標記為位置,而不是團隊名稱(org)。使用這種無監督NER方法無法輕鬆解決此問題。它總會選最能與屏蔽位置匹配的實體描述符來標記術語,而不是那些人工標記術語。儘管從某種意義上講這是個弊端,但這也是模型的關鍵優勢-它用來標記屏蔽位置的描述符自然是從受過訓練的語料庫中出現的,而非從外部標記的人那裡學到的。將這些描述符映射到用戶定義的標籤可能是一種方法,但可能不是一個完美的解決方案(例如上述將位置的描述符視為組織和位置的模糊標籤的情況)。
採用BERT的無監督NER(附代碼)

圖 5a. CoNLL-2003 結果

該模型評價基於少量測試數據,但其具有完整的自然句集和大約25種標籤類型,平均F1-分數約為97%。

採用BERT的無監督NER(附代碼)

圖5b. 25個實體類型的 Wiki 數據結果

採用BERT的無監督NER(附代碼)

圖5c. Wiki數據集的實體分佈

在該數據集上,F1平均成績為97%。這種方法的主要區別在於,不僅不對模型進行標籤數據訓練,甚至不對模型進行預訓練(對模型進行測試)

方法的侷限性和挑戰

1. 語料庫偏倚

儘管單實體預測展現了模型如何運用子詞信息解釋實體類型的能力,但在實際應用中,它們只能與具有多個實體類型的句子一起使用。沒有太多語境的單個實體句子對語料庫偏倚非常敏感,如對谷歌和Face book的預測:

<code>Facebook 

is

a __CS Predictions: joke monster killer friend story person company failure website fault/<code>

CS預測:笑話、怪物、殺手、朋友、故事、人物、公司、失敗、網站、故障

<code> Microsoft 

is

a __CS Predictions: company website competitor people friend player Winner winner person brand/<code>

CS預測:公司、網站、競爭對手、朋友、玩家、贏家、人物、品牌

<code> Google 

is

a __CS Predictions: friend website monster company killer person man story dog winner/<code>

CS預測:朋友、網站、怪物、公司、殺手、人物、男士、故事、狗、贏家

2. 實體預測的模糊性

這種方法會產生兩種歧義:

  • 以語境非敏感描述符為特徵的實體類型中存在模糊性(圖4c中的示例)。 包含“banks, bank, Banks, banking”的集群可以代表一個組織或地點。 然而這種模糊性通常可以得到解決,當通過實體類型的多數投票將語境敏感標識與語境非敏感標識緊密匹配時,即使一些匹配的語境非敏感標識也是模糊的。
  • 下文描述的第二種歧義難以解決。

有一些句子允許用不同的實體類型填充一個屏蔽後的術語。例如在下面的句子中預測紐約的實體類型時:

<code>He felt New York has a chance to win 

this

 year

's competition

/<code>

屏蔽單詞的實體預測可能會是一個暗示人物的詞,句子同樣通順,如下所示:

<code>He felt __he____ has a chance to win 

this

 year

's competition

/<code>

模糊性由屏蔽詞引起,大多數情況可以通過確定屏蔽術語本身的實體類型-紐約來解決。

<code>New York 

is

a _____CS Predictions: city town place City capital reality square country dream star/<code>

CS預測:城市、小鎮、城鎮、首府、現實、廣場、鄉村、夢、星星

然而,在某些情況下,即使是被屏蔽的術語也是模稜兩可的,從而使得實體的確定富有挑戰性。例如如果原句為:

<code>He felt Dolphins has a chance to win 

this

 year

's competition.

/<code>

海豚可以是一個音樂團體或運動隊。

這些挑戰可以通過以下多種方法得以改善:

  • 在專有術語語料庫上,對模型進行微調,可以幫助減少特定領域實體類型中的歧義。 例如,BERT預訓練中的BRA F(是一個基因)在其特徵沒有基因意義,而基因意義卻存在於一個在生物醫學語料庫上微調的模型之中。
<code>BRAF 

is

a _____CS Prediction: British German

new

standard the variant name version World world/<code>

CS預測:英、德、新的標準、變體名稱、版本、世界

在一個生物醫學語料庫模型上微調之後:

<code>BRAF 

is

a _____CS Prediction: protein gene kinase structural non family reaction functional receptor molecule/<code>

CS Prediction:蛋白基因、激酶結構、非家族反應、功能、受體、分子

  • 先從一個用戶自定義的詞彙表開始對模型進行預訓練(附鏈接:https://towardsdatascience.com/pre-training-bert-from-scratch-with-cloud-tpu-6e2f71028379),可以幫助解決實體歧義的問題,更為重要的是:它還可以提高實體標記性能。

雖然BERT默認的詞彙非常豐富,有完整的單詞和子詞來檢測實體類型,如人物、地點、組織等(圖4a和b),但是它無法捕獲在生物醫學領域的全部和部分術語。例如,imatinib,nilotinib,dasatinib等藥物的標記則不會考慮“tinib”這個常見的亞詞。imatinib被標記為i##mat##ini#b,而dasatinib被標記為das##at i##ni##b。如果利用生物醫學語料庫上的句型來創建自定義的詞彙,便會得到im##a##tinib和d ##as ##a ##tinib ,進而得到了常用的後綴。

此外自定義詞彙包含來自生物醫學領域的完整單詞,能更好地捕捉生物醫學領域的特徵,比如像先天性、癌、致癌物、心臟病專家等醫學領域專業詞彙,它們在默認的BERT預先訓練的模型中不存在。在默認的BERT的詞彙表中捕獲人和地點信息將被在生物醫學語料庫中捕獲藥物和疾病條件等專有名詞和子詞所取代。

此外從生物醫學語料庫中提取的自定義詞彙約有45%的新全詞,其中只有25%的全詞與公開可用的BERT預訓練模型重疊。當微調BERT模型添加100個自定義詞彙表時,會為之提供一個選項,但卻為數不多,而且如前面提到的,默認的BERT的詞彙表對人物、地點、組織等實體類型會產生嚴重歧義,如圖4a所示。

<code>

Token

:

imatinib

dasatinibBERT

(

default

):

i

#

#mat

#

#ni

#

#b

das

#

#ati

#

#nibCustom

:

im

#

#a

#

#tinib

d

#

#as

#

#a

#

#tinib

/<code>

文後的一些想法

NER是從輸入句子到與句子中術語對應的一組標籤的映射任務。傳統的方法通過對模型訓練/微調,利用標記後數據的監督任務來執行該映射。不同於BERT這樣的預訓練模型,該模型在語料庫上進行無監督學習。

本文描述了一種在沒有改變預訓練/細調的BERT模型情況下,對屏蔽語言目標執行無監督NER的方法。通過對學習的分佈式表示(向量)端到端操作來實現,向量處理的最後階段使用傳統算法(聚類和最近鄰)來確定NER標籤。此外與大多數情況下頂層向量用於下游任務的情況相反,BERT對屏蔽句子的輸出只作為種子符號信息,在其自己的最低層實現單詞嵌入,從而獲取句子的NER標籤。

採用BERT的無監督NER(附代碼)

圖6. 傳統的監督NER(左側圖)與本文描述的無監督NER(右側圖)對比圖

傳統的監督NER是有監督的標籤映射任務,通過對模型的訓練/微調來執行任務(左側圖)。相反無監督的NER則使用一個預訓練/微調模型,訓練無監督的屏蔽詞模型目標,並將模型的輸出作為種子信息,在BERT模型的最底層-單詞嵌入上進行算法操作,從而獲取句子的NER標籤。

總之執行NER所需的所有信息,從傳統意義上來講是一個有監督的學習任務,它也已存在於無監督的BERT模型中,其底層的關鍵部分即為單詞嵌入。

關聯工作/參考文獻

2018年發表的這篇文章(https://homes.cs.washington.edu/~eunsol/open_entity.html )採用了遠程監督進行實體識別。細粒度標籤為眾包的訓練模型。

這篇文章(https://www.aclweb.org/anthology/N19-1084.pdf )利用有監督的多標籤分類模型,對10,000多個實體類型進行細粒度實體鍵入。

命名實體識別一直是一個廣泛研究的問題,迄今為止,在arXiv上大約有400篇相關論文,谷歌學者自2016年至今大約有62,000個搜索結果。

檢查BERT的原始嵌入:

https://towardsdatascience.com/examining-berts-raw-embeddings-fd905cb22df7

補充說明

1. Berts MLM head-簡要回顧

BERT MLM head本質上是BERT頂部的單一轉換層。下圖中顯示了BERT輸出的一個帶有9個標記的句子(在標記化之後),它是一個9x768矩陣(BERT基模型的維數是768)。然後傳遞給MLM head的稠密層,在9x768輸出上對所有28996個單詞向量執行點積,以找出句子中哪個位置的向量輸出與28996個單詞向量的相似度最高。對於位於這個位置的被屏蔽單詞,生成一個預測的標籤。在訓練/細調模式下,屏蔽詞的預測誤差被反向傳播到模型中,一直傳播到嵌入的單詞(解碼器權重和嵌入層權重綁定/等值)。在推斷模式下,用嵌入來表示標記文本,以及在頭頂層的輸出日誌。

採用BERT的無監督NER(附代碼)

圖7. BERT’s MLM head--顯示流過模型的一個9字標識輸入及其MLM head

解碼器使用來自嵌入層的同一向量(在代碼中綁定權重-但單獨駐留在pytorch.bin文件中)。

2. 方法性能

對於下述句子:

採用BERT的無監督NER(附代碼)

在典型的採用BERT的監督方法中,通過將整個句子完整輸入到一個微調的BERT模型,我們可以得到如下所示的NER輸出標籤(B_PER、I_PER、O...)。

採用BERT的無監督NER(附代碼)

本文中描述的無監督NER方法,要求將上述句子分四次傳遞給一個MLM’s head,以確定四個實體-John Doe,New York,RioDe Janiro和Miami(正如前面所描述,這四個實體的位置是由一個POS標籤與一個chunker協同識別)。

採用BERT的無監督NER(附代碼)

具體而言,句子的下述4個標記版本將被傳遞到MLM模型中:

採用BERT的無監督NER(附代碼)

檢索出每個屏蔽詞位置的語境敏感特徵,然後將其與語境非敏感特徵匹配,以生成每個位置的實體預測,如下所示。

採用BERT的無監督NER(附代碼)

雖然原則上可以通過一次性檢索輸入句中每個標識的MLM語境敏感標識,但實際上應將帶有屏蔽詞的句子單獨發送給MLM模型,以確定實體類型,因為不清楚是否能將短語或子詞的語境敏感預測結合起來進行預測 (如果原始句子只有一個單詞實體,並且這些單詞的標記版本也存在於BERT的詞彙表中,便可以在一次傳遞中推斷出敏感標識)。

舉個例子:像諸如New York 等短語,以及Imatinib — I ##mat ##ini ##b等子詞,均出現在BERT詞彙表中。如果一個子詞含有多個默認的含義的話,問題則變得複雜化,比如:I in Imatinib - I ##mat ##ini ##b,會產生一個高方差的語境敏感的標識。可以對子詞進行波束搜索(beam search)生成新的可信的單個標記,但它可能不是基礎詞彙表的一部分,導致語境敏感標識的偏差變大。 可考慮將SpanBERT視為一個選項,來加大預測的跨度,但它也僅僅是對屏蔽短語的各個標記進行預測,而沒有給出屏蔽短語的預測。

對帶有多個屏蔽詞的句子預測可以通過並行預測這個句子的所有屏蔽版本來解決。 在上面的例子中,屏蔽術語佔句子中總術語數的50%,但在實際項目中往往低於這個平均數。 如果用一個獨立的句子來確認每個術語在句子中的實體預測,如 “術語是一個___”這樣的句子, (像“Nonenbury是一個___”這樣的句子),那麼發送給MLM模型進行預測的句子數量將是句子中屏蔽術語數量的兩倍。

3. 為用戶自定義的標籤引導映射標籤描述符

如果是對應用的一組特定實體集合感興趣,那麼也可以利用任何未標記的語料庫,其中這些實體主要是通過如下方式獲得:

  • 將這些句子輸入到模型中,讓模型輸出它們的標籤描述符;
  • 對這些描述符的發生次數計數排序,得到最感興趣的幾個描述符;
  • 手動掃描這些描述符並將它們映射到選定的實體標籤;
  • 如果用來獲取這些標籤的未標記語料庫代表了真實的實體類型,那麼它將涵蓋絕大部分實體類型。

這種無監督的方法:

  • 將句子與特定用例中感興趣的實體的標記問題轉化為標記代表感興趣標籤的語境非敏感描述符。正如前文所述,這樣做減少了用更多標記數據重新訓練模型的數目。
  • 此外還採用了一個POS標籤,用該標籤對有監督訓練的所有句子進行標記。然而,識別標識和候選描述符的關鍵部分是由BERT執行的,而BERT是經過訓練/細調的無監督訓練。

4. 無子詞過濾的語境無關群集統計信息

由於難以找到子詞的標籤,因此未考慮將子詞用於創建語境無關的群集。 但是將它們納入考慮的集群可以獲取對某些應用有潛在價值的信息。BERT的模型詞彙有6477個子詞,其中1399個組成了主元。 其餘的被分到59個非子詞主元中(2872是單例)。

採用BERT的無監督NER(附代碼)

子詞作為主元以及包括子詞的其他非子詞主元的語境不相關群集。 生成語境不敏感群集並未包含子詞,在此處顯示這些子詞只是為了強調某些群集捕獲了有趣的可解釋信息(其他不構成實體標籤的觀點)。

本方法的其他應用

由於實體類型的確定純粹是基於一組術語進行的,本方法可以應用於多種應用程序

  • 查找兩個或多個術語是否具有相同的實體類型。分別輸入包含這些術語的句子,找出語境敏感的標識,並檢查模型輸出的標籤是否相同/相似。
  • 獲取特定實體類型的更多術語。
  • 當不僅僅限於標記名詞短語時,本方法的輸出可以(可選擇:與POS標籤和依賴解析器一起)用於為下游監督任務生成標記數據,如分類、關係提取等。在某些情況下,即便不對監督任務本身進行替換,至少也可以創建出一條基礎線。

原文標題:

Unsupervised NER using BERT

原文鏈接:

https://towardsdatascience.com/unsupervised-ner-using-bert-2d7af5f90b8a

編輯:黃繼彥

校對:林亦霖

譯者簡介

採用BERT的無監督NER(附代碼)

陳之炎,北京交通大學通信與控制工程專業畢業,獲得工學碩士學位,歷任長城計算機軟件與系統公司工程師,大唐微電子公司工程師,現任北京吾譯超群科技有限公司技術支持。目前從事智能化翻譯教學系統的運營和維護,在人工智能深度學習和自然語言處理(NLP)方面積累有一定的經驗。業餘時間喜愛翻譯創作,翻譯作品主要有:IEC-ISO 7816、伊拉克石油工程項目、新財稅主義宣言等等,其中中譯英作品“新財稅主義宣言”在GLOBAL TIMES正式發表。能夠利用業餘時間加入到THU 數據派平臺的翻譯志願者小組,希望能和大家一起交流分享,共同進步。

—完—

關注清華-青島數據科學研究院官方微信公眾平臺“ AI數據派 ”及姊妹號“ 數據派THU ”獲取更多講座福利及優質內容。


分享到:


相關文章: