반응형
지난번에 nltk 및 spacy 모듈을 통하여 품사 태깅(POS Tagging) 방법을 다루었던 글에 이어
이번에는 두 모듈로 개체명 태깅(NER Tagging)을 진행하는 방법을 살펴보도록 하겠습니다.
품사 태깅 방법과 관련된 내용은 아래 글을 참고해주세요.
nltk를 활용한 NER Tagging 방법
nltk에서 개체명 태깅을 진행하려면 품사 태깅이 선행되어야 하므로,
이를 포함하여 아래의 코드로 필요한 패키지들을 먼저 설치해야 합니다.
!pip install nltk # 참고 : nltk 모듈 미설치 시
import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')
이후, 문장에 대하여 토큰화 -> 품사 태깅 -> NER 태깅 순서로 진행해주면 되는데,
이를 위한 코드는 다음과 같습니다.
from nltk import word_tokenize, pos_tag, ne_chunk
sentences = "Tom was born in New York, 2020"
result = ne_chunk(pos_tag(word_tokenize(sentences))) # 토큰화 -> 품사 태깅 -> NER 태깅 순서
print(result)
# 출력 결과
(S
(PERSON Tom/NNP)
was/VBD
born/VBN
in/IN
(GPE New/NNP York/NNP)
,/,
2020/CD)
위 예시 문장에서 Tom에는 PERSON 개체명이, New와 York에서는 GPE 개체명이
할당된 것을 확인하실 수 있습니다.
참고로, 개체명 목록은 OntoNotes 5.0의 기준을 따르는데,
아래 문서의 21~22 페이지를 참고해주시면 됩니다.
https://catalog.ldc.upenn.edu/docs/LDC2013T19/OntoNotes-Release-5.0.pdf
반응형
spacy를 활용한 NER Tagging 방법
spacy에서는 모델에 직접 input으로 feed할 수 있는 형태인 BIO 표현을 포함한 NER 태깅을
손쉽게 진행할 수 있습니다.
참고로, BIO 표현은 B는 개체명을 가지기 시작하는 토큰, I는 개체명이지만 시작은 아닌 토큰,
O는 개체명이 아닌 토큰을 의미합니다.
spacy를 활용하여 BIO 표현 및 NER 타입을 토큰마다 출력한 예시 코드는 다음과 같습니다.
!pip install spacy # 참고 : spacy 모듈 미설치 시
import spacy
sentences = "Tom was born in New York, 2020"
nlp = spacy.load("en_core_web_sm")
doc = nlp(sentences)
for token in doc:
print(f'token : {token.text:}, ent_job : {token.ent_iob_}, ent_type : {token.ent_type_}')
'Python > NLP Code' 카테고리의 다른 글
원하는 corpus를 기준으로 토크나이저 학습하기 파이썬 코드 예제 (0) | 2023.09.17 |
---|---|
파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy) (0) | 2022.10.29 |
NLP Question Answering 전처리, 학습 및 성능 평가 코드 예제 (0) | 2022.10.19 |