/ Модель

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

Лицензия
Apache 2.0
Архитектура
extractor · dense
Библиотека
gliner2
Опубликована
10 мая 2026

gliner2-privacy-filter-PII-multi

Разметка токеновТекст → label4 профессии

Многоязычная модель Fastino на основе GLiNER2 извлекает и размечает 42 типа персональных данных в тексте для последующего маскирования.

207 тыс.скачиваний за 30 дней99лайковвеса обновлены28 сен 2026

Бенчмарки

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

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

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

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

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

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

GLiNER2-PII — дообученная Fastino модель GLiNER2 размером 205 млн параметров для обнаружения и маскировки персональных данных. Она извлекает точные текстовые фрагменты 42 типов, включая имена, даты рождения, контакты, адреса и государственные идентификаторы; на входе можно задавать нужное подмножество меток. Модель принимает текст и возвращает разметку найденных сущностей для последующего маскирования.

Модель заявлена для семи языков: английского, французского, испанского, немецкого, итальянского, португальского и нидерландского. В сравнении на бенчмарке SPY она показала средний span-level F1 0,477 на юридических и медицинских текстах и высокий recall, что полезно для процессов редактирования персональных данных. Репозиторий содержит веса в формате safetensors; для работы предусмотрена библиотека gliner2.

Точность составляет около 0,35–0,37 на SPY: модель может избыточно отмечать имена и путать их с нарицательными словами, организациями и названиями продуктов. Оценка охватывает один бенчмарк и два домена; качество на нелатинских письменностях и за пределами европейских локалей не измерялось. Обучающие данные синтетические и не проверялись людьми. Лицензия — Apache-2.0.

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

  • обнаружение и маскирование персональных данных в документах
  • выявление контактных данных и государственных идентификаторов
  • подготовка текстов к проверкам GDPR и CCPA
  • поиск персональных данных в юридических и медицинских текстах
  • очистка обучающих текстовых данных перед обучением моделей

Ограничения

На SPY точность составляет около 0,35–0,37; модель склонна избыточно помечать имена и путать их с нарицательными словами, организациями и продуктами. Проверен только один бенчмарк на двух доменах; качество на нелатинских письменностях не измерялось, а синтетические обучающие данные не проходили человеческую валидацию.

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

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

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

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

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

Открыть на Hugging Face

GLiNER2-PII: Multilingual PII Detection & Masking

GLiNER2-PII is a fine-tune of the GLiNER2 model (205M parameters) for detecting and masking personally identifiable information across 42 entity types and 7 languages.

Trained entirely on a constraint-driven synthetic corpus of 4,910 annotated texts, it achieves the highest span-level F1 (0.477) on the SPY benchmark among four compared systems — including OpenAI Privacy Filter, NVIDIA GLiNER-PII, and urchade/gliner_multi_pii-v1.

📄 Technical Report
🔗 GitHub


Quick Start

pip install gliner2
from gliner2 import GLiNER2

model = GLiNER2.from_pretrained("fastino/gliner2-privacy-filter-PII-multi")

text = "Email john.smith@acme.com or call +1 415 555 0199."
labels = ["email", "phone_number", "person"]

result = model.extract_entities(
    text,
    labels,
    threshold=0.5,
    include_confidence=True,
    include_spans=True,
)

print(result)

You can pass any subset of the 42 supported labels — the model conditions on the labels you provide at inference time.


Supported PII Labels (42 types)

GroupLabels
Person / namesperson, full_name, first_name, middle_name, last_name, date_of_birth
Contact / addressemail, phone_number, address, street_address, city, state_or_region, postal_code, country
Government / tax IDsgovernment_id, national_id_number, passport_number, drivers_license_number, license_number, tax_id, tax_number
Banking / paymentbank_account, account_number, routing_number, iban, payment_card, card_number, card_expiry, card_cvv
Digital identityusername, ip_address, account_id, sensitive_account_id
Secrets / credentialspassword, secret, api_key, access_token, recovery_code
Sensitive datessensitive_date, document_date, expiration_date, transaction_date

Benchmark Results (SPY)

Evaluated on the SPY benchmark (Savkin et al., 2025) with exact-match span-level metrics:

ModelLegal PLegal RLegal F1Medical PMedical RMedical F1Avg F1
fastino/gliner2-pii-v1.346.750.473.369.686.480.477
nvidia/gliner-PII.343.452.390.368.465.411.400
urchade/gliner_multi_pii-v1.467.317.377.518.351.419.398
openai/privacy-filter.242.656.354.287.692.406.380

Key takeaways

  • Highest F1 on both legal and medical domains.
  • Best recall among GLiNER-based detectors (0.718 avg) — critical for redaction workflows where missed spans are data leaks.
  • Consistent performance across domains (< 2-point F1 difference).

When to Use This Model

Use caseWhy GLiNER2-PII
PII redaction / maskingHigh recall minimises missed sensitive spans
Data governance & GDPR/CCPA compliance42 fine-grained types enable policy-specific routing
Training-data hygieneExact character spans for precise masking before model training
Multi-language pipelinesTrained on EN, FR, ES, DE, IT, PT, NL formats

Redaction Example

def redact(text, labels, threshold=0.5):
    model = GLiNER2.from_pretrained("fastino/gliner2-pii-v1")
    result = model.extract_entities(
        text, labels, threshold=threshold,
        include_spans=True,
    )
    entities = result.get("entities", {})
    spans = []
    for label, values in entities.items():
        for value in values:
            start = text.find(value)
            if start != -1:
                spans.append((start, start + len(value), label))

    spans.sort(key=lambda s: s[0], reverse=True)
    redacted = text
    for start, end, label in spans:
        redacted = redacted[:start] + f"[{label.upper()}]" + redacted[end:]
    return redacted


text = "Please contact Maria Jensen at maria.jensen@example.dk or +45 20 12 34 56."
labels = ["person", "email", "phone_number"]
print(redact(text, labels))
# "Please contact [PERSON] at [EMAIL] or [PHONE_NUMBER]."

Training Details

DetailValue
Base modelGLiNER2 (205M parameters)
Training data4,910 synthetic annotated texts
PII mentions129,951 total (mean 26.5 per example)
GeneratorGPT-5.4 (temperature 0.01)
Data frameworkConstraint-driven generation (same framework as Pioneer Agent)
LanguagesEnglish, French, Spanish, German, Italian, Portuguese, Dutch
Label types42 PII entity types across 7 semantic groups

Limitations

  • Precision (0.35–0.37 on SPY) leaves room for improvement; the model tends to over-predict name entities, sometimes confusing common nouns, organisation names, and product names with personal names.
  • Evaluated on a single benchmark (SPY) covering two domains. Broader multilingual and fine-grained evaluation is ongoing.
  • Training data is fully synthetic and has not been validated by human annotators.
  • Performance on non-European locales and scripts has not been measured.

Improving precision

For production use, consider:

  • Per-label confidence thresholds (raise threshold for person / full_name)
  • Dictionary-based filtering for common false positives
  • Calibration on a small domain-specific development set

Fine-tuning

This model can be fine-tuned locally with the gliner2 trainer (see the training guide). To fine-tune or serve it without managing GPUs, the Fastino API offers hosted training and inference, usually faster than training locally.

Citation

@misc{fastino2026gliner2pii,
  title   = {GLiNER2-PII: Multilingual PII Extraction via Synthetic Fine-Tuning},
  author  = {{Fastino AI Team}},
  year    = {2026},
  url     = {https://huggingface.co/fastino/gliner2-pii-v1}
}

Related work

@misc{zaratiana2026gliner2piimultilingualmodelpersonally,
      title={GLiNER2-PII: A Multilingual Model for Personally Identifiable Information Extraction}, 
      author={Urchade Zaratiana and Ash Lewis and George Hurn-Maloney},
      year={2026},
      eprint={2605.09973},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2605.09973}, 
}

@inproceedings{zaratiana-etal-2025-gliner2,
  title     = {GLiNER2: Schema-Driven Multi-Task Learning for Structured Information Extraction},
  author    = {Zaratiana, Urchade and Pasternak, Gil and Boyd, Oliver and Hurn-Maloney, George and Lewis, Ash},
  booktitle = {Proceedings of EMNLP 2025: System Demonstrations},
  year      = {2025}
}

@inproceedings{zaratiana-etal-2024-gliner,
  title     = {GLiNER: Generalist Model for Named Entity Recognition using Bidirectional Transformer},
  author    = {Zaratiana, Urchade and Tomeh, Nadi and Holat, Pierre and Charnois, Thierry},
  booktitle = {Proceedings of NAACL 2024},
  year      = {2024}
}

@misc{atreja2026pioneeragent,
  title  = {Pioneer Agent: Continual Improvement of Small Language Models in Production},
  author = {Atreja, Dhruv and White, Julia and Nayak, Nikhil and Zhang, Kelton and Princis, Henrijs and Hurn-Maloney, George and Lewis, Ash and Zaratiana, Urchade},
  year   = {2026},
  url    = {https://arxiv.org/abs/2604.09791}
}

License

Apache 2.0

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

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

GPU в ailist

Универсальный рантайм · gliner2

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

Модели GLiNER требуют отдельного рантайма.

Ревизия весов
1cb4166

0 моделей