transformers pytorch bert token-classification autotrain_compatible endpoints_compatible region:us
---
{}
---
# KPF-BERT-NER

- 빅카인즈랩 인사이드 메뉴의 개체명 분석에서 사용된 개체명 인식 모델이다.
- 사용 방법에 대한 안내 및 코드는 [KPF-bigkinds github](https://github.com/KPF-bigkinds/BIGKINDS-LAB/tree/main/KPF-BERT-NER)에서 확인할 수 있습니다.

## 모델 소개

### KPF-BERT-NER


한국언론진흥재단이 개발한 kpf-BERT 모델을 기반으로 NER(Named Entity Recognition) task를 수행할 수 있는 kpf-BERT-ner 모델을 설계 및 개발한다. NER은 이름을 가진 객체를 인식하는 것을 의미한다. 한국정보통신기술협회가 제공하는 정보통신용어사전에 따르면 NER은 다음과 같다. 
“NER은 미리 정의해둔 사람, 회사, 장소, 시간, 단위 등에 해당하는 단어(개체명)를 문서에서 인식하여 추출 분류하는 기법. 추출된 개체명은 인명(person), 지명(location), 기관명(organization), 시간(time) 등으로 분류된다. 개체명 인식은 정보 추출을 목적으로 시작되어 자연어 처리, 정보 검색 등에 사용된다.” 
실무적으로 표현하면 ‘문자열을 입력으로 받아 단어별로 해당하는 태그를 출력하게 하는 multi-class 분류 작업’이다. 본 과제에서는 kpf-BERT-ner 모델을 설계 및 개발하고 언론 기사를 학습하여 150개 클래스를 분류한다.

- 본 예제에 사용된 kpf-BERT는 [kpfBERT](https://github.com/KPFBERT/kpfbert)에 공개되어 있다.

- 한국어 데이터 셋은 모두의 말뭉치에서 제공되는 [국립국어원 신문 말뭉치 추출](https://corpus.korean.go.kr/request/reausetMain.do) 를 사용하였다.

한국언론진흥재단이 개발한 kpf-BERT를 기반으로 classification layer를 추가하여 kpf-BERT-ner 모델을 개발한다. 
BERT는 대량의 데이터를 사전학습에 사용한다. 
kpf-BERT는 신문기사에 특화된 BERT 모델로 언론, 방송 매체에 강인한 모델이다.


![img](https://user-images.githubusercontent.com/87846939/221456330-a2683b07-b48b-496f-9f81-caa0147aef2b.png)

BERT 모델의 학습을 위해서는 문장에서 토큰을 추출하는 과정이 필요하다. 
이는 kpf-BERT에서 제공하는 토크나이저를 사용한다. 
kpf-BERT 토크나이저는 문장을 토큰화해서 전체 문장벡터를 만든다. 
이후 문장의 시작과 끝 그 외 몇가지 특수 토큰을 추가한다. 
이 과정에서 문장별로 구별하는 세그먼트 토큰, 각 토큰의 위치를 표시하는 포지션 토큰 등을 생성한다. 


![img_1](https://user-images.githubusercontent.com/87846939/221456315-c262d276-cf41-4dc0-9b9b-46375aa6dfd4.png)

NER 모델 개발을 위해서는 추가로 토큰이 어떤 클래스를 가졌는지에 대한 정보가 필요하다. 
본 과제에서는 토크나이저를 사용하여 문장을 토큰으로 분류한 이후에 해당 토큰별로 NER 태깅을 진행한다. 
추가로 BIO(Begin-Inside-Outside) 표기법을 사용하여 정확도를 높인다. 
B는 개체명이 시작되는 부분, I는 개체명의 내부 부분, O는 개체명이 아닌 부분으로 구분한다.


![img_2](https://user-images.githubusercontent.com/87846939/221456304-0bc8462f-772c-4882-a973-778b70b92d4e.png)
