/ Модель

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

Контекст
8 194 токена
Параметры
534 млн
Лицензия
Apache 2.0
Архитектура
roberta · dense
Базовая модель
polish-roberta-8k
Опубликована
22 апр 2026

pii-pl-v1.0

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

Модель на базе RoBERTa выделяет персональные данные и другие именованные сущности в польском тексте для последующей анонимизации.

319скачиваний за 30 дней2лайкавеса обновлены22 апр 2026

Бенчмарки

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

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

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

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

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

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

radlab/pii-pl-v1.0 — модель распознавания именованных сущностей в польском тексте, разработанная Radlab на базе polish-roberta-8k и дообученная для выделения персональных данных. Она размечает токены по девяти категориям, включая контактные данные, и предназначена для конвейеров анонимизации и задач защиты данных. Модель использует архитектуру RoBERTa для классификации токенов, принимает текст и поддерживает контекст до 8194 токенов. В обучении использовалась обобщённая версия набора KPWr-NER; в README приведены метрики оценки, включая Macro F1 0,8430.

Модель подходит для поиска персональных сущностей в польских документах перед их обезличиванием. Она также выделяет другие типы именованных сущностей, поэтому результаты требуют проверки на соответствие конкретной схеме анонимизации. Модель распространяется по лицензии Apache 2.0; для набора данных KPWr-NER указана лицензия CC-BY-3.0.

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

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

Ограничения

Распознавание ограничено заданными категориями сущностей, а качество может различаться между классами; опубликованные Macro и Weighted F1 заметно различаются. Для критичных сценариев анонимизации результаты следует проверять.

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

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

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

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

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

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

Открыть на Hugging Face

Polish PII Classification Model

This model is a fine-tuned version of polish-roberta-8k, specifically designed for Named Entity Recognition (NER) focused on identifying Personally Identifiable Information (PII) in Polish text.

The model identifies entities such as names, locations, organizations, and contact numbers, making it ideal for anonymization pipelines and data privacy tasks.

Model Details

  • Architecture: RobertaForTokenClassification
  • Base Model: polish-roberta-8k
  • Language: Polish
  • Task: Token Classification (NER)
  • Context Length: Up to 8192 tokens (inherited from base model)

Label Mapping

The model classifies tokens into the following 9 categories:

IDLabelDescription
0OOutside any entity
1CONTACT/NUMPhone numbers, emails, etc.
2EVENTNamed events
3FACILITYBuildings, airports, bridges, etc.
4LOCATIONCities, countries, regions
5ORGANIZATIONCompanies, institutions, groups
6OTHERMiscellaneous PII
7PERSONPeople's names
8PRODUCTBrand names, products

Training Data

The model was trained on a generalized version of the KPWr-NER dataset (clarin-pl/kpwr-ner).

Fine-grained labels from the original dataset were mapped to the general categories listed above using a custom mapping process to improve the model's robustness and utility for general anonymization.

Training Hyperparameters

HyperparameterValue
Epochs5
Batch Size (Train/Eval)16 / 16
Learning Rate5e-5
Weight Decay0.01
Max Sequence Length128
Seed42
Optimization Metricf1_macro

Evaluation Results

The model achieved the following results on the evaluation set:

MetricValue
F1 Macro0.8430
F1 Weighted0.9784
Precision Macro0.8480
Precision Weighted0.9786
Recall Macro0.8461
Recall Weighted0.9787
Eval Loss0.1099

Usage

1. Standard Transformers Pipeline

You can use the model directly via the Hugging Face transformers library:

from transformers import pipeline

# Load the model and tokenizer

model_id = "radlab/pii-pl-v1.0"
pii_pipeline = pipeline("ner", model=model_id, tokenizer=model_id, aggregation_strategy="simple")

text = "Jan Kowalski z firmy PKO BP mieszka w Warszawie i dowiedza ciocię Jadzię w Warszawie razem z synem Dominikiem."
results = pii_pipeline(text)

for entity in results:
    print(f"Entity: {entity['word']} | Label: {entity['entity_group']} | Score: {entity['score']:.4f}")

expected output

Entity: Jan Kowalski | Label: PERSON | Score: 0.9981
Entity: PKO BP | Label: ORGANIZATION | Score: 0.9959
Entity: Warszawie | Label: LOCATION | Score: 0.9974
Entity: Jadzię | Label: PERSON | Score: 0.9955
Entity: Warszawie | Label: LOCATION | Score: 0.9974
Entity: Dominikiem | Label: PERSON | Score: 0.9942

2. Using the pii_classification Inference Wrapper

For advanced features like punctuation cleaning, sub-token merging, and full anonymization, use the AnonPredictor from the official repository.

Installation:

git clone https://github.com/radlab-dev-group/anonymizer-model.git
cd anonymizer-model
pip install . --break-system-packages

Inference Code:

from pii_classification.inference.inference import AnonPredictor

# Initialize predictor
predictor = AnonPredictor(model_path="radlab/pii-pl-v1.0")

text = "Jan Kowalski z firmy PKO BP mieszka w Warszawie i dowiedza ciocię Jadzię w Warszawie razem z synem Dominikiem."

# 1. Get detailed predictions (merged entities)
predictions = predictor.predict(
    text, clean_punct=True, merge_entities=True, handle_gaps=True
)
print(predictions)

# 2. Full anonymization
anonymized = predictor.predict_and_anonymize(text)
print(f"Anonymized Text: {anonymized['text']}")
print(f"Mappings: {anonymized['mappings']}")

expected output

{'0': 'O', '1': 'CONTACT/NUM', '2': 'EVENT', '3': 'FACILITY', '4': 'LOCATION', '5': 'ORGANIZATION', '6': 'OTHER', '7': 'PERSON', '8': 'PRODUCT'}
[{'word': 'Jan Kowalski', 'label': 'PERSON'}, {'word': ' ', 'label': 'O'}, {'word': 'z', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'firmy', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'PKO BP', 'label': 'ORGANIZATION'}, {'word': ' ', 'label': 'O'}, {'word': 'mieszka', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'w', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Warszawie', 'label': 'LOCATION'}, {'word': ' ', 'label': 'O'}, {'word': 'i', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'dowiedza', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'ciocię', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Jadzię', 'label': 'PERSON'}, {'word': ' ', 'label': 'O'}, {'word': 'w', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Warszawie', 'label': 'LOCATION'}, {'word': ' ', 'label': 'O'}, {'word': 'razem', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'z', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'synem', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Dominikiem', 'label': 'PERSON'}, {'word': '.', 'label': 'O'}]
predictions= [{'word': 'Jan Kowalski', 'label': 'PERSON'}, {'word': ' ', 'label': 'O'}, {'word': 'z', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'firmy', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'PKO BP', 'label': 'ORGANIZATION'}, {'word': ' ', 'label': 'O'}, {'word': 'mieszka', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'w', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Warszawie', 'label': 'LOCATION'}, {'word': ' ', 'label': 'O'}, {'word': 'i', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'dowiedza', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'ciocię', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Jadzię', 'label': 'PERSON'}, {'word': ' ', 'label': 'O'}, {'word': 'w', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Warszawie', 'label': 'LOCATION'}, {'word': ' ', 'label': 'O'}, {'word': 'razem', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'z', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'synem', 'label': 'O'}, {'word': ' ', 'label': 'O'}, {'word': 'Dominikiem', 'label': 'PERSON'}, {'word': '.', 'label': 'O'}]
Anonymized Text: {PERSON_1776877218745866_1} z firmy {ORGANIZATION_1776877218745866_2} mieszka w {LOCATION_1776877218745866_3} i dowiedza ciocię {PERSON_1776877218745866_4} w {LOCATION_1776877218745866_5} razem z synem {PERSON_1776877218745866_6}.
Mappings: {'PERSON_1776877218745866_1': 'Jan Kowalski', 'ORGANIZATION_1776877218745866_2': 'PKO BP', 'LOCATION_1776877218745866_3': 'Warszawie', 'PERSON_1776877218745866_4': 'Jadzię', 'LOCATION_1776877218745866_5': 'Warszawie', 'PERSON_1776877218745866_6': 'Dominikiem'}

Repository and Code

The full training pipeline, data conversion scripts, and inference API are available here: 👉 https://github.com/radlab-dev-group/anonymizer-model

Licensing

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

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

GPU в ailist

Универсальный рантайм · token-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
RobertaForTokenClassification
Ревизия весов
97ba763

0 моделей