KPF-BERT Korean PII NER
ํ๊ตญ์ด ๋ฌธ์ฅ์์ 33์ข
์ ๊ฐ์ธ์ ๋ณด(PII)๋ฅผ ๋ฌธ์ span ๋จ์๋ก ํ์งํ๋๋ก KPF/KPF-bert-ner๋ฅผ ํ์ธํ๋ํ BERT ํ ํฐ ๋ถ๋ฅ ๋ชจ๋ธ์
๋๋ค.
๋ชจ๋ธ ๊ฐ์
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ๊ธฐ๋ฐ ๋ชจ๋ธ | KPF/KPF-bert-ner |
| ๊ตฌ์กฐ | BERT token classification |
| ์ถ๋ ฅ | BIO ํ๊น |
| PII ์ ํ | 33 |
| BIO ๋ผ๋ฒจ | 67 (O ํฌํจ) |
| ์ต๋ ์ ๋ ฅ ๊ธธ์ด | 512 ํ ํฐ |
| ํ์ต ๋ฐ์ดํฐ | townboy/korean-pii-dataset |
์ ์ฒด ๋ผ๋ฒจ ๋งคํ์ config.json๊ณผ label_map.json์์ ํ์ธํ ์ ์์ต๋๋ค. ์ค์ ํ์ต๋ ํ๋ผ๋ฏธํฐ๋ model.safetensors์ ๋ค์ด ์์ต๋๋ค.
๋ผ์ด์ ์ค ๋ฐ ์ถ์ฒ
์ด ์ ์ฅ์์ ํ์ธํ๋ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๋ฉํ๋ฐ์ดํฐยทํ์ฒ๋ฆฌ ์ฝ๋๋ MIT License๋ก ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ธ์ KPF/KPF-bert-ner๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ธํ๋ํ์ต๋๋ค. KPF ์๋ณธ ํ๋ก์ ํธ์ ๋ผ์ด์ ์ค์ ์ถ์ฒ๋ฅผ ํจ๊ป ํ์ธํด์ผ ํ๋ฉฐ, ์๋ณธ KPF-BERT ํ๋ก์ ํธ๋ MIT License๋ฅผ ํ์ํ๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ํ์ธํ๋ ๋ชจ๋ธ์ MIT License ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฌ์ฉยท์์ ยท์ฌ๋ฐฐํฌยท์์
์ ์ด์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฌ๋ฐฐํฌ ์ ์ด ์ ์ฅ์์ LICENSE์ NOTICE, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฐ ํ๋ก์ ํธ์ ์ ์๊ถยท๋ผ์ด์ ์ค ๊ณ ์ง๋ฅผ ํจ๊ป ์ ์งํด์ผ ํฉ๋๋ค.
- ๊ธฐ๋ฐ ๋ชจ๋ธ: KPF/KPF-bert-ner
- ์๋ณธ ํ๋ก์ ํธ ๋ฐ ๋ผ์ด์ ์ค: KPF-bigkinds/BIGKINDS-LAB
- ์ด ์ ์ฅ์์ ๋ผ์ด์ ์ค ์ ๋ฌธ:
LICENSE
KPF/KPF-bert-ner Hugging Face ์นด๋์๋ ๋ณ๋์ ๋ผ์ด์ ์ค ๋ฉํ๋ฐ์ดํฐ๊ฐ ํ์๋์ง ์์ผ๋ฏ๋ก, ๋ฐฐํฌยท์์
์ ์ด์ฉ ์ ์๋ ๊ธฐ๋ฐ ๋ชจ๋ธ์ ์ต์ ์กฐ๊ฑด์ ์ง์ ํ์ธํด์ผ ํฉ๋๋ค. ์ด ์ ์ฅ์์ ๋ผ์ด์ ์ค ํ์๋ ์ ๊ฐ ์ถ๊ฐํ ํ์ธํ๋ ์ฐ์ถ๋ฌผ์ ๋ํ ๊ฒ์ด๋ฉฐ, ๊ธฐ๋ฐ ๋ชจ๋ธ์ ๊ถ๋ฆฌ๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค.
License
The original fine-tuning artifacts, metadata, and auxiliary code in this repository are released under the MIT License. See LICENSE and NOTICE. This model is a derivative of KPF/KPF-bert-ner; users must also comply with the applicable terms of the upstream model.
Accordingly, this fine-tuned model may be used, modified, redistributed, and used commercially under the MIT License, provided that the copyright and license notices in LICENSE, NOTICE, and the upstream projects are retained.
์ฌ์ฉ๋ฒ
from transformers import AutoModelForTokenClassification, AutoTokenizer, pipeline
model_id = "townboy/kpfbert-ner"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForTokenClassification.from_pretrained(model_id)
ner = pipeline(
"token-classification",
model=model,
tokenizer=tokenizer,
aggregation_strategy="simple",
)
text = "ํ์ ์ด๋ฆ์ ํ๊ธธ๋์ด๊ณ ์ด๋ฉ์ผ์ hong@example.com์
๋๋ค."
print(ner(text))
512 ํ ํฐ์ ๋๋ ์ ๋ ฅ์ ๋ฌธ์ฅ ๊ฒฝ๊ณ๋ ๊ฒน์น๋ window ๋จ์๋ก ๋๋ ์ถ๋ก ํ ๋ค ์๋ฌธ ์์น๋ก ํฉ์ณ์ผ ํฉ๋๋ค. ๋จ์ํ ๋ท๋ถ๋ถ์ ์๋ผ๋ด๋ฉด ํด๋น ๋ถ๋ถ์ PII๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ ์ธ๊ตญ์ธ๋ฑ๋ก๋ฒํธ ์ ๊ทํ
๋ชจ๋ธ์ ์ฑ๋ณยท์ธ๊ธฐ ์ฝ๋๊ฐ ๋ฌธ๋งฅ ๋จ์ด์ ์ถฉ๋ํ๋ counterfactual ์์๋ ํ์ตํ์ต๋๋ค. ๊ทธ๋๋ ๊ตฌ์กฐ๊ฐ ๋ช
ํํ 13์๋ฆฌ ๋ฒํธ๋ ํ๋ฅ ๋ชจ๋ธ์๋ง ๋งก๊ธฐ์ง ์๊ณ 7๋ฒ์งธ ์ซ์๋ก ์ต์ข
๋ผ๋ฒจ์ ์ ๊ทํํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค. korean_id_postprocess.py๊ฐ ์ ์ฒด span์ ํฉ์น๊ณ ์ฝ๋ 14๋ฅผ RRN, 58์ ALIEN_NUMBER๋ก ๋ณด์ ํฉ๋๋ค.
from korean_id_postprocess import normalize_korean_id_entities
raw_entities = ner(text)
entities = normalize_korean_id_entities(text, raw_entities)
์ด ์ ๊ทํ๋ ๋ฒํธ ์ข ๋ฅ๋ง ํ๋ณํฉ๋๋ค. ์ค์ ์ ํจ์ฑ์ ๋ณ๋์ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธยท์ธ๊ตญ์ธ๋ฑ๋ก๋ฒํธ ์ฒดํฌ์ฌ ๊ฒ์ฆ์ ํจ๊ป ์ ์ฉํด์ผ ํฉ๋๋ค.
์ง์ ๋ชจ๋ธ ํ๊ท ํ
์คํธ์์๋ ๋ฌธ๋งฅ ๋จ์ด๊ฐ ๋ฒํธ ์ฝ๋์ ์ถฉ๋ํ๋ 4๊ฐ ์ฌ๋ก๋ฅผ ๋ชจ๋ ํต๊ณผํ๊ณ , ์ฒดํฌ์ฌ์ด ์ ํจํ ๋ฌด๋ผ๋ฒจ ๋ช
๋จ์ ์ด๋ฆยท๋ฒํธ 8๊ฐ๋ ๋ชจ๋ ํ์งํ์ต๋๋ค. 499ํ ํฐ ์
๋ ฅ ๋์ ๋ฒํธ ์ญ์ ํ์งํ์ต๋๋ค. ์์ธ ๊ฒฐ๊ณผ์ ์๋์ ์ผ๋ก ์๋ชป ๋ง๋ ๋ฒํธ์ ๋ํ ํ๊ณ๋ korean_id_regression_results.json์ ๊ธฐ๋กํ์ต๋๋ค.
ํ์ต
- ํ์ต ๋ฌธ์: 9,227
- Validation ๋ฌธ์: 1,510
- ์ต์ข
counterfactual ์ ์ : 1 epoch, learning rate
5e-6 - ์ผ๋ฐ ๋ผ๋ฒจ ์์ ํ: 1 epoch, learning rate
1e-6 - Effective batch size: 32
- ์ต๋ ๊ธธ์ด: 512
- Loss: standard cross-entropy
- Validation micro-F1:
0.996463
๋ง์ง๋ง ์ ์ ํ์ต์ class-weighted loss๊ฐ ์๋๋ผ ํ์ค cross-entropy๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ด๋ ๋ชจ๋ธ ๊ฐ์ค์น๊ฐ ๋น ์ก๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค. ํ์ต๋ ๋ชจ๋ธ ๊ฐ์ค์น๋ model.safetensors์ ์์ผ๋ฉฐ, class weight๋ ํ์ต ์ค loss์๋ง ์ ์ฉ๋๋ ์ ํ ์ค์ ์
๋๋ค. ์์ธ ๊ฐ์ training_config.json๊ณผ training_provenance.json์ ์์ต๋๋ค.
์ ์ฅ์์ class_weights.json์ ์ด์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๊ฐ ํผ๋ํ์ง ์๋๋ก ๋จ๊ฒจ ๋ ํธํ์ฑ ์๋ด ํ์ผ์
๋๋ค. ์ต์ข
๋ชจ๋ธ ํ์ต์๋ class weight๋ฅผ ์ ์ฉํ์ง ์์์ต๋๋ค.
์ต์ข ํ๊ฐ ๋ฐฉ๋ฒ
๊ณต๊ฐ ํ์ต corpus ๋ฐ ์๊ณ๊ฐ ๋ณด์ ์ธํธ์ ํ ํ๋ฆฟยท๊ฐ์ด ๊ฒน์น์ง ์๋ ๋ณ๋ ํฉ์ฑ holdout 1,320๋ฌธ์๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
- ๋ผ๋ฒจ๋ณ ์ ๋ต PII span: 100๊ฐ
- ์ ์ฒด ์ ๋ต span: 3,300๊ฐ
- ๋งค์นญ: ๋ผ๋ฒจยท๋ฌธ์ ์์ยท๋ฌธ์ ๋์ด ๋ชจ๋ ๊ฐ์ exact span
- Confidence: span์ ๊ตฌ์ฑํ๋ ํ ํฐ ํ๋ฅ ์ ์ต์๊ฐ
- ํ๊ฐ ์ ๋ ฅ ์ต๋ ๊ธธ์ด: 512
- ์ด holdout์ ์ต์ข ๋ชจ๋ธ์ ํ ๋ฒ๋ง ์ฌ์ฉํ์ต๋๋ค.
| ์งํ | Precision | Recall | F1 |
|---|---|---|---|
| Macro | 0.8435 | 0.9445 | 0.8834 |
| Micro | 0.7966 | 0.9445 | 0.8643 |
์ด ์ ์๋ ๋ฌธ์ฅ๋น PII ํ๋์ ์งง์ ์ ํ ๋ฌธ์ฅ ์ค์ฌ์ validation ์ ์๋ณด๋ค ํจ์ฌ ์๊ฒฉํ ์กฐ๊ฑด์์ ์ธก์ ํ์ต๋๋ค. ํยท๋ชฉ๋กยทCSVยทJSON, ๋ผ๋ฒจ ์๋ด์ด๊ฐ ์๋ ๋ฌธ์ฅ, ์ฌ๋ฌ ์ฌ๋๊ณผ ์ฌ๋ฌ PII๊ฐ ํจ๊ป ๋ฑ์ฅํ๋ ๊ธด ๋ฌธ์๋ฅผ ํฌํจํฉ๋๋ค.
๋ผ๋ฒจ๋ณ ์ต์ข ์ฑ๋ฅ
| Label | Precision | Recall | F1 |
|---|---|---|---|
| ACCOUNT_NUMBER | 0.821 | 0.870 | 0.845 |
| ADDRESS | 0.874 | 0.900 | 0.887 |
| AGE | 0.893 | 1.000 | 0.943 |
| ALIEN_NUMBER | 0.907 | 0.970 | 0.937 |
| BIRTHDATE | 0.980 | 1.000 | 0.990 |
| BLOOD_TYPE | 0.672 | 0.860 | 0.754 |
| CARD_NUMBER | 0.870 | 1.000 | 0.930 |
| CITY | 1.000 | 1.000 | 1.000 |
| DEPARTMENT | 0.958 | 0.920 | 0.939 |
| DRIVER_LICENSE | 0.833 | 0.900 | 0.865 |
| 0.926 | 1.000 | 0.962 | |
| EMPLOYEE_ID | 0.633 | 1.000 | 0.775 |
| GENDER | 0.908 | 0.990 | 0.947 |
| HEIGHT | 0.882 | 0.970 | 0.924 |
| IP_ADDRESS | 0.797 | 0.940 | 0.862 |
| MAJOR | 0.893 | 1.000 | 0.943 |
| MEMBER_ID | 0.887 | 0.940 | 0.913 |
| NAME | 0.798 | 0.990 | 0.884 |
| NATIONALITY | 1.000 | 1.000 | 1.000 |
| NICKNAME | 0.262 | 0.710 | 0.383 |
| PARTICIPANT_ID | 0.405 | 0.980 | 0.573 |
| PASSPORTNUM | 0.990 | 0.990 | 0.990 |
| PHONE | 0.990 | 1.000 | 0.995 |
| POSITION | 0.786 | 0.990 | 0.876 |
| RELIGION | 1.000 | 0.800 | 0.889 |
| RRN | 0.912 | 0.930 | 0.921 |
| SCHOOL | 0.980 | 1.000 | 0.990 |
| URL | 0.826 | 0.900 | 0.861 |
| USER_ID | 0.715 | 0.880 | 0.789 |
| VEHICLE_NUMBER | 0.807 | 0.880 | 0.842 |
| WEIGHT | 0.883 | 0.980 | 0.929 |
| WORKPLACE | 0.907 | 0.980 | 0.942 |
| ZIPCODE | 0.841 | 0.900 | 0.870 |
๊ณ์ฐ์ ์ฌ์ฉํ TP/FP/FN๊ณผ ์ ์ฒด ์์์ ๊ฐ์ per_label_metrics.json, ์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ raw_evaluation_results.json์ ์์ต๋๋ค.
Confidence ์๊ณ๊ฐ
label_thresholds.json๊ณผ threshold_policy.json์๋ ๋ณ๋์ ํฉ์ฑ calibration ์ธํธ 3,960๋ฌธ์์์ ๊ณ์ฐํ ๋ผ๋ฒจ๋ณ low/high ๊ฐ์ด ์์ต๋๋ค. ์ด ๊ฐ์ ๋ชจ๋ธ F1 ์์ฒด๊ฐ ์๋๋ผ ์์ธก confidence๋ฅผ ํ์ ์ฒ๋ฆฌํ ๋ ์ฐธ๊ณ ํ๋ ๋ณด์์ ์ ์ฑ
์
๋๋ค.
๊ธฐ์กด ๊ฒฝ๋ก์ธ label_thresholds_calibration_v1.json์ ์ญ์ ํ์ง ์๊ณ ์ ํ์ผ ์์น๋ฅผ ์๋ ค ์ฃผ๋ ํธํ์ฑ ์๋ด ํ์ผ๋ก ์ ์งํฉ๋๋ค. ์ค์ ์๊ณ๊ฐ์ ๋ฐ๋์ label_thresholds.json ๋๋ threshold_policy.json์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด๊ธฐ ์ ์ฑ
์์๋ low ๋ฏธ๋ง ํ๋ณด๋ ์๋ ํ๊ธฐํ์ง ์์ต๋๋ค. Calibration์์ ์๊ฒฉํ ์กฐ๊ฑด์ ํต๊ณผํ EMAIL, NATIONALITY, SCHOOL๋ง 0.999 ์ด์์์ ์๋ ์ฑํ ๋์์ผ๋ก ํ์ํ๊ณ , ๋๋จธ์ง๋ ์ถ๊ฐ ๊ฒํ ๊ฐ ํ์ํ ํ๋ณด๋ก ๋ก๋๋ค. ์ ๋
๋ฆฝ ์ต์ข
holdout์์ ์ด ์๋ ์ฑํ ๊ตฌ๊ฐ์ FP๋ 0๊ฑด์ด์์ต๋๋ค. ์ด์ ๋ถํฌ์์ ๋ก๊ทธ์ ์ ๋ต์ด ์ถฉ๋ถํ ์์ด๊ธฐ ์ ๊น์ง low ๊ฐ๋ง ๋ณด๊ณ ํ์ง ํ๋ณด๋ฅผ ํ๊ธฐํ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
ํ๊ณ
- ํ์ต ๋ฐ ํ๊ฐ ๋ฐ์ดํฐ๊ฐ ํฉ์ฑ์ด๋ฏ๋ก ์ค์ ๊ฐ์ธ์ ๋ณด, RAG ์๋ต, OCR ๋ฌธ์, ์ ๋ฌด ๋๋ฉ์ธ์ ์ฑ๋ฅ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
NICKNAME,PARTICIPANT_ID,BLOOD_TYPE,EMPLOYEE_ID,USER_ID๋ ์ต์ข holdout์์ ์๋์ ์ผ๋ก ๋ฎ์์ต๋๋ค. ํนํNICKNAME์ raw F1์0.383์ด๋ฏ๋ก ์๋ ํ์ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.- ์ด๋ฆยท์์ยท์ง๊ธ์ฒ๋ผ ํํ๊ฐ ๊ณ ์ ๋์ง ์์ PII๋ ๋ฌธ๋งฅ๊ณผ ๋๋ฉ์ธ์ ์ํฅ์ ๋ง์ด ๋ฐ์ต๋๋ค.
- ์ ๊ท์ยท์ฒดํฌ์ฌ์ผ๋ก ํ๋ณ ๊ฐ๋ฅํ ๊ตฌ์กฐ์ PII๋ NER ๊ฒฐ๊ณผ์ ๋ณ๋๋ก ๊ฒ์ฆํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- 512 ํ ํฐ๋ณด๋ค ๊ธด ๋ฌธ์๋ window ์ถ๋ก ์ด ํ์ํฉ๋๋ค.
- ๋ชจ๋ธ ํ๋๋ง์ผ๋ก ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ ๋ฒ์ ์ค์๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- Downloads last month
- 180
Model tree for townboy/kpfbert-ner
Base model
KPF/KPF-bert-nerDataset used to train townboy/kpfbert-ner
Evaluation results
- Micro F1 on Private synthetic final holdoutself-reported0.864
- Micro precision on Private synthetic final holdoutself-reported0.797
- Micro recall on Private synthetic final holdoutself-reported0.945