中文命名實體識別工具(NER)哪家強?

2021-02-15 AINLP

自去年以來,在AINLP公眾號上陸續給大家提供了自然語言處理相關的基礎工具的在線測試接口,使用很簡單,關注AINLP公眾號,後臺對話關鍵詞觸發測試,例如輸入 「中文分詞 我愛自然語言處理」,「詞性標註 我愛NLP」,「情感分析 自然語言處理愛我","Stanza 52nlp" 等,具體可參考下述文章:

史丹福大學NLP組Python深度學習自然語言處理工具Stanza試用

既然中文分詞、詞性標註已經有了,那下一步很自然想到的是命名實體識別(NER,Named-entity recognition)工具了,不過根據我目前了解到的情況,開源的中文命名實體工具並不多,這裡主要指的是一些成熟的自然語言處理開源工具,不是github上一些學習性質的代碼。目前明確有NER標記的包括史丹福大學的NLP組的Stanza,百度的Paddle Lac,哈工大的LTP,而其他這些測試過的開源NLP基礎工具,需要從詞性標註結果中提取相對應的專有名詞,也算是一種折中方案。

在之前這些可測的工具中,除了史丹福大學的Stanza和CoreNLP有一套詞性標記外,LTP使用的是863詞性標註集,其他包括Jieba,SnowNLP,PKUSeg,Thulac,HanLP,FoolNLTK,百度Lac等基礎工具的詞性標註集主要是以人民日報標註語料中的北京大學詞性標註集(40+tags)為藍本:

代碼名稱幫助記憶的詮釋Ag形語素形容詞性語素。形容詞代碼為 a ,語素代碼 g 前面置以 A。a形容詞取英語形容詞 adjective 的第 1 個字母。ad副形詞直接作狀語的形容詞。形容詞代碼 a 和副詞代碼 d 並在一起。an名形詞具有名詞功能的形容詞。形容詞代碼 a 和名詞代碼 n 並在一起。b區別詞取漢字「別」的聲母。c連詞取英語連詞 conjunction 的第 1 個字母。Dg副語素副詞性語素。副詞代碼為 d ,語素代碼 g 前面置以 D。d副詞取 adverb 的第 2 個字母 ,因其第 1 個字母已用於形容詞。e嘆詞取英語嘆詞 exclamation 的第 1 個字母。f方位詞取漢字「方」 的聲母。g語素絕大多數語素都能作為合成詞的「詞根」,取漢字「根」的聲母。由於實際標註時 ,一定
標註其子類 ,所以從來沒有用到過 g。h前接成分取英語 head 的第 1 個字母。i成語取英語成語 idiom 的第 1 個字母。j簡稱略語取漢字「簡」的聲母。k後接成分
l習用語習用語尚未成為成語 ,有點「臨時性」,取「臨」的聲母。m數詞取英語 numeral 的第 3 個字母 ,n ,u 已有他用。Ng名語素名詞性語素。名詞代碼為 n ,語素代碼 g 前面置以 N。n名詞取英語名詞 noun 的第 1 個字母。nr人名名詞代碼 n 和「人(ren) 」的聲母並在一起。ns地名名詞代碼 n 和處所詞代碼 s 並在一起。nt機構團體「團」的聲母為 t,名詞代碼 n 和 t 並在一起。nx非漢字串
nz其他專名「專」的聲母的第 1 個字母為 z,名詞代碼 n 和 z 並在一起。o擬聲詞取英語擬聲詞 onomatopoeia 的第 1 個字母。p介詞取英語介詞 prepositional 的第 1 個字母。q量詞取英語 quantity 的第 1 個字母。r代詞取英語代詞 pronoun 的第 2 個字母,因 p 已用於介詞。s處所詞取英語 space 的第 1 個字母。Tg時語素時間詞性語素。時間詞代碼為 t,在語素的代碼 g 前面置以 T。t時間詞取英語 time 的第 1 個字母。u助詞取英語助詞 auxiliary 的第 2 個字母,因 a 已用於形容詞。Vg動語素動詞性語素。動詞代碼為 v。在語素的代碼 g 前面置以 V。v動詞取英語動詞 verb 的第一個字母。vd副動詞直接作狀語的動詞。動詞和副詞的代碼並在一起。vn名動詞指具有名詞功能的動詞。動詞和名詞的代碼並在一起。w標點符號
x非語素字非語素字只是一個符號,字母 x 通常用於代表未知數、符號。y語氣詞取漢字「語」的聲母。z狀態詞取漢字「狀」的聲母的前一個字母。

其中HanLp增加了更細粒度的詞性標註集,具體可參考:

https://www.hankcs.com/nlp/part-of-speech-tagging.html

HanLP使用的HMM詞性標註模型訓練自2014年人民日報切分語料,隨後增加了少量98年人民日報中獨有的詞語。所以,HanLP詞性標註集兼容《ICTPOS3.0漢語詞性標記集》,並且兼容《現代漢語語料庫加工規範——詞語切分與詞性標註》。

另外百度詞法分析工具Lac使用的詞性標註集中特別加了一套強相關的專名類別標籤:

詞性和專名類別標籤集合如下表,其中詞性標籤24個(小寫字母),專名類別標籤4個(大寫字母)。這裡需要說明的是,人名、地名、機名和時間四個類別,在上表中存在兩套標籤(PER / LOC / ORG / TIME 和 nr / ns / nt / t),被標註為第二套標籤的詞,是模型判斷為低置信度的人名、地名、機構名和時間詞。開發者可以基於這兩套標籤,在四個類別的準確、召回之間做出自己的權衡。

哈工大LTP的命名實體標註集沒有提取「時間」,具體參考如下:

https://ltp.readthedocs.io/zh_CN/latest/appendix.html

NE識別模塊的標註結果採用O-S-B-I-E標註形式,其含義為

標記含義O這個詞不是NES這個詞單獨構成一個NEB這個詞為一個NE的開始I這個詞為一個NE的中間E這個詞位一個NE的結尾

LTP中的NE 模塊識別三種NE,分別如下:

基於上述觀察,我決定採用這種方案做中文命名實體工具測試接口:對於斯坦福Stanza的NER結果直接保留,對於 Baidu Lac 結果則保留強置信度的人名(PER)、地名(LOC)、機構名(ORG)、時間(TIME)提取結果,對於哈工大LTP的NER結果做個人名(Nh=>PER)、地名(Ns=>LOC)和機構名(Ni=>ORG)的映射,對於其他幾個工具,去除斯坦福的老NLP工具CoreNLP,其他NLP工具則保留nr、ns、nt、t、nz這幾個提取工具,並做了標記映射人名(nr=>PER),地名(ns=>LOC),機構名(nt=>ORG),時間(t=>TIME)。下面是幾組測試結果,歡迎關注AINLP公眾號試用,結果僅供參考,畢竟除了斯坦福Stanza、Baidu Lac以及哈工大LTP外,其他幾個工具的「NER命名實體識別」功能是「強加」的,在實際使用中,可以根據需求採用:

推薦閱讀

AINLP年度閱讀收藏清單

學自然語言處理,其實更應該學好英語

史丹福大學NLP組Python深度學習自然語言處理工具Stanza試用

DistilBERT Understanding

太贊了!Springer面向公眾開放電子書籍,附65本數學、編程、機器學習、深度學習、數據挖掘、數據科學等書籍連結及打包下載

數學之美中盛讚的 Michael Collins 教授,他的NLP課程要不要收藏?

自動作詩機&藏頭詩生成器:五言、七言、絕句、律詩全了

模型壓縮實踐系列之——bert-of-theseus,一個非常親民的bert壓縮方法

這門史丹福大學自然語言處理經典入門課,我放到B站了

徵稿啟示 | 稿費+GPU算力+星球嘉賓一個都不少

關於AINLP

AINLP 是一個有趣有AI的自然語言處理社區,專注於 AI、NLP、機器學習、深度學習、推薦算法等相關技術的分享,主題包括文本摘要、智能問答、聊天機器人、機器翻譯、自動生成、知識圖譜、預訓練模型、推薦系統、計算廣告、招聘信息、求職經驗分享等,歡迎關注!加技術交流群請添加AINLPer(id:ainlper),備註工作/研究方向+加群目的。

相關焦點

  • NLP入門(四)命名實體識別(NER)
    本文將會簡單介紹自然語言處理(NLP)中的命名實體識別(NER)。  命名實體識別(Named Entity Recognition,簡稱NER)是信息提取、問答系統、句法分析、機器翻譯等應用領域的重要基礎工具,在自然語言處理技術走向實用化的過程中佔有重要地位。
  • 初學者|一文讀懂命名實體識別
    命名實體識別(Named Entity Recognition,簡稱NER),又稱作「專名識別」,是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等。簡單的講,就是識別自然文本中的實體指稱的邊界和類別。
  • 命名實體識別的兩種方法
    總結 一 、什麼是命名實體識別?命名實體識別(Named Entity Recognition,簡稱NER),又稱作「專名識別」,是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等。
  • NLP 詳解教程:使用 Spacy 和 Python 實現命名實體識別 (NER)
    FlyAI文獻翻譯英文原文:NLP: Named Entity Recognition (NER) with Spacy and Python命名實體識別
  • NLP入門從入門到實戰 實體命名識別 +中文預處理之繁簡體轉換及獲取拼音
    >二 NLP入門 命名實體識別(NER)公眾號獲取源碼數據集,一起AI:在日常的中文NLP中,經常會涉及到中文的繁簡體轉換以及拼音的標註等問題,本文將介紹這兩個方面的實現。本文將會簡單介紹自然語言處理(NLP)中的命名實體識別(NER)。命名實體識別是信息提取、問答系統、句法分析、機器翻譯等應用領域的重要基礎工具,在自然語言處理技術走向實用化的過程中佔有重要地位。一般來說,命名實體識別的任務就是識別出待處理文本中三大類(實體類、時間類和數字類)、七小類(人名、機構名、地名、時間、日期、貨幣和百分比)命名實體。
  • Spark NLP 中使用 BERT 的命名實體識別 (NER)
    NER 是信息提取的一個子任務,旨在將非結構化文本中提到的命名實體定位和分類為預定義的類別,例如人名、組織、位置、醫療代碼、時間表達式、數量、貨幣價值、百分比等。我們將要實現的模型的靈感來自於 NER 以前最先進的模型:Chiu 和 Nicols,使用雙向 LSTM-CNN 命名實體識別, 並且它已經嵌入到 Spark NLP NerDL Annotator 中。這是一種新穎的神經網絡架構,可使用混合雙向 LSTM 和 CNN 架構自動檢測單詞和字符級特徵,無需進行大多數特徵工程。
  • 基於結構化感知機的詞性標註與命名實體識別框架
    上周就關於《結構化感知機標註框架的內容》已經分享了一篇《分詞工具Hanlp基於感知機的中文分詞框架》,本篇接上一篇內容,繼續分享詞性標註與命名實體識別框架的內容。命名實體識別目前本系統默認支持人名(nr),地名(ns),機構名(nt)三種命名實體的識別,用戶可以重載NERTrainer的createTagSet來支持任意NER類型。
  • 中文命名實體識別有困難?在Amazon SageMaker上看如何基於TensorFlow來解決~
    利用業內數據構建知識圖譜是很多客戶正在面臨的問題,其中中文命名實體識別(Named Entity Recognition,簡稱 NER)是構建知識圖譜的一個重要環節。我們在與客戶的交流中發現,現有的 NER 工具(比如 Jiagu)對於特定領域的中文命名實體識別效果難以滿足業務需求,而且這些工具很難使用自定義數據集訓練。因此客戶迫切想使用業內最先進的算法在行業內數據集上進行訓練,以改進現有 NER 工具的不足。本文將介紹如何使用 Amazon SageMaker 運行基於 TensorFlow 的中文命名實體識別。
  • 流水的NLP鐵打的NER:命名實體識別實踐與探索
    21github: https://github.com/wavewangyue編輯:yuquanle前言最近在做命名實體識別就這樣還是先放結論命名實體識別雖然是一個歷史悠久的老任務了,但是自從2015年有人使用了BI-LSTM-CRF模型之後,這個模型和這個任務簡直是郎才女貌,天造地設,輪不到任何妖怪來反對。直到後來出現了BERT。在這裡放兩個問題:2015-2019年,BERT出現之前4年的時間,命名實體識別就只有 BI-LSTM-CRF 了嗎?
  • 【NLP】流水的NLP鐵打的NER:命名實體識別實踐與探索
    作者:王嶽王院長知乎:https://www.zhihu.com/people/wang-yue-40-21github: https://github.com/wavewangyue編輯:yuquanle前言最近在做命名實體識別(Named Entity Recognition
  • 復旦大學李孝男博士:結合詞典的中文命名實體識別
    點擊上方藍色小字,關注並星標,更多乾貨,第一時間送達近年來,將詞典信息加入模型被證明對中文命名實體識別任務很有效
  • 【NLP-NER】命名實體識別中最常用的兩種深度學習模型
    命名實體識別(Named Entity Recognition,NER)是NLP中一項非常基礎的任務。NER是信息提取、問答系統、句法分析、機器翻譯等眾多NLP任務的重要基礎工具。上一期我們介紹了NER的基本概念,大致介紹了NER常用的模型。本期我們詳細介紹目前NER最常用的兩種深度學習模型,LSTM+CRF和Dilated-CNN。
  • 近期做NER的反思
    往期回顧:NLP中有很多任務,但我其實花的集中時間最多的還是ner,也就是命名實體識別,希望這塊能成為自己最能拿出手的技能,慢慢成長吧。近期NER自己嘗試做很多提升開發效率和準招提升的調研,速度上是能有所提升,但是總會出現各種問題,這裡總結一下,這些問題估計在其他任務中也會經常出現,也供大家一起思考和進步。
  • 一文讀懂命名實體識別
    甚至有一些工作不限定「實體」的類型,而是將其當做開放域的命名實體識別和分類。03常見方法早期的命名實體識別方法基本都是基於規則的。之後由於基於大規模的語料庫的統計方法在自然語言處理各個方面取得不錯的效果之後,一大批機器學習的方法也出現在命名實體類識別任務。
  • 用Keras+LSTM+CRF的實踐命名實體識別NER
    文本分詞、詞性標註和命名實體識別都是自然語言處理領域裡面很基礎的任務,他們的精度決定了下遊任務的精度,其實在這之前我並沒有真正意義上接觸過命名實體識別這項工作,雖然說讀研期間斷斷續續也參與了這樣的項目,但是畢業之後始終覺得一知半解的感覺,最近想重新撿起來,以實踐為學習的主要手段來比較系統地對命名實體識別這類任務進行理解
  • 中文命名實體識別算法 Lattice LSTM
    中文命名實體識別 (NER) 算法按照輸入的類型,可以大致分為 Character-based (字符) 和 Word-based (單詞) 兩種。基於字符和基於單詞的 LSTM 模型如上圖所示,中文命名實體識別 NER 主要有 Character-based (基於字符) 方法和 Word-based (基於單詞) 方法:基於單詞的方法首先會利用分詞模型對句子分詞
  • 當RNN神經網絡遇上NER(命名實體識別):雙向LSTM,條件隨機場(CRF),層疊Stack LSTM, 字母嵌入
    作者:David9地址:http://nooverfit.com/命名實體識別 (NER) 是語義理解中的一個重要課題
  • 用膨脹卷積進行命名實體識別 NER
    BiLSTM+CRF 是命名實體識別中最為流行的模型,但是 LSTM 需要按順序處理輸入的序列,速度比較慢。而採用 CNN 可以更高效的處理輸入序列,本文介紹一種使用膨脹卷積進行命名實體識別的方法 IDCNN,通過膨脹卷積可以使模型接收更長的上下文信息。
  • 利用Lattice LSTM的最優中文命名實體識別方法
    作者:Yue Zhang、Jie Yang機器之心編譯參與:路、王淑婷近日,來自新加坡科技設計大學的研究者在 arXiv 上發布了一篇論文,介紹了一種新型中文命名實體識別方法作為信息抽取的一項基本任務,命名實體識別(NER)近年來一直受到研究人員的關注。該任務一直被作為序列標註問題來解決,其中實體邊界和類別標籤被聯合預測。
  • 【NLP】一文了解命名實體識別
    MUC 之後的ACE將命名實體中的機構名和地名進行了細分,增加了地理-政治實體和設施兩種實體,之後又增加了交通工具和武器。CoNLL-2002、CoNLL-2003 會議上將命名實體定義為包含名稱的短語,包括人名、地名、機構名、時間和數量,基本沿用了 MUC 的定義和分類,但實際的任務主要是識別人名、地名、機構名和其他命名實體 。