pii-ner-kcelectra

ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ์—์„œ ๊ฐœ์ธ์ •๋ณด(์ด๋ฆ„ยท์ฃผ์†Œยทํ•™๊ตยท์ „ํ™”๋ฒˆํ˜ธ)๋ฅผ ํƒ์ง€ํ•ด ๋ธ”๋Ÿฌ/๋งˆ์Šคํ‚นํ•˜๊ธฐ ์œ„ํ•œ NER ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. beomi/KcELECTRA-base-v2022๋ฅผ ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ๋กœ ํŒŒ์ธํŠœ๋‹ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ผ๋ฒจ

๋ผ๋ฒจ ๋Œ€์ƒ
NAME ์‚ฌ๋žŒ ์ด๋ฆ„ (์„ฑ+์ด๋ฆ„, ์ด๋ฆ„ ๋‹จ๋…)
ADDR ์ฃผ์†Œ (๋„๋กœ๋ช…์ฃผ์†Œ, ์ง€๋ฒˆ์ฃผ์†Œ)
SCHOOL ํ•™๊ต (์ดˆยท์ค‘ยท๊ณ  โ€” ์ „์ฒดํ˜• ์„œ์šธ๊ฐ•๋‚จ์ดˆ๋“ฑํ•™๊ต ๋ฐ ์•ฝ์นญ ๊ฐ•๋‚จ์ค‘, ์„œ์šธ๊ณ )
PHONE ์ „ํ™”๋ฒˆํ˜ธ
ID ๋ฉ”์‹ ์ €/SNS ์•„์ด๋”” (๋ผ์ธ, ์นดํ†ก, ํ…”๋ ˆ๊ทธ๋žจ ๋“ฑ)

BIO ์Šคํ‚ด: O + ๊ฐ ๋ผ๋ฒจ์˜ B-/I-

ํ•™์Šต ๋ฐ์ดํ„ฐ

์‹ค์ œ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ…œํ”Œ๋ฆฟ ์ฃผ์ž… ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ 20,000๋ฌธ์žฅ (3 epoch):

  • ์ด๋ฆ„: ํ†ต๊ณ„์ฒญ ์„ฑ์”จ 532์ข… ร— ๋‚จ๋…€ ์ด๋ฆ„ ์•ฝ 62๋งŒ ์ข… ๋žœ๋ค ์กฐํ•ฉ
  • ์ฃผ์†Œ: ํ–‰์ •์•ˆ์ „๋ถ€ ๋„๋กœ๋ช…์ฃผ์†Œ ์ „์ฒด๋ถ„(2026.07)์—์„œ ์ƒ˜ํ”Œ๋งํ•œ ์‹ค์ œ ์ฃผ์†Œ 64,221๊ฑด (๋„๋กœ๋ช… + ์ง€๋ฒˆ ํ˜ผํ•ฉ)
  • ์ „ํ™”๋ฒˆํ˜ธ: ํœด๋Œ€ํฐ/์ง€์—ญ๋ฒˆํ˜ธ ํ˜•์‹ ๋žœ๋ค ์ƒ์„ฑ
  • ์•ˆ๋‚ด๋ฌธยท์„œ์‹ยท๋Œ€ํ™”ยท๊ธฐ์‚ฌยท์—…๋ฌด์ฒด ๋“ฑ 38์ข… ํ…œํ”Œ๋ฆฟ + PII ์—†๋Š” negative ๋ฌธ์žฅ ํฌํ•จ

์ฃผ์ž… ์œ„์น˜๊ฐ€ ๊ณง ์ •๋‹ต ๋ผ๋ฒจ์ด๋ฏ€๋กœ ๋ผ๋ฒจ ๋…ธ์ด์ฆˆ๊ฐ€ ์—†๊ณ , ์‚ฌ์ „์— ์—†๋Š” ํฌ๊ท€ ์ด๋ฆ„ ์กฐํ•ฉ๋„ ๋ฌธ๋งฅ(ํ˜ธ์นญ, ์กฐ์‚ฌ ๋“ฑ)์œผ๋กœ ์ผ๋ฐ˜ํ™”ํ•˜๋„๋ก ํ•™์Šต๋ฉ๋‹ˆ๋‹ค.

v2 โ€” ๋„๋ฉ”์ธ ์ ์‘: ์œ„ ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ์— ๋”ํ•ด โ‘  ์‹ค์ œ SNS/์ปค๋ฎค๋‹ˆํ‹ฐ ํฌ๋กค๋ง ํ…์ŠคํŠธ 22k(์ด๋ฆ„ ์‚ฌ์ „ยทID ํŒจํ„ด์œผ๋กœ PII ๋ถ€์žฌ ๊ฒ€์ฆ) โ€” ์ ˆ๋ฐ˜์€ negative, ์ ˆ๋ฐ˜์€ PII ์ฃผ์ž… โ‘ก NAVER NER ๋‰ด์Šค ์ฝ”ํผ์Šค 20k(gold ์ด๋ฆ„ ๋ผ๋ฒจ)๋ฅผ ์„ž์–ด ์žฌํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์–ด์ฒดยทํ•ด์‹œํƒœ๊ทธ ํ…์ŠคํŠธ์—์„œ์˜ ๊ณผ๋งˆ์Šคํ‚น์ด ํฌ๊ฒŒ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค (์‹ค์ „ 300๊ฑด ๊ธฐ์ค€ ์˜คํƒ ์—”ํ‹ฐํ‹ฐ 5,488 โ†’ 200 ๋‚ด์™ธ). KMOU ๋‰ด์Šค ์ฝ”ํผ์Šค(2,422 ์—”ํ‹ฐํ‹ฐ) ์ด๋ฆ„ ํƒ์ง€ 82.6% โ€” ๋ฏธํƒ ๋Œ€๋ถ€๋ถ„์€ ์ต๋ช… ์ด๋‹ˆ์…œ(A/B)ยท๊ณต์ธ.

v3 โ€” ํ•™๊ต(์ดˆ์ค‘๊ณ ) ๋ผ๋ฒจ ์ถ”๊ฐ€: ๋„๋กœ๋ช…์ฃผ์†Œ ์ง€์—ญ๋ช… 4์ฒœ์—ฌ ์ข…์— ์ดˆ๋“ฑํ•™๊ต/์ค‘ํ•™๊ต/๊ณ ๋“ฑํ•™๊ต๋ฅผ ๋ถ™์ธ ์ „์ฒดํ˜•๊ณผ ์•ฝ์นญ(์„œ์šธ๊ฐ•๋‚จ์ดˆ, ๊ฐ•๋‚จ์ค‘, ์„œ์šธ๊ณ )์„ ํ•ฉ์„ฑํ•ด ํ•™์Šต ํ’€์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ์นญ์€ ์ค‘๊ณ ยท์ตœ๊ณ ยท๊ธฐ์ดˆยท๊ณ 3 ๋“ฑ ์ผ๋ฐ˜์–ด์™€ ์ถฉ๋Œํ•˜๋ฏ€๋กœ ์ด๋“ค์„ ํ•˜๋“œ ๋„ค๊ฑฐํ‹ฐ๋ธŒ๋กœ ํ•จ๊ป˜ ๋„ฃ์–ด ์ •๋ฐ€๋„๋ฅผ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•™๊ต ์•ฝ์นญ ํƒ์ง€ ์žฌํ˜„์œจ 29/30(์ถ”๊ฐ€ ์ „ 0/30), ํ•˜๋“œ ๋„ค๊ฑฐํ‹ฐ๋ธŒ ์˜คํƒ 0. ์ „์ฒดํ˜•์€ ์ •๊ทœ์‹ ๋ ˆ์ด์–ด(โ€ฆ์ดˆ๋“ฑํ•™๊ต/์ค‘ํ•™๊ต/๊ณ ๋“ฑํ•™๊ต)๋„ ๋ณ‘ํ–‰ ์ปค๋ฒ„.

์„ฑ๋Šฅ

์‹ค๋ฐ์ดํ„ฐ ๊ฒ€์ฆ โ€” NAVER NER ์ฝ”ํผ์Šค(๋‰ด์Šค ๋„๋ฉ”์ธ, ํ•™์Šต์— ๋ฏธ์‚ฌ์šฉ) 1,000๋ฌธ์žฅ / PER ์—”ํ‹ฐํ‹ฐ 1,398๊ฐœ:

๋ชจ๋ธ ์ด๋ฆ„ ํƒ์ง€ recallยน ์ด๋ฆ„ ์™„์ „ ๋งˆ์Šคํ‚นยฒ
๋ณธ ๋ชจ๋ธ (v3) 91.0% 86.6%
๋ฒ ์ด์Šค๋ผ์ธ (KoELECTRA modu-ner) 85.7% 66.6%

v2๋Š” v1(๋‰ด์Šค ํƒ์ง€ 97.9%) ๋Œ€๋น„ ๋‰ด์Šค ์ด๋ฆ„ recall์„ ์•ฝ๊ฐ„ ์–‘๋ณดํ•˜๋Š” ๋Œ€์‹ , ๊ตฌ์–ด์ฒด ์‹ค์ „ ํ…์ŠคํŠธ์—์„œ์˜ ๋Œ€๋Ÿ‰ ์˜ค๋งˆ์Šคํ‚น์„ ์ œ๊ฑฐํ•˜๊ณ  ID ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

ยน ์˜ˆ์ธก span์ด ์ด๋ฆ„๊ณผ ํ•œ ๊ธ€์ž ์ด์ƒ ๊ฒน์นจ (๋ธ”๋Ÿฌ๊ฐ€ ์ด๋ฆ„์„ ๊ฑด๋“œ๋ ธ๋Š”๊ฐ€) ยฒ ์ด๋ฆ„ ๋ณธ์ฒด(์กฐ์‚ฌยท๋ฌธ์žฅ๋ถ€ํ˜ธยท๊ด„ํ˜ธ ๋ณ‘๊ธฐ ์ œ์™ธ)์˜ ๋ชจ๋“  ๊ธ€์ž๊ฐ€ ๋งˆ์Šคํ‚น๋จ. ๋‚จ์€ ์‹คํŒจ๋Š” ๋Œ€๋ถ€๋ถ„ ์˜ˆ๋ช…ยท๋ณ„๋ช…("๋ฏธ์ƒ", "๊ฐ€๋น„")๊ณผ ์™ธ๊ตญ์ธ ์Œ์—ญ ๋ณตํ•ฉ ํ‘œ๊ธฐ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ํ•™์Šต๊ณผ ๋™์ผํ•œ ์ƒ์„ฑ ๋ฐฉ์‹์˜ ํ•ฉ์„ฑ ํ™€๋“œ์•„์›ƒ(300๋ฌธ์žฅ)์—์„œ๋Š” NAME/ADDR/PHONE ๋ชจ๋‘ recall 100%๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ, ์ด๋Š” in-distribution ์ˆ˜์น˜์ด๋ฏ€๋กœ ์„ฑ๋Šฅ ์ง€ํ‘œ๋กœ๋Š” ์œ„์˜ ์‹ค๋ฐ์ดํ„ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค. ๋น„-PII ๋ฌธ์ž ์˜ค๋งˆ์Šคํ‚น์€ ์•ฝ 2.3%.

โš ๏ธ ๋‰ด์Šค ์™ธ ๋„๋ฉ”์ธ(๊ตฌ์–ด์ฒด ์ปค๋ฎค๋‹ˆํ‹ฐ, OCR ํ…์ŠคํŠธ ๋“ฑ)์—์„œ๋Š” ์„ฑ๋Šฅ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ ์šฉ ์ „ ์ž์ฒด ๋ฐ์ดํ„ฐ๋กœ ๊ฒ€์ฆ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

from transformers import pipeline

pipe = pipeline("token-classification",
                model="kiyuyeon/pii-ner-kcelectra",
                aggregation_strategy="simple")

text = "๊น€๋ฏผ์ˆ˜(010-1234-5678)๊ฐ€ ์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ ํ…Œํ—ค๋ž€๋กœ 12๊ธธ 34๋กœ ์ด์‚ฌํ–ˆ๋‹ค."
for e in pipe(text):
    print(e["entity_group"], text[e["start"]:e["end"]])

๋งˆ์Šคํ‚น ์ ์šฉ:

def mask(text, entities, ch="โ– "):
    chars = list(text)
    for e in entities:
        chars[e["start"]:e["end"]] = ch * (e["end"] - e["start"])
    return "".join(chars)

print(mask(text, pipe(text)))

๊ถŒ์žฅ: ๋ธ”๋Ÿฌ ์šฉ๋„๋กœ๋Š” ๋ชจ๋ธ ๋‹จ๋…๋ณด๋‹ค ์ •๊ทœ์‹๊ณผ์˜ union์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ pii_mask.py๋Š” ๋‹ค์Œ ์ •๊ทœ์‹ ๋ ˆ์ด์–ด๋ฅผ ๋ชจ๋ธ span๊ณผ ํ•ฉ์ณ ๋งˆ์Šคํ‚นํ•ฉ๋‹ˆ๋‹ค:

  • ์ „ํ™”๋ฒˆํ˜ธ: ๋Œ€์‹œ/๊ณต๋ฐฑ/๋ถ™์—ฌ์“ฐ๊ธฐ(01012345678), ์ง€์—ญ๋ฒˆํ˜ธ, +82 ๊ตญ์ œํ˜•์‹. ์ˆซ์ž ๊ฒฝ๊ณ„ ๊ฐ€๋“œ๋กœ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ๋“ฑ ๊ธด ์ˆซ์ž์—ด ๋‚ด๋ถ€ ์˜คํƒ ๋ฐฉ์ง€
  • ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ
  • ๊ณ„์ขŒ๋ฒˆํ˜ธ: ๋Œ€์‹œ ๊ตฌ๋ถ„ 3๊ทธ๋ฃน+(๋งˆ์ง€๋ง‰ ๊ทธ๋ฃน 4์ž๋ฆฌ ์ด์ƒ ์กฐ๊ฑด์œผ๋กœ ๋‚ ์งœ ๋ฐฐ์ œ), ๋Œ€์‹œ ์—†๋Š” 10~14์ž๋ฆฌ๋Š” "๊ณ„์ขŒ/์ž…๊ธˆ/์†ก๊ธˆ/์ถœ๊ธˆ/ํ™˜๋ถˆ" ๋ฌธ๋งฅ ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ (์ฃผ๋ฌธ๋ฒˆํ˜ธยท์šด์†ก์žฅ๋ฒˆํ˜ธ์™€ ๊ตฌ๋ถ„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ)
  • ์ฃผ์†Œ: ํ–‰์ •๊ตฌ์—ญ + โ€ฆ๋กœ/โ€ฆ๊ธธ/โ€ฆ๋™ + ๋ฒˆ์ง€ ํŒจํ„ด (๋„๋กœ๋ช…ยท์ง€๋ฒˆ)
  • ํ•™๊ต: ์ ‘๋‘์–ด + ์ดˆ๋“ฑํ•™๊ต/์ค‘ํ•™๊ต/๊ณ ๋“ฑํ•™๊ต ์ „์ฒดํ˜•(์•ฝ์นญ์€ ๋ชจ๋ธ์ด ๋‹ด๋‹น)
  • ์ง€์—ญ๋ช…: ๋„๋กœ๋ช…์ฃผ์†Œ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์ง€์—ญ๋ช… ์‚ฌ์ „ 4,005๊ฐœ (์‹œ๋„ยท์‹œ๊ตฐ๊ตฌยท์๋ฉด๋™, #์ˆ˜์› ๋“ฑ ํ•ด์‹œํƒœ๊ทธ ํฌํ•จ)
  • ์‹ค๋ช… ๋ฐฑ์Šคํ†ฑ: ์„ฑ์”จ+์ƒ์šฉ์ด๋ฆ„ ์‚ฌ์ „ ์ผ์น˜(์šฐ์ธก ๊ฒฝ๊ณ„ ์กฐ๊ฑด์œผ๋กœ ์šฉ์–ธ ์˜คํƒ ๋ฐฉ์ง€), ํ•ด์‹œํƒœ๊ทธ ์‹ค๋ช…(#๊น€์„ธ๋นˆ), ์„ฑ์”จยท์ด๋‹ˆ์…œ+ํ˜ธ์นญ("๊น€ ์”จ", "A์”จ", "๋ฐ• ๋Œ€ํ‘œ")

ํ•œ๊ณ„

  • ํ•ฉ์„ฑ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ํ•™์Šต์ด๋ผ ์‹ค์ œ ๋„๋ฉ”์ธ(๊ตฌ์–ด์ฒด ์ปค๋ฎค๋‹ˆํ‹ฐ, OCR ํ…์ŠคํŠธ ๋“ฑ)์—์„œ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ
  • ์™ธ๊ตญ์ธ ์ด๋ฆ„(์Œ์—ญ), ์˜ˆ๋ช…ยท๋‹‰๋„ค์ž„์€ ํ•™์Šต ๋ฒ”์œ„ ๋ฐ–
  • ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธยท์ด๋ฉ”์ผยท๊ณ„์ขŒ๋ฒˆํ˜ธ๋Š” ์ด ๋ชจ๋ธ์˜ ๋ผ๋ฒจ์— ์—†์Œ โ€” ์œ„์˜ ์ •๊ทœ์‹ ๋ ˆ์ด์–ด๊ฐ€ ๋‹ด๋‹น
  • ๋ฌธ๋งฅ ํ‚ค์›Œ๋“œ ์—†๋Š” ๋Œ€์‹œ ์—†๋Š” ์ˆซ์ž์—ด ๋‹จ๋…(์˜ˆ: 110123456789)์€ ๊ณ„์ขŒ๋ฒˆํ˜ธ๋กœ ํŒ์ •ํ•˜์ง€ ์•Š์Œ
Downloads last month
519
Safetensors
Model size
0.1B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for kiyuyeon/pii-ner-kcelectra

Finetuned
(15)
this model