지난번에 nltk 및 spacy 모듈을 통하여 품사 태깅(POS Tagging) 방법을 다루었던 글에 이어
이번에는 두 모듈로 개체명 태깅(NER Tagging)을 진행하는 방법을 살펴보도록 하겠습니다.
품사 태깅 방법과 관련된 내용은 아래 글을 참고해주세요.
파이썬 품사 태깅(POS Tagging) 방법 정리(nltk, spacy)
파이썬에서 각 단어 토큰의 품사 종류를 찾는 pos tagging을 nltk와 spacy 모듈을 통하여 진행하는 방법에 대하여 정리해보도록 하겠습니다. nltk를 활용한 POS Tagging 방법 먼저, nltk 모듈 설치가 진행되
jimmy-ai.tistory.com
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 |