--- language: - ko license: mit tags: - spacy - token-classification - named-entity-recognition - korean - klue - roberta model-index: - name: ner-kor-roberta_aihub_094_208_90k results: - task: type: token-classification name: Named Entity Recognition metrics: - type: f1 value: 0.9046 name: F1 (overall) - type: precision value: 0.8795 name: Precision (overall) - type: recall value: 0.9312 name: Recall (overall) base_model: - klue/roberta-base --- # ner-kor-roberta_aihub_094_208_90k 한국어 개체명 인식(NER) 모델입니다. [KLUE RoBERTa-base](https://huggingface.co/klue/roberta-base)를 백본으로, AIHub 한국어 NER 데이터셋(약 90만 문장)으로 파인튜닝하였습니다. spaCy 3.8 + spacy-transformers 파이프라인으로 학습되었습니다. --- ## 지원 레이블 | 레이블 | 의미 | 예시 | |--------|------|------| | `PER` | 인물 (Person) | 이순신, 홍길동 | | `ORG` | 기관·조직 (Organization) | 삼성전자, 국립중앙박물관 | | `LOC` | 장소·지명 (Location) | 서울, 한강, 여수 | | `ADD` | 주소 (Address) | 서울특별시 강남구 테헤란로 | | `DAT` | 날짜·기간 (Date) | 2024년 1월, 지난주 | | `TIM` | 시간 (Time) | 오후 3시, 새벽 | | `QT` | 수량·수치 (Quantity) | 3kg, 100명, 5천원 | | `PHN` | 전화번호 (Phone) | 010-1234-5678 | | `URL` | URL·이메일 (URL) | www.example.com | --- ## 학습 데이터 예시 {"text": "관광지명 38해변", "entities": [[5, 9, "LOC"]]} ## 성능 (test set, 90,873 문장) | 레이블 | Precision | Recall | F1 | |--------|-----------|--------|-----| | **전체** | **0.8795** | **0.9312** | **0.9046** | | ADD | 0.9990 | 0.9997 | 0.9994 | | PHN | 0.9873 | 0.9915 | 0.9894 | | URL | 0.9793 | 0.9833 | 0.9813 | | TIM | 0.9202 | 0.9122 | 0.9162 | | DAT | 0.8245 | 0.9659 | 0.8896 | | QT | 0.8147 | 0.9163 | 0.8625 | | LOC | 0.8182 | 0.8840 | 0.8498 | | PER | 0.6778 | 0.7847 | 0.7273 | | ORG | 0.6807 | 0.7338 | 0.7063 | --- ## 사용법 ### spaCy로 직접 사용 ```python import spacy nlp = spacy.load("경로/또는/모델명") doc = nlp("이순신 장군은 전라도 여수에서 싸웠다.") for ent in doc.ents: print(ent.text, ent.label_) # 이순신 PER # 전라도 LOC # 여수에서 LOC ``` --- ## 학습 정보 | 항목 | 값 | |------|----| | 백본 모델 | `klue/roberta-base` | | 프레임워크 | spaCy 3.8 + spacy-transformers | | 학습 데이터 | AIHub 한국어 NER 데이터셋 | | 학습 문장 수 | 726,972 | | 검증 문장 수 | 90,871 | | 테스트 문장 수 | 90,873 | | 총 학습 스텝 | 20,000 | | 옵티마이저 | Adam (lr=5e-5, warmup 250 steps) | | Mixed Precision | FP16 (`mixed_precision = true`) | | Batch 전략 | `batch_by_padded` (size=2000) | | Gradient 누적 | 3 subbatch | --- ## 모델 파일 구조 이 모델은 spaCy 포맷으로 저장되어 있으며 `spacy.load()`로 직접 로드할 수 있습니다. ``` model-best/ ├── config.cfg # spaCy 파이프라인 설정 ├── meta.json # 모델 메타데이터 및 성능 기록 ├── transformer/ # klue/roberta-base 파인튜닝 가중치 (444MB) ├── ner/ # NER 전이 파서 가중치 ├── doc_cleaner/ # 메모리 관리 컴포넌트 └── vocab/ # 어휘 사전 ``` --- ## 라이선스 MIT