全文共3880字,預計學習時長20分鐘或更長
在世界數據科學界, BERT模型的公布無疑是自然語言處理領域最激動人心的大事件。
鑑於BERT還未廣為人知,特此做出以下解釋:BERT是一種以轉換器為基礎,進行上下文詞語預測,從而得出最優結果的語言表徵模型。計算語言學協會北美分會將BERT論文評為年度最佳長篇論文。谷歌研究發布了經過預訓練的BERT模型,包括多語言、中文和英文BERT。
會話人工智慧框架Deeppavlov是基於iPavlov開發的,它包含構建對話系統所需的所有組件。BERT發布之後,其處理多種任務的能力令人驚異。
BERT可以集成到三個常用NLP任務的解決方案中:文本分類、標記和問題回答。本文將將詳細闡釋如何在DeepPavlov中使用基於BERT的命名實體識別(NER)。
NER介紹
命名實體識別(NER)是NLP中最常見的任務之一,可以將其表述為:
給定一個標記序列(單詞和可能的標點符號),為序列中的每個標記提供一個來自預定義標記集的標記。
下圖標示句是NER在演示中的輸出,其中藍色代表人物標籤,綠色代表位置,黃色代表地理位置,灰色代表日期時間。
Deeppavlov ner模型支持19個標籤:org(組織)、gpe(國家、城市、州)、loc(位置)、事件(命名為颶風、戰鬥、戰爭、體育活動)、日期、基數、金額、人物等。Deeppavlov的NER模型在命令行中處理的語句如下所示。
>> Amtech , which also provides technical temporary employment services to aerospace , defense , computer and high - tech companies in the Southwest and Baltimore - Washington areas , said its final audited results are due in late November .
['B-ORG', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-LOC', 'O', 'B-GPE', 'O', 'B-GPE', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-DATE', 'I-DATE', 'O']
>> Amtech還為西南部和華盛頓巴爾的摩地區的航空航天、國防、計算機和高科技公司提供臨時技術就業服務,該公司表示,其最終審計結果將於11月底公布。
BIO標記方案用於區分具有相同標記的相鄰實體,其中「B」表示實體的開頭,「I」表示「中間」,它用於除第一個實體外的所有組成實體的單詞,「O」則表示不是實體。
NER有多種業務應用程式。例如,NER可通過從簡歷中提取重要信息來幫助人力資源部門簡歷的評估。此外,NER還可用於識別客戶請求中的相關實體——如產品規格、部門或公司分支機構的詳細信息,以便對請求進行相應分類並轉發給相關部門。
如何在Deeppavlov中使用基於Bert的NER模型
任何預處理的模型都可以通過命令行界面和Python進行推理。在使用模型之前,請確保使用以下命令安裝了所有必需的軟體包:
python -m deeppavlov install ner_ontonotes_bert_mult
python -m deeppavlov interact ner_ontonotes_bert_mult [-d]
其中ner_ontonotes_bert_mult表示配置文件的名稱。
可以通過Python代碼與模型進行交互。
from deeppavlov import configs, build_model
ner_model = build_model(configs.ner.ner_ontonotes_bert_mult, download=True)
ner_model(['World Curling Championship will be held in Antananarivo'])
此外,DeepPavlov包含一個基於RuBERT的處理俄語數據的模型。
總體而言,比起基於雙LSTM-通用報告格式的模型,基於BERT的模型有了實質性的改進。
通過下表可以看到基於英語和俄語的模型的性能。
多語種Zero-Shot轉移
多語言BERT模型支持執行從一種語言到另一種語言的零距離傳輸。
ner_ontonotes_bert_mult模型是在OntoNotes語料庫上訓練的,該語料庫在標記模式中有19種類型。
你可以在不同的語言上測試模型。
from deeppavlov import configs, build_model
ner_model = build_model(configs.ner.ner_ontonotes_bert_mult, download=True)
ner_model([
'Meteorologist Lachlan Stone said the snowfall in Queensland was an unusual occurrence '+
'in a state with a sub-tropical to tropical climate.',
'Церемония награждения пройдет 27 октября в развлекательном комплексе Hollywood and '+
'Highland Center в Лос-Анджелесе (штат Калифорния, США).',
'Das Orchester der Philharmonie Poznań widmet sich jetzt bereits zum zweiten '+
'Mal der Musik dieses aus Deutschland vertriebenen Komponisten. Waghalter '+
'stammte aus einer jüdischen Warschauer Familie.'])
在俄語語料庫3上對模型性能進行了評價。以下是轉移的結果。
多語言模型在第3集俄語語料庫上的性能
如何為NER配置BERT
Config/fag文件夾下單獨配置文件對deeppavlov nlp 進行定義。配置文件由四個主要部分組成:dataset_reader、dataset_iterator、chainer和train。
所有基於BERT的模型的公共元素都是配置文件chainer部分中的BERT預處理器(對於NER,是bert_ner_preprocessor類)塊。未經加工的文本(即,「Alex goes to Atlanta」)應該傳遞給bert_ner_preprocessor,以便將記號化為子記號,用它們的索引編碼子記號,並創建記號和段掩碼。token參數本身包含一個句子標誌列表([' Alex ', ' goes ', ' to ', ' Atlanta ']), subword_token帶有特殊的標誌。([' [CLS], ' Alex ', ' goes ', ' to ', ' Atlanta ', ' [SEP]])。subword_tok_id包含令牌id,而subword_mask是一個列表,其中0表示特殊的令牌,1表示句子的令牌([0 1 1 1 1 1 0])。
{
"class_name": "bert_ner_preprocessor",
"vocab_file": "{BERT_PATH}/vocab.txt",
"do_lower_case": false,
"max_seq_length": 512,
"max_subword_length": 15,
"token_maksing_prob": 0.0,
"in": ["x"],
"out": ["x_tokens", "x_subword_tokens",
"x_subword_tok_ids", "pred_subword_mask"]
}
以上是本文想介紹的關於以多語種BERT模型為基礎的NER的全部內容。
留言 點讚 關注
我們一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」