NER - 개체명 인식
https://www.letr.ai/explore/tech-20210723
https://www.letr.ai/explore/tech-20210730
https://www.letr.ai/explore/tech-20210806
https://github.com/eagle705/pytorch-bert-crf-ner
https://github.com/kimwoonggon/publicservant_AI/blob/master/5_(BERT_%EC%8B%A4%EC%8A%B5)%ED%95%9C%EA%B5%AD%EC%96%B4_%EA%B0%9C%EC%B2%B4%EB%AA%85_%EC%9D%B8%EC%8B%9D.ipynb
https://github.com/songys/entity
https://koalanlp.github.io/koalanlp/usage/
https://github.com/koalanlp/koalanlp
https://www.mianshigee.com/project/SKTBrain-KoBERT
개체명 인식(NER)과 트랜드 분석
- KoBART-NER
https://github.com/monologg/KoBERT-NER
- 한국 해양대학교 자연어처리 연구실 NER
https://github.com/kmounlp/NER
- 네이버, 창원대가 함께하는 NLP Challenge 에서 제공하는 데이터셋
https://github.com/naver/nlp-challenge/blob/master/missions/ner/data/train/train_data
- 소상공인 고객 주문 질의-응답 텍스트 소ㄱ
https://aihub.or.kr/aidata/30760
- 전문 분야 말뭉치
https://aihub.or.kr/aidata/30717
기사요약
- KoBART-summarization
https://github.com/seujung/KoBART-summarization
- 주식 종목 뉴스 요약 메일링
https://github.com/myeonghak/stock-news-summary
- 한국어 문서 생성요약 AI 경진대회
https://dacon.io/competitions/official/235673/overview/description
NVIDIA Riva 플랫폼 기반 음성언어 이해 서비스
Spacy -
https://ungodly-hour.tistory.com/37
https://velog.io/@na2na8/Spacy-%ED%95%9C%EA%B5%AD%EC%96%B4-%EB%AA%A8%EB%8D%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%8B%A4%ED%8C%A8%EB%8B%B4
NER이란?
NER(Named Entity Recognition)은 말 그대로 Named Entity(이름을 가진 개체)를 Recognition(인식)하는 것을 의미하며, 개체명 인식이라고 합니다.
NER의 정의는 한국정보통신기술협회가 제공하는 정보통신용어사전에 따르면 다음과 같습니다.
미리 정의해 둔 사람, 회사, 장소, 시간, 단위 등에 해당하는 단어(개체명)를 문서에서 인식하여 추출 분류하는 기법. 추출된 개체명은 인명(person), 지명(location), 기관명(organization), 시간(time) 등으로 분류된다. 개체명 인식(NER)은 정보 추출을 목적으로 시작되어 자연어 처리, 정보 검색 등에 사용된다.
※ 예:철수[인명]는 서울역[지명]에서 영희[인명]와 10시[시간]에 만나기로 약속하였다.
한편 논문 ‘A Survey on DeepLearning for Named Entity Recognition’[1]에서는 다음과 같이 설명합니다.
“NER is the process of locating and classifying named entities in text into predefined entity categories."
즉 실무적으로 표현하자면 '문자열을 입력으로 받아 단어 별로 해당되는 태그를 내뱉게 하는 multi-class 분류 작업'이라 말할 수 있습니다.
그럼 NE(Named Entity, 이하 NE)는 무엇일까요?
NE는 문자열 내에서의 기관명, 인물, 장소 뿐만 아니라 화폐, 시간, 퍼센티지 표현까지 포괄하는 의미로 등장했습니다. 이후 연구자에 따라 조금씩 달라지기도 했으나, 대체로 사람 이름이나 지명 등, 고유명사가 이에 해당한다고 인식되어 왔습니다.
또한 위와 같이 정의된 NE에는 두 가지 유형이 있습니다.
첫번째, 일반적인 개체명(generic NEs)으로 인물이나 장소 등의 명칭이 이에 해당합니다.
두번째, 특정 분야 개체명(domain-specific NEs)으로 전문 분야의 용어가 이에 해당합니다.
실례로 트위그팜에서는 첫 번째 유형은 학습된 NER 알고리즘을 통해, 두 번째 유형은 미리 정의해 놓은 용어집(번역 메모리, Translation Memory*)을 통해 처리하여 번역 품질을 높이고 있습니다.
* 번역 메모리(translation memory, TM), https://ko.wikipedia.org/wiki/번역_메모리
NER이 필요한 이유
NER은 자연어 처리(Natural Language Processing, 이하 NLP) 전반에 걸쳐 중요한 역할을 합니다. 자연어 처리를 이용한 정보 검색과 요약, 질문 답변, 지식 베이스 구축 등 다방면에 사용되고 있습니다.[2] 특히 기계 번역(Machine Translation, 이하 MT)의 품질을 높이며, 사용자에게 맞춤형 번역을 제공할 수 있도록 도와주는 역할을 합니다.
예를 들어, 'TWIGFARM'을 글자 그대로 해석하면 ‘트위그팜’이 아닌 ‘나뭇가지 농장’이라고 해석됩니다. 그런데 이러면 번역 오류가 일어날 뿐만 아니라 사용자에게도 불편한 경험을 안겨줄 수 있습니다. 반면 TWIGFARM을 회사명으로 제대로 인식할 수 있다면, 번역 품질 뿐만 아니라 사용자 경험까지도 함께 향상될 수 있습니다.
NER 과정을 통해 MT 품질을 높일 수 있다는 것은 MT의 도입 초기부터 익히 알려져왔습니다. Babych와 Hartley에 따르면 “개체명이 일반적인 명사로 잘못 해석되면 문장의 이해 자체가 어려워지고, 이를 수정하기 위해 많은 비용이 소요된다.”고 합니다.[3] 또한 Ugawa 등은 신경망 기반 기계 번역( Neural Machine Translation, 이하 NMT)에서 NER 사용 시 결과물의 번역 품질이 향상됨을 가시적으로 증명한 바 있습니다.[4]
NER 성능평가 지표
NER은 정밀도(precision), 재현율(recall)*, F1-score*를 이용해 성능을 평가하며 문장 단위가 아닌 토큰(token)* 단위로 평가를 진행하게 됩니다.
예를 들어 ‘I work at TWIGFARM.’이라는 문장이 있을 때, ‘TWIGFARM’이라는 특정 단어만 개체명임을 나타내기 위해 먼저 문장을 토큰화(tokenization)*합니다.(토큰화에는 여러가지 방식이 있으며 사용하는 툴에 따라 결과가 다르게 나타날 수 있습니다.)
예시 문장은 ‘I’, ‘work’, ‘at’, ‘TWIGFARM’, ‘.’와 같이 5개의 요소로 나눠지는데, 이 5개 하나하나에 대해 평가를 진행하게 됩니다.
* Precision and recall, https://en.wikipedia.org/wiki/Precision_and_recall
* F1-score, https://en.wikipedia.org/wiki/F-score
* 토큰(Token), https://terms.naver.com/entry.naver?docId=857716&cid=42346&categoryId=42346
* Tokenization, https://en.wikipedia.org/wiki/Lexical_analysis#Tokenization
NER 태깅 시스템과 라벨
NER은 문장을 토큰 단위로 나누고, 이 토큰들을 각각 태깅(tagging)*해서 개체명인지 아닌지를 분간하게 됩니다. 한편 단일 토큰이 아닌 여러 개의 토큰의 결합으로 하나의 개체명이 완성되는 경우도 있는데, 대표적으로 영어 문화권에서의 성명 표기가 그렇습니다. 예를 들어 ‘마이클 조던’은 두 개의 개체명이 아닌 하나의 개체명입니다.
그리고 이렇게 여러 개의 토큰을 하나의 개체명으로 묶기 위해 도입된 것이 바로 태깅 시스템입니다. 태깅 시스템에는 BIO 시스템과 BIESO 시스템의 두 종류가 있는데, 실무에서는 주로 BIO시스템이 사용되고 있습니다.
우선 BIO 시스템은 개체명이 시작할 때'B-(begin)'를, 토큰이 개체명 중간에 있을 때는'I-(inside)'를, 토큰이 개체명이 아닐 경우에는 'O(outside)'를 붙여주게 됩니다.
한편 BIESO 시스템은 개체명이 시작할 때'B-(begin)'를, 토큰이 개체명 중간에 있을 때는'I-(inside)'를, 개체명의 마지막에 위치할 때는 'E-(end)'를 붙여줍니다. 또한 하나의 토큰이 곧 하나의 개체명일 때는'S-(singleton)'를, 토큰이 개체명이 아닐 경우에는 'O(outside)'를 붙여주게 됩니다.
BIO 시스템에 따라 태깅이 된 문장의 예시
BIESO시스템에 따라 태깅이 된 문장의 예시
위와 같이 'O'를 제외한 태그들, 즉 ‘B-‘, ‘I-‘, ‘E-‘, ‘S-‘ 뒤에는 각 토큰이 어떠한 종류의 개체명인지를 인지할 수 있는 라벨을 붙입니다. 예를 들어 사람일 경우에는 ‘PER’, 기관인 경우에는 ‘ORG’ 등이 붙습니다. 다만 라벨의 종류와 이름은 정해진 표준이 없으며, 과제의 성격에 따라 연구자들이 임의로 선정하고 있습니다.
*태깅(tagging), https://terms.naver.com/entry.naver?docId=865370&cid=42346&categoryId=42346
NER에 대한 다양한 접근과 딥러닝의 도입
딥러닝(Deep Learning)*이 도입되기 이전에도 NER 과제를 해결하기 위한 다양한 시도들이 있어 왔습니다. 지금은 딥러닝 모델을 주로 사용하고 있기는 하지만, 전통적인 접근법을 결합한 모델들 또한 많이 있었습니다. 딥러닝 이전의 접근법에는 대표적으로 아래 세 가지 유형이 있었습니다.
(1) 규칙 기반 접근(Rule-based Approaches)
: 도메인 특화(domain-specific)한 사전(gazetteer*)을 적용하거나 패턴을 적용해서 접근한다.
: 높은 정확도에 비해 낮은 재현율을 보인다. 특히 다른 도메인으로 가면 형편 없어진다.
(2) 비지도 학습* 접근(Unsupervised Learning Approaches)
: 문맥적 유사도에 기반해 클러스터링(clustering)*하는 식으로 학습한다.
: 사전(gazetteer)을 만드는 데에 비지도형 시스템(unsupervised system)을 제안하기도 했다. 이는 지도 학습*과 비교해, 용어집이나 코퍼스(Corpus)*의 통계적 정보(idf나 contextvector), 혹은 얕은 수준의 통사적(syntactic)* 지식에 의존한다.
(3) 변수 기반 지도 학습 접근(Feature-based Supervised Learning Approaches)
: 지도 학습으로 넘어가면 NER은 다중 클래스 분류(multi-class classification)*나 시퀀스 레이블링 작업(sequence labeling task)* 영역으로 넘어간다.
: 피처 베이스(feature-based)이기 때문에, feature가 무엇이 될 것이냐가 아주 중요한 문제가 된다.
: Hidden Markov Models(HMM)*, Decision Trees*, Maximum Entropy Models*, Support Vector Machines(SVM)*, Conditional Random Fields(CRF)*
: SVM 모델은 entity label을 예측할 때 이웃 단어는 고려하지 않는 반면, CRF는 고려한다.
하지만 요즘은 대부분 보다 장점이 많은 딥러닝을 이용해 NER을 해결합니다. 따로 변수 가공(Feature-engineering*)이 필요 없고, 선형 모델과 비교해 더 복잡하고 정교한 특성을 학습할 수도 있습니다. 특히 딥러닝을 이용하면 일련의 과정을 거치지 않고도 데이터를 넣어 바로 결과를 얻을 수 있는 엔드 투 엔드(end-to-end) 모델을 구현할 수 있다는 장점이 있습니다.
* 딥러닝(Deep Learning), https://ko.wikipedia.org/wiki/딥_러닝
* gazetteer, https://en.dict.naver.com/#/entry/enko/dd365c3160f64057bd0a10475bb2ea43
* 비지도 학습, https://ko.wikipedia.org/wiki/비지도_학습
* 클러스터링(Clustering), https://terms.naver.com/entry.naver?docId=817915&cid=50376&categoryId=50376
* 지도 학습(Supervised Learning), https://ko.wikipedia.org/wiki/지도_학습
* 말뭉치(Corpus), https://terms.naver.com/entry.naver?docId=2070828&cid=50376&categoryId=50376
* 통사적(統辭的), https://ko.dict.naver.com/#/entry/koko/92d960065ec64bb6aeb267b08683b058
* 다중 클래스 분류(multi-classclassification), https://en.wikipedia.org/wiki/Multiclass_classification
* 시퀀스 레이블링 작업(sequence labeling task), https://en.wikipedia.org/wiki/Sequence_labeling
* Hidden Markov Models(HMM), https://ko.wikipedia.org/wiki/은닉_마르코프_모형
* Decision Trees, https://ko.wikipedia.org/wiki/결정_트리
* Maximum Entropy Models, https://ko.wikipedia.org/wiki/최대_엔트로피_마르코프_모형
* Support Vector Machines(SVM), https://ko.wikipedia.org/wiki/서포트_벡터_머신
* Conditional Random Fields(CRF), https://ko.wikipedia.org/wiki/조건부_무작위장
* 변수 가공(Feature-engineering), https://en.wikipedia.org/wiki/Feature_engineering
지금까지 'NER의 현재와 미래'에 대한 연재의 첫 번째 주제인 "개념부터 다양한 접근법까지"였습니다. 이 시리즈는 두 번째 주제 '모델 구조와 데이터 셋 현황', 세 번째 주제 '앞으로의 개발 방향과 목표'까지 이어지게 됩니다.
References
[1] A Survey on Deep Learning for Named Entity Recognition, Jing Li, AixinSun, Jianglei Han, Chenliang Li, Mar. 18. 2020.
[2] (Jing Li et al. 2020, 1)
[3] (Babych & Hartley, 2003, 1)
[4] (Ugawa et al. 2018, 3248)
NER의 모델 구조
논문 ‘A Survey on Deep Learning for Named EntityRecognition’에 따르면, NER 모델의 구조는 아래 그림과 같이 세 단계의 프로세스로 나눌 수 있습니다.
* 표 출처: https://arxiv.org/pdf/1812.09449.pdf
(1) Distributed Representations for Input*
인풋 데이터를 벡터 등으로 표현하는 층으로 Pre-trained word embedding, Character-level embedding, POS* tag,Gazetteer 등을 이용합니다.
(2) Context Encoder
문맥 정보를 인코딩하는 층으로 CNN*, RNN*, Language model*, Transformer* 등의 모델을 이용합니다.
(3) Tag Decoder
태그 정보를 디코딩하는 층으로 Softmax, CRF*, RNN, Point network 등의 모델을 이용합니다.
다만 모든 모델들이 위의 구조를 엄격히 따르는 것은 아닙니다. 특히 딥러닝 쪽 모델들은 End to end로 작업이 이루어지기 때문에 단계가 명확히 나뉘지 않는 경우도 있습니다. 하지만 전통적인 접근법을 포함한다면 대체로 위와 같이 세 단계로 나누어 생각할 수 있습니다.
* Distributed Representations forInput: 입력에 대한 분산 표현
* POS(part-of-speech, 품사), https://en.wikipedia.org/wiki/Part_of_speech
* CNN(Convolutional Neural Networks), https://en.wikipedia.org/wiki/Convolutional_neural_network
* RNN(Recurrent neural network), https://en.wikipedia.org/wiki/Recurrent_neural_network
* Language model, https://en.wikipedia.org/wiki/Language_model
* Transformer, https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)
* CRF(Conditional random field), https://en.wikipedia.org/wiki/Conditional_random_field
NER 관련 라이브러리 현황 및 성능 평가
현재 한국어에만 특화된 공식적인 NER 라이브러리는 찾기 어려우며, 대부분 다국어로 학습된 모델에서 한국어를 찾을 수 있습니다. 각 라이브러리의 특성은 다음과 같습니다.
이어서 Kaggle*에서 배포된 데이터 셋*으로도 평가를 진행해봤습니다. 데이터 셋의 클래스 개수와 라이브러리의 클래스 개수가 모두 다르기 때문에 각 클래스를 데이터 셋의 클래스와 매칭시켜 주는 작업이 수반되었고, 이 과정에서 기준 데이터 셋보다 많은 클래스를 분류해 낼 수 있는 라이브러리일수록 Precision이 떨어지는 현상이 발생함을 확인했습니다. 따라서 NER 성능의 판단 기준으로는 통상적으로 사용되는 Precision과 이를 이용한 F1-score는 제외하고, 재현율과 걸린 시간만으로 라이브러리의 성능을 판단하게 됐습니다. 그 결과는 다음과 같습니다.
(1,000개 문장 기준) 걸린 시간에서 Stanford NER Tagger가 현저하게 낮은 성능을 보이며, Recall 면에서는 flair와 polyglot이 현저하게 낮은 성능을 보임을 확인할 수 있습니다.
* Kaggle, https://en.wikipedia.org/wiki/Kaggle
* https://www.kaggle.com/abhinavwalia95/entity-annotated-corpus
* NLTK(Natural Language Toolkit), https://en.wikipedia.org/wiki/Natural_Language_Toolkit
* Stanford, https://nlp.stanford.edu/software/CRF-NER.html#Models
* spaCy, https://en.wikipedia.org/wiki/SpaCy
* flair, https://github.com/flairNLP/flair
* Hugging Face, https://huggingface.co/datasets
* polyglot, https://polyglot.readthedocs.io/en/latest/#
* deppavlov, https://github.com/deepmipt/DeepPavlov
대표적인 영어 NER 데이터 셋
(1) CoNLL 2003 (Sang and Meulder,2003)*
: 저작권 정책 - DUA
: 1,393개의 영어뉴스 기사(스포츠 관련이 많음)
: 4종류의 Annotated* Entities – { LOC(location),ORG(organization), PER(person), MISC (miscellaneous) }
* CoNLL 2003, https://www.clips.uantwerpen.be/conll2003/ner/
* Annotated: <책 등이> 주석[주해]이 달린
(2) OntoNotes 5.0 (Weischedel etal., 2013)*
: 저작권 – LDC
: 데이터의 종류및 개수는 아래와 같습니다.
* OntoNotes 5.0, https://catalog.ldc.upenn.edu/LDC2013T19
* Pivot: Old Testament and New Testment text(구약성서 및 신약성서 텍스트)
* 표 출처: https://catalog.ldc.upenn.edu/LDC2013T19
: 18종류의 Annotated Entities
* 표 출처 : https://catalog.ldc.upenn.edu/docs/LDC2013T19/OntoNotes-Release-5.0.pdf
(3) MUC-6 (Grishman and Sundheim,1996)
: 저작권 정책 – LDC
: 월 스트리스 저널에서 추출한 뉴스기사
: 3 종류의 Annotated Entities – { PER, LOC, ORG }
* MUC-6, https://cs.nyu.edu/~grishman/muc6.html
(4) WNUT 17 : Emerging and Rareentity recognition (Derczynski et al., 2016)
: 저작권 정책 – CC-BY 4.0
: Social media ( YouTube comments,Stack Overflow responses Twitter text and Reddit comments )
: 6 종류의 Annotated Entities – ( Person,Location, Group, Creative word, Corporation, Product )
* WNUT 17, https://noisy-text.github.io/2017/emerging-rare-entities.html
대표적인 한국어 NER 데이터 셋
한국의 NER 데이터는 그 수가 매우 부족한 상황입니다. 현재 공개된 한국어 NER 데이터 셋은 총 세 가지이며, 모두 상업적 이용은 제한되어있습니다.
(1) 국립국어원 NER 데이터 셋
:총 3,555개 문장
:BIO 태깅 시스템 사용
:5종류의 Annotated Entities – { 장소(LC), 날짜(DT), 기관(OG), 시간(TI), 인물(PS) }
* 국립국어원 모두의 말뭉치, https://corpus.korean.go.kr
(2) 한국해양대학교 자연어처리 연구실 NER 데이터 셋
:총 23,964개 문장
:BIO 태깅 시스템 사용
:10 종류의 Annotated Entities – { 인물(PER), 기관(ORG), 지명(LOC), 기타(POH), 날짜(DAT), 시간(TIM), 기간(DUR), 통화(MNY), 비율(PNT), 기타 수량표현(NOH) }
* 한국해양대학교 자연언어처리 연구실 깃허브, https://github.com/kmounlp
(3) NAVER NLP Challenge 2018
:총 82, 393개문장
:BIO 태깅 시스템 사용
: 14 종류의 AnnotatedEntities – { 인물(PER), 학문분야(FLD), 인공물(AFW), 기관및 단체(ORG), 지역명(LOC), 문명 및문화(CVL), 날짜(DAT), 시간(TIM), 숫자(NUM), 사건사고 및 행사(EVT), 동물(ANM), 식물(PLT), 금속/암석/화학물질(MAT), 의학용어/IT관련 용어(TRM) }
* 네이버 NLP Challenge 깃허브, https://github.com/naver/nlp-challenge
NER 모델의 개발 방향
실무적인 면에서는 기존 모델을 추가 학습시켜 더 좋은 결과물을 얻는 것이 가장 효과적인 방법입니다.
LETR팀의 경우, deeppavlov 라이브러리의 ner_ontonotes_bert_mult 모델*을 선택하였고, 그 이유는 다음과 같습니다.
1. 가장 많은 언어 수(104개)를 지원하고, 2. 가장 다양한 클래스(18개)를 보유하고 있으면서, 3. 데이터 처리 속도가 무난하고, 4. 재현율 또한 눈에 띄게 높고, 5. 사용 방법이 어렵지 않아 실무자들의 빠른 적응이 가능하기 때문입니다.
또한 모델의 임베딩 사이즈는 700MB이고, 모델 사이즈는 1.4GB이며, Ontonotes 데이터 셋* 기준으로 F1-score 88.8을 기록했습니다. (이외에도 Deeppavlov은 러시아어와 베트남어에 특화된 NER 모델도 따로 제공한다는 특징이 있습니다.)
이상과 같은 이유로 deeppavlov의 ner_ontonotes_bert_mult모델(이하 베이스 모델)을 추가 학습시키는 방향으로 NER 모델을 선제적으로 발전시키게 됐습니다.
한국어 NER 데이터 셋 구성의 필요성
모델의 학습을 위해서는 적당한 데이터가 꼭 필요하지만, 한국어로 된 NER 데이터 셋은 아직까지 미비한 실정입니다. 특히나 LETR팀이 필요로 하는, 베이스 모델이 사용하는 Ontonotes 방식의 18가지 NE 종류를 가진 한국어 NER 데이터 셋은 전무한 상황입니다. 그래서 우선은 한국어 NER 데이터 셋의 구성 방안을 제시하고, 나아가 한국어 NER 모델의 새로운 방향을 제시하고자 합니다.
원문 데이터의 확보 방안
1. 기 보유 데이터
- TED* 코퍼스
- 한영 계약서 모음
- Subtitles(영한): 10만 문장
- AI HUB*: 한-영 병렬 말뭉치 160문장
2. 앞으로 확보 가능한 데이터
- AI HUB: 한국어 대화 1만 문장, 감성 대화 27만 문장
- 인공지능 학습용 데이터 구축 지원사업*을 통해 구축되는 300만 문장
데이터 구성의 절차
데이터 구성의 효율화를 위해 먼저 기존 모델로 NER을 하고, 이어서 작업자가 검수하는 방식을 택했습니다. 다만 이를 위해 작업자가 검수하기 알맞도록 데이터를 재구성해주고, 검수가 끝난 데이터는 다시 모델에 맞는 형태로 풀어내야 할 필요가 있습니다. 구체적으로는 아래와 같은 순서를 통해 데이터를 구성하게 됩니다.
1. 기존 모델로 NER
2. 데이터 정제 (NE가 없는 문장을 제외하는 과정)
한국어는 기존 모델이 정밀하지 못한 편입니다. 따라서 NER 모델에서 NE가 없다고 한 문장 중에도 NE가 포함되어 있을 수 있기 때문에 아래 두가지 방법을 사용합니다.
(1) (다국어 데이터의 경우) 대응되는 언어 쌍의 타국어도 NER하여 교차 점검
(2) (선택) 크라우드 소싱으로 점검 (NE가 있음/없음을 문장마다 라벨링)
3. 데이터 가공
크라우드 소싱이 가능한 형태의 데이터로 가공합니다.
4. 크라우드 소싱으로 작업자 1차 검수
5. 관리자의 2차 검수
6. 가공된 문장을 모델에 feed할 수 있는 형태로 풀기
데이터의 구체적인 형태
1. 구성하려는 한국어 NER 데이터 셋의 태깅 시스템과 NE 종류
한국어 NER 데이터 셋의 태깅 시스템 역시 Ontonotes의 규칙을 따릅니다. BIO 태깅 시스템을 이용하며, NE를 아래 표와 같이 18개로 분류합니다.
2. 모델에 feed 할 수 있는 데이터의 형태
모델에 feed 할 수 있는 데이터의 형태는 다음과 같습니다.
이상과 같이 모두 텍스트 데이터로 이루어져 있습니다. 태그와 토큰은 공백(white spaces)으로 구분되고, 문장과 문장 사이는 빈 줄(empty lines)로 구분됩니다.
데이터 셋은 train, test, vaildation으로 나뉘며, 이들의 비율은 8:1:1로 구성합니다.
3. 검수 시 쓰이는 데이터의 형태
개체명의 앞뒤로 개체의 종류에 대한 정보를 꺽쇠괄호(< >) 안에 넣어줍니다.
(예시)
안녕하세요? 제 이름은 <PERSON>영희</PERSON>입니다. 생일은 <DATE>10월 26일</DATE>입니다. <GPE>서울</GPE>에 거주하고 있습니다.<LANGUAGE>한국어</LANGUAGE>를 사용하는 <NORP>한국인</NORP>입니다.
데이터 셋의 개수 목표 산출
미디어, 문화, 과학, 인류학, 철학, 경제학 등 다양한 분야에서 41,969개의 문장을 추출했을 때, 2,453개의 문장에서 개체명이 인식되었습니다. 이를 비율로 따져보면 5.8% 입니다.(다만 이는 문어체의 문장에서의 비율이고, 구어체에서의 비율은 달라질 수 있다는 것을 염두에 두어야 합니다.)
즉 전체 코퍼스에서 약 5%의 문장이 개체명을 가지고 있다고 단순 가정하면, 약 500만 개 문장 중에 25만 개의 문장이 개체명을 포함한다고 추정할 수 있습니다. 따라서 개체명이 포함된 25만개의 문장으로 구성하는 것을 목표로 합니다.
마치며
앞서 밝혔듯 NER은 정보 검색 등 매우 중요한 역할을 하기에 자연어처리 분야에서 활발한 연구가 진행되고 있습니다. 특히 사람 이름, 기관명, 지역명 등을 자동으로 감지할 수 있기 때문에 번역 상의 오류를 방지하여 번역 품질이 향상될 뿐만 아니라 분야에 따른 맞춤 번역을 통해 사용자의 만족도을 크게 높일 수 있습니다.
하지만 그럼에도 불구하고 한국어에 특화된 NER 데이터 셋은 아직까지 미비한 상황입니다. 이에 LETR팀은 데이터양이 턱없이 부족한 한계를 극복하기 위해 한국어 위주의 데이터 셋을 구축하고, 이를 기반으로 학습한 더 높은 성능의 한국어 NER 모델을 구축하여 보다 정확하고 자연스러운 번역이 가능하게 만들고자 합니다.
물론 당장 전문 번역사 수준의 기계번역이 가능하지는 않을 것입니다. 그렇지만 계속해서 기술 고도화를 위해 노력하고 있으니, 머지않아 우리가 꿈꾸는 누구나 언어의 장벽없이 소통하는 더 나은 세상이 만들어지리라 믿습니다.
* deeppavlov 라이브러리의 ner_ontonotes_bert_mult 모델, https://github.com/deepmipt/DeepPavlov/blob/master/deeppavlov/configs/ner/ner_ontonotes_bert_mult.json
* Ontonotes 데이터 셋, https://catalog.ldc.upenn.edu/LDC2013T19
* TED(https://www.ted.com), https://ko.wikipedia.org/wiki/TED
* AI HUB(https://aihub.or.kr),https://ko.wikipedia.org/wiki/AI_Hub
* 인공지능 학습용 데이터 구축 지원사업: 과학기술정보통신부와 한국지능정보사회진흥원이 주관하는 디지털 뉴딜 ‘데이터 댐’의 핵심 사업, 트위그팜, ‘AI 학습용 데이터 구축’ 사업 수행기관 선정
* Weighted average(가중산술평균), https://kostat.go.kr/understand/info/info_lge/1/detail_lang.action?bmode=detail_lang&pageNo=1&keyWord=0&cd=SL4468&sTt=