AI

자연어처리 : Tagging Work : NER (Named Entity Recognition)

월곡동로봇팔 2020. 3. 23. 14:41

정의

개체명인식 (Named Entity Recognition)은 말 그대로 단어가 " 어떤 이름을 가진 개체로 인식 " 하는것을 말한다.

그 단어가 어떤 유형의 단어를 뜻하는지를 말한다.

 

개체명인식은 보통 텍스트의 전처리가 끝난 이후에 적용된다. 

 

NLTK를 이용한 개체명 인식(Named Entity Recognition using NTLK)

NLTK에서는 개체명 인식기(NER chunker)를 지원하고 있다. 

from nltk import word_tokenize, pos_tag, ne_chunk
sentence = "James is working at Disney in London" 
sentence=pos_tag(word_tokenize(sentence)) print(sentence) 
# 토큰화와 품사 태깅을 동시 수행 

[('James', 'NNP'), ('is', 'VBZ'), ('working', 'VBG'), ('at', 'IN'), 
('Disney', 'NNP'), ('in', 'IN'), ('London', 'NNP')] 

sentence=ne_chunk(sentence) print(sentence) # 개체명 인식 

(S 
  (PERSON James/NNP) 
  is/VBZ 
  working/VBG 
  at/IN 
  (ORGANIZATION Disney/NNP) 
  in/IN 
  (GPE London/NNP))

ne_chunk는 개체명을 태깅하기 위해서 앞서 품사 태깅(pos_tag)이 수행되어야 한다.

위의 결과에서 James는 PERSON(사람), Disney는 조직(ORGANIZATION), London은 위치(GPE)라고 정상적으로 개체명 인식이 수행된 것을 볼 수 있다.

 

ne_chunk를 수정한다면, 우선 품사 태깅을 해두고, 이를 내가 원하는 단어들을 맞는 단어로 개체명을 묶어서 할 수 있다.