命名實體識別從數據集到算法實現


命名實體識別(Named Entity Recognition, NER)是 NLP 的基礎任務,指從文本中識別出命名性指稱項,為關系抽取等任務做鋪墊。狹義上,是識別出人名、地名和組織機構名這三類命名實體(時間、貨幣名稱等構成規律明顯的實體類型可以用正則等方式識別)。當然,在特定領域中,會相應地定義領域內的各種實體類型。目前的主流工作,是將 NER當做深度學習任務來做,所以,我們需要大量的、高質量的數據。

公開數據集

首先讓我們來看看常見公開數據集

CoNLL 2003(https://www.clips.uantwerpen.be/conll2003/ner/

這個數據集包括1393篇英語新聞文章和909篇德語新聞文章。英語語料庫是免費的,德國語料庫需要收錢(75美元)。英語語料實際上是RCV1(Reuters Corpus, Volume 1, https://trec.nist.gov/data/reuters/reuters.html), 路透社早些年公開的一些數據集。你需要填個使用申請表(包含組織和個人兩種類型), 然后就可以使用了。

CoNLL2003中, 實體被標注為四種類型:

  • LOC (location, 地名)

  • ORG (organisation, 組織機構名)

  • PER (person, 人名)

  • MISC (miscellaneous, 其他)

一條標注數據的組織形式如下:

[word][POS tag][chunk tag][NER tag]

比如:

U.N. NNP I-NP I-ORG 
official NN I-NP O 
Ekeus NNP I-NP I-PER 
heads VBZ I-VP O 
for IN I-PP O 
Baghdad NNP I-NP I-LOC 
. . O O

更加詳細的關於標注數據的介紹, 見當時官方給出的一篇文章 http://www.aclweb.org/anthology/W03-0419

OntoNotes 5.0 / CoNNLL 2012 (https://catalog.ldc.upenn.edu/ldc2013t19)

OntoNotes 5.0由 1745k 英語、900k 中文和300k 阿拉伯語文本數據組成,OntoNotes 5.0的數據來源也多種多樣, 有電話對話、新聞通訊社、廣播新聞、廣播對話和博客。實體被標注為【PERSON】、【ORGANIZATION】和【LOCATION】等18個類別, 詳情見https://catalog.ldc.upenn.edu/docs/LDC2013T19/OntoNotes-Release-5.0.pdf。 你只需要在這個網站注冊一下https://catalog.ldc.upenn.edu/signup

 

還有很多其他公開數據集,包括NLPBA2014, Enron Emails 等等, 這里就不做詳細介紹了, 大家可以 google 一下。

標注方法

NER 標注方法有很多種, 這里主要介紹3種最常見。

IOB 標注法

IOB 標注法, 是 CoNLL 2003 采用的標注法, I 表示 inside, O 表示 Outside, B 表示 Begin。而標注的 label是 I-XXX 的, 表示這個字符, 在 XXX類命名實體的內部(inside)。B用於標記一個命名實體的開始。

比如:

Tom B-PER
hanks I-PER
is O
my O
name O

BIOES

這是在 IOB方法上,擴展出的一個更復雜,但更完備的標注方法。其中 B表示這個詞處於一個實體的開始(Begin), I 表示內部(inside), O 表示外部(outside), E 表示這個詞處於一個實體的結束為止, S 表示,這個詞是自己就可以組成一個實體(Single)

BIOES 是目前最通用的命名實體標注方法。

Markup

Makeup 是 OntoNotes 使用的標注方法, 思路比較簡單, XML, 比如:

ENAMEX TYPE=”ORG”>DisneyENAMEX> is a global brand .

它用標簽把 命名實體框出來, 然后,在 TYPE 上, 設置相應的類型。

 

當然, 還有很多其他的標注方法, 比如 IO, BMEWO 等等,感興趣的讀者可以 google一下。

 

模型

目前業界比較常用的模型,是 LSTM + CRF。 這這類模型中, NCRF++算法, 是目前最好的 NER 算法, 發表在 COLLING 2018上,論文見 https://arxiv.org/abs/1806.04470 。NCRF++在它的文章中報告其在 CoNLL2003 上能達到91.35的 F1。

框架

NCRF++的整體框架如下:

 

 

 

 

 

它支持 BIO(注意,BIO和 IOB 有點區別), BIOES 兩種標注模式。因為 CoNLL2003 太過久遠,一般將其轉換到新的標注格式上來,轉換方法見:https://github.com/jiesutd/NCRFpp/blob/master/utils/tagSchemeConverter.py

表現

NCRF++是目前 state-of-the-art的命名實體識別方案:

ID Model Nochar CharLSTM CharCNN
1 WordLSTM 88.57 90.84 90.73
2 WordLSTM+CRF 89.45 91.20 91.35
3 WordCNN 88.56 90.46 90.30
4 WordCNN+CRF 88.90 90.70 90.43
速度

NCRF++的速度表現也非常優異, 在使用全批處理的情況下, 在單個1080 顯卡上, 訓練速度能到到1000句話每秒,解碼速度能達到2000句話每秒。

 

目前 NCRF++ 已經開源(https://github.com/jiesutd/NCRFpp)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM