[파이썬][AI Chatbot] 개체명 인식(Named Entity Recognition, NER) 개념과 예제

개체명 인식(Named Entity Recognition, NER)은 텍스트에서 중요한 개체(Entity)를 인식하고 분류하는 작업을 말합니다. 이 중요한 개체는 사람의 이름, 날짜, 장소, 조직명 등과 같은 명명된 엔터티입니다. NER은 자연어 처리의 중요한 기술로, 텍스트에서 핵심 정보를 추출하고 구조화하는 데 사용됩니다.

개체명 인식의 예시:

원본 문장: “Apple Inc. was founded by Steve Jobs in Cupertino.”

NER 결과:

NER는 주어진 텍스트에서 명사구를 식별하고, 각 명사구가 어떤 유형인지를 분류하여 텍스트 내에서 중요한 개체를 인식합니다.

예제 코드:

Python의 NLTK 라이브러리와 SpaCy 라이브러리를 사용하여 개체명 인식을 수행하는 예제 코드를 보겠습니다.

NLTK 예제:

import nltk
from nltk import word_tokenize, pos_tag, ne_chunk

nltk.download('maxent_ne_chunker')
nltk.download('words')

sentence = "Apple Inc. was founded by Steve Jobs in Cupertino."
tokens = word_tokenize(sentence)
tagged = pos_tag(tokens)
ner_result = ne_chunk(tagged)
print(ner_result)` 

SpaCy 예제:

import spacy

nlp = spacy.load("en_core_web_sm")
sentence = "Apple Inc. was founded by Steve Jobs in Cupertino."
doc = nlp(sentence)
for ent in doc.ents:
    print(ent.text, ent.label_)` 

두 예제 모두 주어진 문장에서 조직명, 인물명, 지역명 등의 중요한 개체를 인식하고 레이블을 부여합니다.

출력 예시:

(S Apple/NNP Inc./NNP)
was/VBD
founded/VBN
by/IN
(S (PERSON Steve/NNP Jobs/NNP))
in/IN
(S (GPE Cupertino/NNP))` 

출력 결과는 개체명 인식된 부분이 특별한 태그로 표시되어 있음을 보여줍니다. SpaCy를 사용하는 경우에는 각 개체의 레이블도 함께 출력됩니다.

개체명 인식은 정보 추출 및 문서 분석에서 중요한 역할을 하며, 실제 응용 분야에서 많이 활용됩니다.