自然語言處理基礎技術之命名實體識別簡介
宣告:轉載請註明出處,謝謝:https://blog.csdn.net/m0_37306360/article/details/84571654
另外,更多實時更新的個人學習筆記分享,請關注:
知乎:https://www.zhihu.com/people/yuquanle/columns
公眾號:StudyForAI
整理一波關於命名實體識別方面的知識,希望對大家有幫助~~
命名實體識別定義:
-
百度百科定義:命名實體識別(Named Entity Recognition,簡稱NER),又稱作“專名識別”,是指識別文字中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等。
-
維基百科定義:Named-entity recognition (NER) (also known as entity identification, entity chunking and entity extraction) is a subtask of information extraction that seeks to locate and classify named entity mentions in unstructured text into pre-defined categories such as the person names, organizations, locations, medical codes, time expressions, quantities, monetary values, percentages, etc.
-
簡單的講,就是識別自然文字中的實體指稱的邊界和類別。
發展歷史:
-
命名實體識別(Named Entity Recognition)這個術語首次出現在MUC-6(Message Understanding Conferences),這個會議關注的主要問題是資訊抽取(Information Extraction),第六屆MUC除了資訊抽取評測任務還開設了新評測任務即命名實體識別任務。除此之外,其他相關的評測會議包括CoNLL(Conference on Computational Natural Language Learning)、ACE(Automatic Content Extraction)和IEER(Information Extraction-Entity Recognition Evaluation)等。
-
在MUC-6之前,大家主要是關注人名、地名和組織機構名這三類專業名詞的識別。自MUC-6起,後面有很多研究對類別進行了更細緻的劃分,比如地名被進一步細化為城市、州和國家,也有人將人名進一步細分為政治家、藝人等小類。
-
此外,一些評測還擴大了專業名詞的範圍,比如CoNLL某年組織的評測中包含了產品名的識別。一些研究也涉及電影名、書名、專案名、研究領域名稱、電子郵件地址、電話號碼以及生物資訊學領域的專有名詞(如蛋白質、DNA、RNA等)。甚至有一些工作不限定“實體”的型別,而是將其當作開放域的命名實體識別和分類。
常見方法:
早期的命名實體識別方法基本都是基於規則的。之後由於基於大規模的語料庫的統計方法在自然語言處理各個方面取得不錯的效果之後,一大批機器學習的方法也出現在命名實體類識別任務。宗成慶老師在統計自然語言處理一書粗略的將這些基於機器學習的命名實體識別方法劃分為以下幾類:
-
有監督的學習方法:這一類方法需要利用大規模的已標註語料對模型進行引數訓練。目前常用的模型或方法包括隱馬爾可夫模型、語言模型、最大熵模型、支援向量機、決策樹和條件隨機場等。值得一提的是,基於條件隨機場的方法是命名實體識別中最成功的方法。
-
半監督的學習方法:這一類方法利用標註的小資料集(種子資料)自舉學習。
-
無監督的學習方法:這一類方法利用詞彙資源(如WordNet)等進行上下文聚類。
-
混合方法:幾種模型相結合或利用統計方法和人工總結的知識庫。
值得一提的是,由於深度學習在自然語言的廣泛應用,基於深度學習的命名實體識別方法也展現出不錯的效果,此類方法基本還是把命名實體識別當作序列標註任務來做,比較經典的方法是LSTM+CRF、BiLSTM+CRF。
這裡有一個基於tensorflow的實現:https://github.com/shiyybua/NER
一些相關的資料集:
-
CCKS2017開發的中文的電子病例測評相關的資料。
評測任務一:https://biendata.com/competition/CCKS2017_1/
評測任務二:https://biendata.com/competition/CCKS2017_2/ -
CCKS2018開發的音樂領域的實體識別任務。評測任務:https://biendata.com/competition/CCKS2018_2/
-
(CoNLL 2002)Annotated Corpus for Named Entity Recognition。
地址:https://www.kaggle.com/abhinavwalia95/entity-annotated-corpus -
NLPCC2018開放的任務型對話系統中的口語理解評測。地址:http://tcci.ccf.org.cn/conference/2018/taskdata.php
-
一家公司提供的,2000條,網址:資料下載 - BosonNLP, 包含人名、地名、機構名、專有名詞。下載地址:https://bosonnlp.com/dev/resource
命名實體識別工具:
-
Stanford NER:斯坦福大學開發的基於條件隨機場的命名實體識別系統,該系統引數是基於CoNLL、MUC-6、MUC-7和ACE命名實體語料訓練出來的
https://nlp.stanford.edu/software/CRF-NER.shtml
python實現的Github地址:https://github.com/Lynten/stanford-corenlp -
MALLET:麻省大學開發的一個統計自然語言處理的開源包,其序列標註工具的應用中能夠實現命名實體識別。
-
Hanlp:HanLP是一系列模型與演算法組成的NLP工具包,由大快搜索主導並完全開源,目標是普及自然語言處理在生產環境中的應用。支援命名實體識別。
Github地址:https://github.com/hankcs/pyhanlp
官網:http://hanlp.linrunsoft.com/ -
NLTK:NLTK是一個高效的Python構建的平臺,用來處理人類自然語言資料。提供實體識別介面。
Github地址:https://github.com/nltk/nltk
官網:http://www.nltk.org/ -
spaCy:工業級的自然語言處理工具。
Gihub地址:https://github.com/explosion/spaCy
官網:https://spcay.io/ -
Crfsuite:可以載入自己的資料集去訓練實體識別模型。
文件地址:https://sklearn-crfsuite.readthedocs.io/en/latest/?badge=latest
最新研究進展看這裡:
https://github.com/yuquanle/NLP-progress/blob/master/named_entity_recognition.md
參考:
1.統計自然語言處理