/ Модель

Характеристики

Контекст
8 192 токена
Параметры
32,9 млн
Лицензия
Своя лицензия
Архитектура
lfm2 · dense
Библиотека
transformers
Опубликована
18 авг 2026

schift-ko-pii-v5

Заполнение пропусковТекст → текст6 профессий

Компактная корейская модель токен-классификации для обнаружения имён и адресов с дополнительной regex-постобработкой других типов персональных данных.

22скачиваний за 30 дней0лайковвеса обновлены18 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

schift-io/schift-ko-pii-v5 — модель для обнаружения персональных данных в корейском тексте. По карточке модели, разработчик schift.io; она предназначена для извлечения имён людей и адресов, а пакет schift-ko-pii дополняет её регулярными выражениями для распознавания структурированных данных, включая телефоны, идентификаторы и даты. Модель можно использовать для поиска и маскирования чувствительных фрагментов в тексте и файлах.

Это компактный двунаправленный токен-классификатор семейства LFM2 с гибридной архитектурой свёрточных и attention-слоёв: 6 слоёв, скрытый размер 512, линейная голова на 33 метки и разметка BIES. В репозитории указаны 32,9 млн параметров в метаданных и 34 млн в README; веса safetensors занимают 136 МБ. Используется токенизатор klue/roberta-base. Метаданные указывают контекст 8192 токена, тогда как README задаёт предел обработки 512 токенов.

Модель ориентирована на корейский язык; также в примерах карточки есть имена на ханча и иностранных языках. В бенчмарке README для модели приведены F1=0,578, точность 0,847 и полнота 0,439 без постобработки; показатели гибридного варианта с SDK включают regex-постобработку и не характеризуют одни только веса. Для использования непосредственно через Transformers README требует trust_remote_code=True. Лицензия в метаданных обозначена как other, без уточнения условий.

Сценарии применения

  • Поиск имён людей в корейских текстах
  • Обнаружение корейских почтовых и уличных адресов
  • Маскирование персональных данных в документах
  • Предварительная очистка текста перед передачей внешним сервисам

Ограничения

Без SDK-постобработки модель распознаёт только имена и адреса, а полнота обнаружения невысока (0,439 по бенчмарку README). README указывает ограничение 512 токенов на обработку и необходимость trust_remote_code=True для прямого использования через Transformers.

Для каких профессий подходит6

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

schift-ko-pii-v5

34M parameter Korean PII detector — 3x smaller, beats the 111M v4.

Hybrid detection: the model handles person names and addresses, the SDK postprocessor handles structured patterns (phone numbers, ID numbers, dates, URLs). 136 MB, CPU-only.

Benchmark (benchmark_v2, 253 cases)

Compared against every public Korean PII model on HuggingFace (as of Aug 2026).

ModelParamsF1PR
OpenMed-PII-Korean-NomicMed-Large395M0.0410.0290.071
OpenMed-PII-Korean-QwenMed-XLarge600M0.0840.0610.138
LFM2.5-Encoder-350M-PII350M0.2540.2070.328
FrameByFrame/korean-pii-e5-base~110M0.4350.3190.684
seungkukim/korean-pii-masking-v2~110M0.5530.6720.470
vmaca123/korean-pii-ner-v3~125M0.5690.8100.439
schift-ko-pii-v4111M0.7020.6020.842
schift-ko-pii-v534M0.8230.8120.834

All models evaluated raw (no postprocessing) except v4/v5 which use the SDK postprocessor (regex for structured patterns). v5 with postprocess disabled scores F1=0.578 (P=0.847, R=0.439) — still competitive, and the hybrid approach pushes it to #1.

Not included: bbanany/qwen25-3b-korean-pii-* (3B CausalLM, binary PII/NOT_PII classifier on pre-extracted spans — different task, not NER), upgle/bert-pii-korean and alphagyuu/* (no model weights uploaded), psh3333/* (gated), mncai/* (broken config).

v5 is 3x smaller than v4 and scores higher on the harder benchmark.

Raw model (no postprocess)

ModelParamsraw F1raw Praw R
LFM2.5-350M-PII350M0.2540.2070.328
schift-ko-pii-v4111M0.7020.6020.842
schift-ko-pii-v534M0.5780.8470.439

v5 raw recall is low because the model only predicts private_person and private_address. All other categories (phone, email, dates, IDs) are handled by the regex postprocessor — by design, not by limitation.

Category breakdown (benchmark_v1, 93 cases)

Categoryv5 (34M)v4 (111M)LFM2.5 (350M)
Person (standard)1.001.000.67
Person (rare surnames)1.001.000.60
Person (short names)1.001.000.57
Address (urban)1.001.000.67
Address (rural)1.001.000.60
Phone (via postprocess)0.860.860.92
Vehicle plate1.001.000.00
Date (Korean)1.001.000.00
Resident ID1.001.000.75

Installation

pip install schift-ko-pii

Usage

1. Basic detection

from schift_ko_pii import detect

# Raw model output (person + address only)
spans = detect("피고 김민수의 전화번호는 010-1234-5678이다.")
for s in spans:
    print(f"  [{s['id']}] {s['label']}: {s['text']} (score: {s['score']})")
# [person_1] private_person: 김민수 (score: 0.99)

# With postprocessing — adds regex-based detection for phone, ID, dates, etc.
spans = detect("피고 김민수의 전화번호는 010-1234-5678이다.", postprocess=True)
# [person_1] private_person: 김민수
# [phone_1] phone_number: 010-1234-5678

2. Mask and review

from schift_ko_pii import mask

result = mask(
    "피의자 김철수(주민번호 850205-1234567)가 피해자 박영희에게 "
    "서울특별시 강남구 테헤란로 521에서 금 3,000만원을 전달하였다.",
    postprocess=True
)

print(result["masked"])
# 피의자 [사람1](주민번호 [주민번호1])가 피해자 [사람2]에게
# [주소1]에서 금 3,000만원을 전달하였다.

# Entity map — review what was detected
for e in result["entities"]:
    print(f"  {e['id']:>15}: {e['text']}")
#       person_1: 김철수
#  resident_id_1: 850205-1234567
#       person_2: 박영희
#      address_1: 서울특별시 강남구 테헤란로 521

3. Selective replacement

from schift_ko_pii import mask, apply

text = ("계약자 남궁혜진(010-9876-5432)의 거주지 "
        "부산광역시 해운대구 우동 1414번지 마린시티 102동 305호에서 "
        "참고인 Mike Johnson을 면담하였다.")

result = mask(text, postprocess=True)

# User reviews and decides what to redact
redacted = apply(text, result["entities"], {
    "person_1": "○○○",       # 남궁혜진 → ○○○
    "person_2": "외국인A",    # Mike Johnson → 외국인A
    "phone_1": "010-****-****",
    # address_1 intentionally left unmasked
})
print(redacted)
# 계약자 ○○○(010-****-****)의 거주지
# 부산광역시 해운대구 우동 1414번지 마린시티 102동 305호에서
# 참고인 외국인A을 면담하였다.

4. Bulk masking (replace all with ***)

from schift_ko_pii import mask, apply

text = "피해자 이도(여권 M12345678)는 서울 서초구 반포대로 58에 거주한다."
result = mask(text, postprocess=True)

# Replace everything with ***
clean = apply(text, result["entities"])
# 피해자 ***(여권 ***)는 ***에 거주한다.

5. Using transformers directly

from transformers import AutoModelForTokenClassification, AutoTokenizer, pipeline

model = AutoModelForTokenClassification.from_pretrained(
    "schift-io/schift-ko-pii-v5", trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained("schift-io/schift-ko-pii-v5")

pipe = pipeline("token-classification", model=model, tokenizer=tokenizer,
                aggregation_strategy="simple")

results = pipe("참고인 제갈량의 증언을 채택한다.")
for r in results:
    print(f"  {r['entity_group']}: {r['word']} ({r['score']:.2f})")
# private_person: 제갈량 (0.95)

6. Processing files

from schift_ko_pii import mask, apply

with open("document.txt") as f:
    text = f.read()

result = mask(text, postprocess=True)

# Show what was found
print(f"Found {len(result['entities'])} PII entities:")
for e in result["entities"]:
    print(f"  {e['id']}: {e['text']}")

# Redact all and save
clean = apply(text, result["entities"])
with open("document_redacted.txt", "w") as f:
    f.write(clean)

API (free, no model download needed)

from schift import Schift

client = Schift(api_key="...")  # free at schift.io
result = client.pii.redact("김민수의 전화번호는 010-1234-5678입니다.")
# Postprocessing is always enabled on the API.

Labels

LabelDescriptionDetected byExamples
private_personPerson names (Korean, Hanja, foreign)Model김민수, 남궁혜진, Mike Johnson, 田中太郎
private_addressStreet/postal addressesModel서울특별시 강남구 테헤란로 521
phone_numberPhone numbersPostprocess (regex)010-1234-5678, 02-1234-5678
resident_idResident registration numbersPostprocess (regex + checksum)850205-1234567
account_numberBank accounts, passport, vehicle plates, business IDsPostprocess (regex)M12345678, 52가1234
private_dateDates in Korean formatPostprocess (regex)2024년 3월 15일
private_urlURLs, IP addressesPostprocess (regex)192.168.1.1
secretAPI keys, passwordsPostprocess (regex)

Architecture

  • Encoder: Conv + attention hybrid, 6 layers, hidden 512
  • Head: Linear classifier (512 → 33 labels)
  • Params: 34M
  • Format: safetensors float32 (136 MB)
  • Tokenizer: klue/roberta-base
  • Max length: 512 tokens
  • Tagging: BIES (Begin/Inside/End/Single)
  • Requires: trust_remote_code=True

Running benchmarks

python benchmark/run_benchmark.py --benchmark benchmark/benchmark_v2.jsonl --postprocess

License

Schift License v2.0 — Apache 2.0 base with revenue threshold. Free for everyone under $10M annual revenue. Research, education, and non-profit always permitted.

Citation

@software{schift_ko_pii_v5_2026,
  author = {Schift Inc.},
  title = {schift-ko-pii-v5: 34M Korean PII Detection Model},
  year = {2026},
  url = {https://huggingface.co/schift-io/schift-ko-pii-v5},
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · fill-mask

Нельзя запустить

Для архитектуры lfm2 нет загрузчика под задачу fill-mask.

Класс архитектуры
Lfm2BidirectionalForTokenClassification
Ревизия весов
06fddf7

0 моделей