基於BERT 的中文數據集下的命名實體識別(NER)

2022-01-01 機器學習AI算法工程


向AI轉型的程式設計師都關注了這個號👇👇👇

機器學習AI算法工程   公眾號:datayx

網上也有很多使用BERT的例子和教程,但是我覺得都不是很完整,有些缺乏注釋對新手不太友好,有些則是問題不同修改的代碼也不同,自己也在路上遇到了不少的坑。所以記錄一下。

項目代碼 獲取方式:

關注微信公眾號 datayx  然後回復  命名實體  即可獲取。

AI項目體驗地址 https://loveai.tech

數據集

tmp 文件夾下

如上圖,對數據集進行了分割,其中source是訓練集中文,target是訓練集的label。

test1 測試集,test_tgt 測試集label。dev 驗證集 dev-lable 驗證集label。

數據格式

注意

BERT分詞器在對字符分詞會遇到一些問題。

比如 輸入叩 問 澳 門 =- =- =- 賀 澳 門 回 歸 進 入 倒 計 時 ,label :O O B-LOC I-LOC O O O O B-LOC I-LOC O O O O O O O

會把輸入的=- 處理成兩個字符,所以會導致label對應不上,需要手動處理一下。比如如下每次取第一個字符的label。其實這個問題在處理英文會遇到,WordPiece會將一個詞分成若干token,所以需要手動處理(這只是一個簡單處理方式)。

其中共設置了10個類別,PAD是當句子長度未達到max_seq_length時,補充0的類別。

CLS是每個句首前加一個標誌[CLS]的類別,SEP是句尾同理。(因為BERT處理句子是會在句首句尾加上這兩個符號。)

代碼

其實BERT需要根據具體的問題來修改相對應的代碼,NER算是序列標註一類的問題,可以算分類問題吧。

然後修改的主要是run_classifier.py部分即可,我把修改下遊任務後的代碼放到了run_NER.py裡。

代碼中除了數據部分的預處理之外,還需要自己修改一下評估函數、損失函數。

訓練

首先下載BERT基於中文預訓練的模型(BERT官方github頁面可下載),存放到BERT_BASE_DIR文件夾下,之後將數據放到NER_DIR文件夾下。即可開始訓練。sh run.sh

實驗結果

總結

其實在讀了BERT的論文後,結合代碼進行下遊任務的微調能夠理解的更深刻。

其實改造下遊任務主要是把自己數據改造成它們需要的格式,然後將輸出類別根據需要改一下,然後修改一下評估函數和損失函數。

如下圖根據具體的下遊任務修改label即可。如下圖的第四個就是在NER上進行修改,

之後會寫一篇Attention is all you need 和 bert論文的詳解,會結合代碼來解釋一下細節,比如Add & Norm是如何實現的,為什麼要Add & Norm。== 感覺不用寫了 bert已經火遍大街了 不重複造輪子了。建議大家直接莽原始碼和論文。

閱讀過本文的人還看了以下文章:

【全套視頻課】最全的目標檢測算法系列講解,通俗易懂!

《美團機器學習實踐》_美團算法團隊.pdf

《深度學習入門:基於Python的理論與實現》高清中文PDF+源碼

2019最新《PyTorch自然語言處理》英、中文版PDF+源碼

《21個項目玩轉深度學習:基於TensorFlow的實踐詳解》完整版PDF+附書代碼

《深度學習之pytorch》pdf+附書源碼

PyTorch深度學習快速實戰入門《pytorch-handbook》

【下載】豆瓣評分8.1,《機器學習實戰:基於Scikit-Learn和TensorFlow》

《Python數據分析與挖掘實戰》PDF+完整源碼

汽車行業完整知識圖譜項目實戰視頻(全23課)

李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材

筆記、代碼清晰易懂!李航《統計學習方法》最新資源全套!

《神經網絡與深度學習》最新2018版中英PDF+源碼

將機器學習模型部署為REST API

FashionAI服裝屬性標籤圖像識別Top1-5方案分享

重要開源!CNN-RNN-CTC 實現手寫漢字識別

yolo3 檢測出圖像中的不規則漢字

同樣是機器學習算法工程師,你的面試為什麼過不了?

前海徵信大數據算法:風險概率預測

【Keras】完整實現『交通標誌』分類、『票據』分類兩個項目,讓你掌握深度學習圖像分類

VGG16遷移學習,實現醫學圖像識別分類工程項目

特徵工程(一)

特徵工程(二) :文本數據的展開、過濾和分塊

特徵工程(三):特徵縮放,從詞袋到 TF-IDF

特徵工程(四): 類別特徵

特徵工程(五): PCA 降維

特徵工程(六): 非線性特徵提取和模型堆疊

特徵工程(七):圖像特徵提取和深度學習

如何利用全新的決策樹集成級聯結構gcForest做特徵工程並打分?

Machine Learning Yearning 中文翻譯稿

螞蟻金服2018秋招-算法工程師(共四面)通過

全球AI挑戰-場景分類的比賽源碼(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(列印收藏)

python+flask搭建CNN在線識別手寫中文網站

中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特徵工程

不斷更新資源

深度學習、機器學習、數據分析、python

 搜索公眾號添加: datayx  

長按圖片,識別二維碼,點關注

機器學習算法資源社群

不斷上傳電子版PDF資料

技術問題求解

 QQ群號: 333972581  

長按圖片,識別二維碼

海淘美妝

相關焦點

  • BERT-BiLSTM-CRF基於BERT預訓練的中文命名實體識別TensorFlow實現
    軟體包現在支持的功能命名實體識別的訓練命名實體識別的服務C/S繼承優秀開源軟體:bert_as_service(hanxiao)的BERT所有服務基於bert命名行訓練命名實體識別模型:安裝完bert-base後,會生成兩個基於命名行的工具,其中bert-base-ner-train支持命名實體識別模型的訓練,你只需要指定訓練數據的目錄,BERT
  • NLP - 基於 BERT 的中文命名實體識別(NER)
    作者:艾力亞爾(微博 @艾力亞爾),暴風大腦研究院研發工程師,現負責電視端的語音助手相關工作。
  • Keras-BERT-NER albert、roberta、bert、wwm四個模型如何去做命名實體識別任務
    GitHub項目地址:https://github.com/liushaoweihua/keras-bert-ner中文命名實體識別任務下的Keras解決方案,下遊模型支持BiLSTM-CRF/BiGRU-CRF/IDCNN-CRF/single-CRF,預訓練語言模型採用BERT系列(谷歌的預訓練語言模型:支持BERT
  • 流水的NLP鐵打的NER:命名實體識別實踐與探索
    前言最近在做命名實體識別(Named Entity Recognition, NER)的工作,也就是序列標註(Sequence Tagging),老 NLP task 了,就是從一段文本中抽取到找到任何你想要的東西
  • albert-chinese-ner使用預訓練語言模型ALBERT做中文NER
    本身更具有意義,恰逢中文預訓練模型出來,還是按照之前的數據來做NER方面的fine-tune項目相關代碼獲取:關注微信公眾號 datayx  然後回復  命名識別  即可獲取。and Comparisionalbert-chinese-ner下載albert中文模型,這裡使用的是base將模型文件夾重命名為albert_base_zh
  • 使用CRF++實現命名實體識別(NER)
    X和Y有相同的圖結構的線性鏈條件隨機場  命名實體識別(Named Entity Recognition,簡稱NER)是信息提取、問答系統、句法分析、機器翻譯等應用領域的重要基礎工具,在自然語言處理技術走向實用化的過程中佔有重要地位。一般來說,命名實體識別的任務就是識別出待處理文本中三大類(實體類、時間類和數字類)、七小類(人名、機構名、地名、時間、日期、貨幣和百分比)命名實體。
  • 命名實體識別的兩種方法
    目錄    一.什麼是命名實體識別    二.基於NLTK的命名實體識別    三.基於Stanford的NER    通常包括兩部分:(1)實體邊界識別;(2) 確定實體類別(人名、地名、機構名或其他)。命名實體識別通常是知識挖掘、信息抽取的第一步,被廣泛應用在自然語言處理領域。接下來,我們將介紹常用的兩種命名實體識別的方法。
  • NLP入門(八)使用CRF++實現命名實體識別(NER)
    X和Y有相同的圖結構的線性鏈條件隨機場  命名實體識別(Named Entity Recognition,簡稱NER)是信息提取、問答系統、句法分析、機器翻譯等應用領域的重要基礎工具,在自然語言處理技術走向實用化的過程中佔有重要地位。一般來說,命名實體識別的任務就是識別出待處理文本中三大類(實體類、時間類和數字類)、七小類(人名、機構名、地名、時間、日期、貨幣和百分比)命名實體。
  • NLP 詳解教程:使用 Spacy 和 Python 實現命名實體識別 (NER)
    FlyAI文獻翻譯英文原文:NLP: Named Entity Recognition (NER) with Spacy and Python命名實體識別
  • 基於Bert-NER構建特定領域中文信息抽取框架
    (Jieba、Pyltp、PkuSeg、THULAC)中文分詞和詞性標註工具性能對比基於Stanford coreNLP的指代消解模型命名實體識別(Name Entity Recognition)是獲取三元組中的實體的關鍵。
  • 中文命名實體識別有困難?在Amazon SageMaker上看如何基於TensorFlow來解決~
    利用業內數據構建知識圖譜是很多客戶正在面臨的問題,其中中文命名實體識別(Named Entity Recognition,簡稱 NER)是構建知識圖譜的一個重要環節。我們在與客戶的交流中發現,現有的 NER 工具(比如 Jiagu)對於特定領域的中文命名實體識別效果難以滿足業務需求,而且這些工具很難使用自定義數據集訓練。因此客戶迫切想使用業內最先進的算法在行業內數據集上進行訓練,以改進現有 NER 工具的不足。本文將介紹如何使用 Amazon SageMaker 運行基於 TensorFlow 的中文命名實體識別。
  • 基於Bert-NER構建特定領域的中文信息抽取框架(上)
    本文對比了基於 Bert 的命名實體識別框架和普通的序列標註框架在模型訓練、實體預測等方面的效果,並對基於小數據集的訓練效果做出實驗驗證。 Word Embedding-BiLSTM-CRF 眾多實驗表明,該結構屬於命名實體識別中最主流的模型,代表的工具有:NeuroNER)。
  • NLP入門從入門到實戰 實體命名識別 +中文預處理之繁簡體轉換及獲取拼音
    >二 NLP入門 命名實體識別(NER)公眾號獲取源碼數據集,一起AI:在日常的中文NLP中,經常會涉及到中文的繁簡體轉換以及拼音的標註等問題,本文將介紹這兩個方面的實現。7:foolnltk可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞 基於BiLSTM模型訓練而成 包含分詞,詞性標註,實體識別, 都有比較高的準確率 用戶自定義詞典 可訓練自己的模型 批量處理上面這幾個我都比較喜歡的,用起來也很方便,先介紹這麼多,後續再分析使用過程以及方法。
  • 復旦大學李孝男博士:結合詞典的中文命名實體識別
    點擊上方藍色小字,關注並星標,更多乾貨,第一時間送達近年來,將詞典信息加入模型被證明對中文命名實體識別任務很有效
  • 運用多源分詞信息助力中文NER 邱震宇
    "ner_label":我 們 變 而 以 書 會 友 , 以 書 結 緣 , 把 歐 美 、 港 臺 流 行 的 食 品 類 圖 譜 、 畫 冊 、 工 具 書 匯 集 一 堂 。另外,我使用的數據集仍然是之前使用的MSRA的中文NER數據集。多頭是否適用所有場景?我在最初實現的時候,確實是使用了多頭注意力機制,然而實現出來的效果確實不佳。原始的BERT+softmax模型在test數據集上大概有0.943的f1分數(整合了實體詞+實體類型的span-level f1)。
  • 中文命名實體識別算法 Lattice LSTM
    中文命名實體識別 (NER) 算法按照輸入的類型,可以大致分為 Character-based (字符) 和 Word-based (單詞) 兩種。這兩種方法都存在一些缺陷,Character-based 不能利用詞彙和詞彙序列信息;Word-based 需要分詞,分詞的錯誤會對 NER 結果產生較大影響。
  • Keras入門(七)使用Flask+Keras-bert構建模型預測服務
    在文章NLP(三十四)使用keras-bert實現序列標註任務中,我們介紹了如何使用keras-bert模塊,利用BERT中文預訓練模型來實現序列標註任務的模型訓練、模型評估和模型預測。其中,模型預測是通過加載生成的h5文件來實現的。  本文將會介紹如何使用Flask構建模型預測的HTTP服務。
  • 用 Keras+LSTM+CRF 的實踐命名實體識別NER
    文本分詞、詞性標註和命名實體識別都是自然語言處理領域裡面很基礎的任務,他們的精度決定了下遊任務的精度,其實在這之前我並沒有真正意義上接觸過命名實體識別這項工作,雖然說讀研期間斷斷續續也參與了這樣的項目,但是畢業之後始終覺得一知半解的感覺,最近想重新撿起來,以實踐為學習的主要手段來比較系統地對命名實體識別這類任務進行理解、學習和實踐應用。
  • 一文讀懂命名實體識別
    02發展歷史命名實體識別這個術語首次出現在 MUC-6(Message Understanding Conferences),這個會議關注的主要問題是信息抽取(Information Extraction),第六屆 MUC 除了信息抽取評測任務還開設了新評測任務即命名實體識別任務
  • 當RNN神經網絡遇上NER(命名實體識別):雙向LSTM,條件隨機場(CRF),層疊Stack LSTM, 字母嵌入
    作者:David9地址:http://nooverfit.com/命名實體識別 (NER) 是語義理解中的一個重要課題