NER(Named Entity Recognition)
25 Sep 2022 | Development
- 1. Dev summary
- 2. Data Collection and Processing
- 3. Model
- 4. Train
- 5. Test result
- 6. Problems and Solutions
1. Dev summary
Project
Summary of the project Related Pages
Named Entity Recognition
base model:
- BERT
- ELECTRA
class num:
- 도메인별 데이터에 따라 상이
applied domains:
- General
- General Medical Domain
- Breast Cancer EMR(Electronic Medical Record)
- Colorectal Cancer EMR(Electronic Medical Record)
Related Paper Review (BERT)
ELECTRA
2. Data Collection and Processing
2.1 Dataset
모델 출처 포맷 trainset 수량
범용 NER data labeling 업체 수집 데이터 json 525,659문장
bio NER NCBI json 30,000문장
2.2 Data pre-processing
- 중복 문장 제거
- 중복 문장 추출 후 분리하여 저장 -> 모델 1차 학습 후 autolabeling을 통해 class tagging
- 데이터 라벨 불균형 완화를 위해 수량이 적은 라벨 데이터 제외(1500건 이하 데이터 제외)
- BIO-tagging
- NER 학습 시 필요한 BIO tag 부착.
BIO-tag: token classification task와 같이 다수의 token이 하나의 개체임을 표시하기 위해 일반적으로 사용되는 tag
B(begin tag): 개체의 시작과 개체명 정보를 포함
I(inside tag): 개체 시작 이후 끝까지 개체 내부를 표시
O(outside tag): 개체외부 표
2.3 Data class
[사람, 수, 음식, 직업/직책, 제작물/작품, 조직/기관, 시설물/건물, 국가명, 행정구역, 학문/이론, IT 용어, 제품, 동물 신체, 날짜,
질병/증상/증세, 모양 및 형태 표현, 세포/조직/기관, 동물 종류, 음료, 교통수단, 기간, 패션의류/잡화, 자연, 천체명칭, 기후/날씨, 식물, 스포츠,
계절, 언어, 문화/문명, 사건, 화폐(통화), 약]
3. Model
3.1 Model Architecture
- BERT
- Electra
위 classification model의 활성화 함수 결과를 CRF layer에 입력하여 가장 높은 확률을 가진 개체 sequence를 반환한다.
CRF layer 추가: BERT 계열의 모델의 경우, sequence tag 추론 시 token간의 관계를 독립적으로 예측하는 경향이 있어 label간의 종속성을 명시적으로 모델링하기 위해 CRF layer 추가. 즉, label 간의 의존성을 고려한 결과를 반환 받기 위해 CRF layer를 추가.
BiLSTM layer 추가: BERT 계열의 모델이 문맥 파악에 강점을 가지고 있지만 BiLSTM layer를 추가함으로써 문장 길이가 길어지거나 문장 구조의 복잡도가 증가했을 때 문맥 정보 파악 능력을 강화할 수 있다.
3.2 Fine-tuning Hyperparameter
batch_size max_len learning_rate optimizer
128 128 3e-5 Adam
4. Train
4.1 Training server environment
- Quadro RTX 8000 x3
- Ubuntu 20.04
5. Test result
precision
recall
f1-score
support
accuracy
0.990485
0.990485
0.990485
0
macro avg
0.602809
0.604351
0.600704
434688
weighted avg
0.990405
0.990485
0.990415
434688
[PAD]
1
1
1
368711
O
0.968871
0.965086
0.966974
49149
[CLS]
1
1
1
3396
[SEP]
0.999706
1
0.999853
3396
국가명
0.804412
0.916786
0.854481
215
학문/이론
0.703287
0.782931
0.740854
304
수
0.784006
0.833969
0.808213
1180
사람
0.760027
0.776739
0.767727
2699
행정구역
0.740302
0.735174
0.737718
229
IT 용어
0.687826
0.717803
0.702494
230
패션의류/잡화
0.616484
0.629004
0.618074
97
음식
0.804267
0.859006
0.830722
656
식물
0.688934
0.589286
0.634223
66
날짜
0.872748
0.877016
0.874115
395
교통수단
0.678835
0.636967
0.656226
80
시설물/건물
0.579067
0.596769
0.587768
341
세포/조직/기관
0.720468
0.755682
0.736507
163
약
0.541667
0.484848
0.504348
26
모양 및 형태 표현
0.631931
0.647917
0.639721
156
직업/직책
0.768607
0.797931
0.782829
541
동물 신체
0.618803
0.741463
0.673407
131
천체명칭
0.889266
0.851875
0.869792
82
질병/증상/증세
0.825712
0.746615
0.783278
204
화폐(통화)
0.346154
0.25
0.290323
23
제품
0.591991
0.613933
0.602731
196
기간
0.769737
0.867371
0.815505
210
동물 종류
0.801515
0.743873
0.771213
164
계절
0.67
0.625
0.623188
25
자연
0.661321
0.599231
0.624736
76
스포츠
0.681624
0.597222
0.628788
62
음료
0.719608
0.783333
0.748832
117
기후/날씨
0.574797
0.59457
0.58127
125
사건
0.638889
0.632331
0.635325
54
제작물/작품
0.659329
0.673122
0.665963
518
언어
0.346154
0.428571
0.382979
24
조직/기관
0.667303
0.618192
0.641447
508
문화/문명
0.584399
0.48913
0.530319
47
6. Problems and Solutions
- 데이터 라벨 불균형
- 적은 라벨 데이터 제외
- 1. Dev summary
- 2. Data Collection and Processing
- 3. Model
- 4. Train
- 5. Test result
- 6. Problems and Solutions
1. Dev summary
Project | Summary of the project | Related Pages |
---|---|---|
Named Entity Recognition |
|
|
2. Data Collection and Processing
2.1 Dataset
모델 | 출처 | 포맷 | trainset 수량 |
---|---|---|---|
범용 NER | data labeling 업체 수집 데이터 | json | 525,659문장 |
bio NER | NCBI | json | 30,000문장 |
2.2 Data pre-processing
- 중복 문장 제거
- 중복 문장 추출 후 분리하여 저장 -> 모델 1차 학습 후 autolabeling을 통해 class tagging
- 데이터 라벨 불균형 완화를 위해 수량이 적은 라벨 데이터 제외(1500건 이하 데이터 제외)
- BIO-tagging
- NER 학습 시 필요한 BIO tag 부착.
BIO-tag: token classification task와 같이 다수의 token이 하나의 개체임을 표시하기 위해 일반적으로 사용되는 tag
B(begin tag): 개체의 시작과 개체명 정보를 포함
I(inside tag): 개체 시작 이후 끝까지 개체 내부를 표시
O(outside tag): 개체외부 표
- NER 학습 시 필요한 BIO tag 부착.
2.3 Data class
[사람, 수, 음식, 직업/직책, 제작물/작품, 조직/기관, 시설물/건물, 국가명, 행정구역, 학문/이론, IT 용어, 제품, 동물 신체, 날짜,
질병/증상/증세, 모양 및 형태 표현, 세포/조직/기관, 동물 종류, 음료, 교통수단, 기간, 패션의류/잡화, 자연, 천체명칭, 기후/날씨, 식물, 스포츠,
계절, 언어, 문화/문명, 사건, 화폐(통화), 약]
3. Model
3.1 Model Architecture
- BERT
- Electra
위 classification model의 활성화 함수 결과를 CRF layer에 입력하여 가장 높은 확률을 가진 개체 sequence를 반환한다.
CRF layer 추가: BERT 계열의 모델의 경우, sequence tag 추론 시 token간의 관계를 독립적으로 예측하는 경향이 있어 label간의 종속성을 명시적으로 모델링하기 위해 CRF layer 추가. 즉, label 간의 의존성을 고려한 결과를 반환 받기 위해 CRF layer를 추가.
BiLSTM layer 추가: BERT 계열의 모델이 문맥 파악에 강점을 가지고 있지만 BiLSTM layer를 추가함으로써 문장 길이가 길어지거나 문장 구조의 복잡도가 증가했을 때 문맥 정보 파악 능력을 강화할 수 있다.
3.2 Fine-tuning Hyperparameter
batch_size | max_len | learning_rate | optimizer |
---|---|---|---|
128 | 128 | 3e-5 | Adam |
4. Train
4.1 Training server environment
- Quadro RTX 8000 x3
- Ubuntu 20.04
5. Test result
precision | recall | f1-score | support | |
---|---|---|---|---|
accuracy | 0.990485 | 0.990485 | 0.990485 | 0 |
macro avg | 0.602809 | 0.604351 | 0.600704 | 434688 |
weighted avg | 0.990405 | 0.990485 | 0.990415 | 434688 |
[PAD] | 1 | 1 | 1 | 368711 |
O | 0.968871 | 0.965086 | 0.966974 | 49149 |
[CLS] | 1 | 1 | 1 | 3396 |
[SEP] | 0.999706 | 1 | 0.999853 | 3396 |
국가명 | 0.804412 | 0.916786 | 0.854481 | 215 |
학문/이론 | 0.703287 | 0.782931 | 0.740854 | 304 |
수 | 0.784006 | 0.833969 | 0.808213 | 1180 |
사람 | 0.760027 | 0.776739 | 0.767727 | 2699 |
행정구역 | 0.740302 | 0.735174 | 0.737718 | 229 |
IT 용어 | 0.687826 | 0.717803 | 0.702494 | 230 |
패션의류/잡화 | 0.616484 | 0.629004 | 0.618074 | 97 |
음식 | 0.804267 | 0.859006 | 0.830722 | 656 |
식물 | 0.688934 | 0.589286 | 0.634223 | 66 |
날짜 | 0.872748 | 0.877016 | 0.874115 | 395 |
교통수단 | 0.678835 | 0.636967 | 0.656226 | 80 |
시설물/건물 | 0.579067 | 0.596769 | 0.587768 | 341 |
세포/조직/기관 | 0.720468 | 0.755682 | 0.736507 | 163 |
약 | 0.541667 | 0.484848 | 0.504348 | 26 |
모양 및 형태 표현 | 0.631931 | 0.647917 | 0.639721 | 156 |
직업/직책 | 0.768607 | 0.797931 | 0.782829 | 541 |
동물 신체 | 0.618803 | 0.741463 | 0.673407 | 131 |
천체명칭 | 0.889266 | 0.851875 | 0.869792 | 82 |
질병/증상/증세 | 0.825712 | 0.746615 | 0.783278 | 204 |
화폐(통화) | 0.346154 | 0.25 | 0.290323 | 23 |
제품 | 0.591991 | 0.613933 | 0.602731 | 196 |
기간 | 0.769737 | 0.867371 | 0.815505 | 210 |
동물 종류 | 0.801515 | 0.743873 | 0.771213 | 164 |
계절 | 0.67 | 0.625 | 0.623188 | 25 |
자연 | 0.661321 | 0.599231 | 0.624736 | 76 |
스포츠 | 0.681624 | 0.597222 | 0.628788 | 62 |
음료 | 0.719608 | 0.783333 | 0.748832 | 117 |
기후/날씨 | 0.574797 | 0.59457 | 0.58127 | 125 |
사건 | 0.638889 | 0.632331 | 0.635325 | 54 |
제작물/작품 | 0.659329 | 0.673122 | 0.665963 | 518 |
언어 | 0.346154 | 0.428571 | 0.382979 | 24 |
조직/기관 | 0.667303 | 0.618192 | 0.641447 | 508 |
문화/문명 | 0.584399 | 0.48913 | 0.530319 | 47 |
6. Problems and Solutions
- 데이터 라벨 불균형
- 적은 라벨 데이터 제외