brunch

You can make anything
by writing

C.S.Lewis

by 최재철 Jun 19. 2024

성능이 뛰어난 NER 모델(GLiNER)

NER(개체명 인식, Named Entity Recognition) 은 텍스트문장에서 개체를 찾아서 미리 정의된 범주(사람 이름, 조직, 위치, 시간 , 날짜 등)으로 분류하는 자연어 처리(NLP) 방법입니다.  NER는 문서내에서 빠르게 정보를 추출하는 데 용이합니다. 


엔티티(Entity)

다음 그림에서와 같이 "수요일 부산 날씨 어떨까?" 라고 챗봇한테 질문했다고 가정해봅시다. 

그러면, 챗봇은 문장에서 의도파악뿐만 아니라, NER를 통해서 관련된 정보를 추가로 추출해야  합니다. 

이 문장에서는 DATE 및 LOC 엔티티를  추출할 수 있습니다. 챗봇은 날씨에 대해서 물어보는 의도를 파악한 후에 정확한 시간과 위치를 정보를 알아야 그에 맞는 적절한 행동을 할 수 있게 되는 것입니다. 


NER 설명 (출처 : https://pypi.org/project/kochat/)


NER이 필요한 또 다른 이유

챗봇뿐만 아니라 맞춤형 번역을 제공할 수 있도록 도와주는 역할을 합니다. 

예를 들어, "아마존이 신제품을 출시했다. " 라는 짧은 문장이 있습니다. 

사람은 듣자마자, 머릿속에서 어떤 내용인지 파악이 됩니다. 그렇지만, 기계는 이 새로운 정보에 대해서 혼동스러워합니다. 왜냐하면, 개체명의 의미 모호성이 발생하기 때문입니다. 

아마존이라는 '지역명'이 될 수 있고,  아마존이라는 '회사명','조직명' 이 될 수 있기 때문입니다. 

이를 해결하기 위해서는 문장 내부 정보와의 관계성을 분석해서 그 의미를 보다 명확하게 분류해야 합니다. 

만약, 번역프로그램이 아마존을 '지역'을 해석했다면, 번역 오류가 일어날 뿐만 아니라 사용자에게도 불편한 경험을 안겨줄 수 있습니다. 

아마존을 회사명으로 제대로 인식할 수 있다면, 번역 품질 뿐만 아니라 사용자 경험까지도 함께 향상될 수 있게 됩니다. 


추가로, 요즘 늘고 있는 AI 채용 및 이력서 심사에 활용됩니다. 지원자의 기술, 경험 및 배경을 기반으로 정확한 필수 기술과 자격을 찾도록 NER에 지시할 수 있습니다. 예를 들어 채용 대행사는 NER를 사용하여 후보자를 자동으로 매칭할 수 있습니다.


LLM 시대의 NER

몇년전만 해도 딥러닝기반의 BiLSTM-CRF 같은 기술로 어렵게 NER 을 구현했다면, 

최근에는 Chat GPT, GPT-3.5, GPT-4, LLaMA3, Mixtral 8x7B와 같은 대규모 생성 언어모델(LLM) 를 통해서 쉽게 엔티티 추출을 할 수 있고, 그 성능 또한 뛰어납니다. 


위에서  먼저 살펴봤듯이 NER는 질문 응답, 텍스트 요약, 기계 번역 등 많은 NLP 어플리케이션에 있어서 매우 중요합니다. 


다음과 같은 문장이 있다고 가정합시다. 

John Smith is a web developer at Google. (번역 : 존스미스는 구글의 웹 개발자이다.)

위의 문장에서 "John Smith"가 이름이고,  "Google"이 회사임을 자동적으로 검출하는 것을 직접 구현해보도록 하겠습니다. 


[실습] 글라이너를 통한 NER

GLiNER는 BERT(BiDirectional Encoder Representation of Transformer) 기술을 사용하는 NER 모델입니다.  또한 모든 유형의 엔터티를 식별하도록 훈련된 소형 NER 모델입니다.

글라이너를 통한 NER 테스트(영어)

허깅페이스 형태의 모델을 로드했습니다. urchade/giner_multi 모델크기는 약 1.33GB입니다. 이 모델을 사용하여 로컬환경에서 마음껏 실행할 수 있습니다. 우리가 원하는 엔터티가 완벽하게 추출이 되었습니다. 

이번에는 한글로 테스트해 보았습니다.

글라이너를 통한 NER 테스트(한글)

한국어도 나름 제대로 인식이 되었습니다. 

GLiNER는 현재 모델은 공식적으로 영어 , 프랑스어 , 독일어 , 스페인어 , 이탈리아어 및 포르투갈어 를 지원합니다. 그러나 학습되지 않은 한국어에서도 나름 잘 작동합니다. ^^

GLiNER의 공식깃허브 주소 : https://github.com/urchade/GLiNER

이전 28화 (new) Python UI 프레임워크- Mesop
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari