Named Entity Recognition (NER)
개체명 인식(NER)은 텍스트에서 사람, 조직, 장소, 날짜, 금액의 이름을 찾아 각 항목에 개체 유형을 지정합니다.
개체명 인식(NER)은 실제 세계의 대상을 가리키는 텍스트 구간을 찾아 사람, 조직, 장소, 날짜 또는 금액과 같은 유형으로 각 구간에 레이블을 지정하는 자연어 처리(NLP) 작업입니다. "Marie Curie taught at the University of Paris from 1906"이라는 문장에서 NER 모델은 "Marie Curie"를 사람, "University of Paris"를 조직, "1906"을 날짜로 표시합니다. 이렇게 하면 이메일, 보고서, 계약서, 녹취록을 검색 엔진, 지식 그래프, 분석 도구 및 개인정보 보호 도구가 사용할 수 있는 구조화된 레코드로 변환할 수 있습니다. 1990년대의 Message Understanding Conferences를 통해 NER는 표준 평가 작업으로 자리 잡았으며, CoNLL-2003 공동 과제에서는 벤치마크로 여전히 사용되는 사람, 장소, 조직, 기타의 네 가지 유형을 정립했습니다. OntoNotes 5.0과 같은 더 큰 체계에서는 날짜, 수량, 제품, 이벤트를 포함한 18개 유형을 정의합니다.
NER 작동 방식#
NER는 일반적으로 시퀀스 레이블링 문제로 다룹니다. 토크나이저가 텍스트를 토큰으로 분리하고, 모델은 BIO 체계에 따라 각 토큰에 태그를 할당합니다. B-은 개체의 시작을, I-는 개체 내부의 토큰을, O은 어떤 개체에도 속하지 않는 토큰을 표시하므로 "University of Paris"와 같은 여러 단어로 된 이름을 하나로 유지할 수 있습니다. 다음 코드는 모델이 예측한 태그를 개체 구간으로 변환합니다:
# Token-level BIO tags, as predicted by an NER model for one sentence
tokens = ["Marie", "Curie", "taught", "at", "the", "University", "of", "Paris", "from", "1906", "."]
tags = ["B-PER", "I-PER", "O", "O", "O", "B-ORG", "I-ORG", "I-ORG", "O", "B-DATE", "O"]
# Merge each B- tag with the I- tags that follow it into one entity span
entities = []
for token, tag in zip(tokens, tags):
if tag.startswith("B-"):
entities.append([token, tag[2:]])
elif tag.startswith("I-") and entities and entities[-1][1] == tag[2:]:
entities[-1][0] += f" {token}"
print(entities)출력은 다운스트림 시스템이 저장하고 조회하는 구조화된 결과인 [['Marie Curie', 'PER'], ['University of Paris', 'ORG'], ['1906', 'DATE']]입니다.
태그를 예측하는 모델은 지난 30년 동안 변화해 왔습니다. 초기 시스템은 사람이 작성한 규칙과 알려진 이름 목록인 개체명 사전을 사용했습니다. 은닉 마르코프 모델과 조건부 랜덤 필드 같은 통계적 태거는 대문자 표기와 단어 접미사처럼 사람이 설계한 특성을 사용해 주석이 달린 텍스트로부터 학습했습니다. 2016년에는 CRF 출력 계층을 갖춘 양방향 LSTM 네트워크가 이러한 특성 자체를 학습했고, 이후 미세 조정된 트랜스포머가 등장했습니다. BERT는 CoNLL-2003 테스트 세트에서 F1 점수 92.8을 기록했습니다. 셀프 어텐션을 사용하면 이러한 모델이 문장 전체를 문맥으로 활용할 수 있으므로, "Apple released a new phone"에서는 "Apple"에 조직 태그를 지정하고 "I ate an apple"에서는 태그를 지정하지 않습니다. 시스템은 개체 수준의 정밀도, 재현율, F1 점수로 평가하며, 예측 구간과 유형이 모두 정답과 정확히 일치해야 올바른 예측으로 계산됩니다.
최신 모델은 고정된 레이블 집합을 없앴습니다. 소형 양방향 트랜스포머인 GLiNER는 개체 유형 이름을 입력으로 받아 학습 중에 보지 못한 유형의 일치 구간도 찾으며, 대규모 언어 모델은 스키마를 프롬프트로 제공하고 구조화된 출력을 요청하면 개체를 추출합니다.
NER와 관련 작업 비교#
- 개체 연결: 인식된 각 언급을 Wikidata와 같은 지식 베이스의 특정 항목과 연결하여 "Paris"가 도시인지 Paris Hilton인지 판별합니다.
- 관계 추출: 어떤 사람이 어떤 조직에서 일하는지처럼 개체 간의 연결 관계를 찾으며, NER 출력 결과를 기반으로 수행하는 경우가 많습니다.
- 감성 분석: 텍스트에 드러난 의견을 측정합니다. NER는 리뷰에서 무엇을 다루는지 식별하고, 감성 분석은 작성자가 그 내용에 대해 어떤 감정을 갖는지 측정합니다.
- 객체 탐지: NER의 이미지 분야 대응 작업으로, 이미지 영역을 찾아 각 영역에 클래스를 지정합니다.
GLiNER의 개방형 레이블 방식은 비전 분야에도 직접 대응되는 기술이 있습니다. YOLOE-26은 Ultralytics YOLO26의 오픈 보캐뷸러리 버전으로, 추론 시 클래스 이름을 텍스트 프롬프트로 입력받아 학습 카테고리에 포함되지 않은 클래스의 객체도 탐지하고 세그먼트화합니다.
실제 적용 사례#
문서 처리는 NER와 광학 문자 인식(OCR)을 결합합니다. 송장, 계약서, 양식을 스캔하고 OCR로 텍스트를 읽은 다음, NER로 공급업체, 날짜, 총액과 같은 필드를 추출해 회계 및 규정 준수 시스템에 전달합니다. 프로덕션 파이프라인은 확신도가 낮은 예측을 사람에게 보내고 수정 사항을 학습에 활용합니다:
- 개인 식별 정보(PII) 삭제: Microsoft의 오픈소스 Presidio와 같은 개인정보 보호 도구는 NER와 패턴 규칙을 함께 사용하여 텍스트를 공유하거나 학습에 사용하기 전에 이름, 주소, 계좌 번호를 찾아 마스킹합니다.
- 임상 텍스트 마이닝: 임상 NER는 의사의 기록에서 약물, 용량, 증상, 진단을 추출하므로 병원과 연구자가 대규모로 기록을 검색하고 분석할 수 있습니다.
- 검색 및 추천: 뉴스 사이트와 콘텐츠 플랫폼은 기사에 언급된 인물, 기업, 장소를 태그로 지정하여 개체 검색을 지원하고 관련 기사를 추천합니다.










