/ Модель

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

Контекст
514 токенов
Параметры
305 млн
Лицензия
Apache 2.0
Архитектура
xlm-roberta · dense
Базовая модель
xlm-roberta-base
Библиотека
transformers
Опубликована
18 июл 2026

PII_XMLR.eu

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

Многоязычная модель на базе XLM-RoBERTa для обнаружения и классификации персональных данных в тексте.

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

Бенчмарки

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

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

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

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

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

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

UMCU/PII_XMLR.eu — многоязычная модель для выявления и классификации персональных данных в тексте. Её создали в UMCU, дообучив FacebookAI/xlm-roberta-base на наборе ai4privacy/pii-masking-openpii-1.5m с помощью MedNER. Модель построена на архитектуре XLM-RoBERTa и содержит 305,2 млн параметров; она принимает текст и относит токены к классам, что позволяет находить фрагменты с персональными данными для последующей деидентификации или маскировки.

Модель обучали на английском, нидерландском, французском, немецком, испанском, итальянском, датском, шведском и португальском языках. В классификационной голове вместо одного линейного слоя используются три плотных слоя с ReLU и dropout 10%. Максимальная длина контекста — 514 токенов. Модель подходит для поиска и разметки PII в текстах на поддерживаемых языках; качество зависит от языка, типа данных и сходства текста с обучающим набором. Лицензия — Apache-2.0.

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

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

Ограничения

Поддержка обучения ограничена девятью указанными языками, а контекст — 514 токенами. В README приведены оценки, но сами значения в доступном тексте отсутствуют; качество на конкретных данных следует оценивать отдельно.

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

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

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

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

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

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

Открыть на Hugging Face

Finetuning was done using MedNER with the following script:

We limited the training to the following languages: English, Dutch, French, German, Spanish, Italian, Danish, Swedish and Portuguese, which are relatively close, in a linguistic sense, allowing for a languages to benefit from cross-over information.

The model was train in a multiclass-sense, using a cross-entropy loss. We replaced the standard 768-weight linear layer by 3x768 dense layers with 10% dropout and ReLu activations.

#!/usr/bin/env bash
set -euo pipefail

# Ready-to-run training script for:
#   ai4privacy/pii-masking-openpii-1.5m
#
# Usage:
#   bash scripts/run_hf_ai4privacy_training.sh multilabel
#   bash scripts/run_hf_ai4privacy_training.sh multiclass
#
# Optional:
#   export HF_TOKEN=hf_xxx   # only needed for gated/private datasets

MODE="${1:-multiclass}"

COMMON_ARGS=(
  --lang multi
  --hf_dataset ai4privacy/pii-masking-openpii-1.5m
  --text_column source_text
  --tags_column privacy_mask
  --selector_column language
  --selection nl en fr de es it da sv pt
  --parse_annotations
  --train_model
  --force_splitter
  --model FacebookAI/xlm-roberta-base
  --chunk_size=32
  --max_token_length=32
  --batch_size 2
  --accumulation_steps 8
  --learning_rate=2e-5
  --weight_decay=1e-5
  --num_epochs=5
  --num_splits=5
  --use_class_weights
  --classifier_hidden_layers 768 768 768
  --chunk_type paragraph
  --entity_types AGE DATE BUILDINGNUM CITY ZIPCODE STREET GIVENNAME SURNAME SOCIALNUM PASSPORTNUM SEX GENDER TELEPHONENUM IDCARDNUM EMAIL

)

if [ -n "${HF_TOKEN:-}" ]; then
  COMMON_ARGS+=(--hf_token "${HF_TOKEN}")
fi

if [ "${MODE}" = "multiclass" ]; then
  poetry run python -m cardioner.main \
    "${COMMON_ARGS[@]}" \
    --multiclass \
    --output_dir /out/put/location_multilabel
elif [ "${MODE}" = "multilabel" ]; then
  poetry run python -m cardioner.main \
    "${COMMON_ARGS[@]}" \
    --output_dir /out/put/location_multilabel
else
  echo "Unknown mode: ${MODE}. Use 'multilabel' or 'multiclass'." >&2
  exit 1
fi

Token classification scores (answering the question: given the span, to which class does it belong?):

      "eval_AGE": {
        "f1": 0.9672360768551506,
        "number": 32192,
        "precision": 0.9484920871902061,
        "recall": 0.9867358349900597
      },
      "eval_BUILDINGNUM": {
        "f1": 0.9832519792331442,
        "number": 28889,
        "precision": 0.9798886138613861,
        "recall": 0.9866385129287965
      },
      "eval_CITY": {
        "f1": 0.9726022504018575,
        "number": 41669,
        "precision": 0.9651668399659703,
        "recall": 0.9801531114257601
      },
      "eval_DATE": {
        "f1": 0.997746454524687,
        "number": 80940,
        "precision": 0.9972108062744517,
        "recall": 0.9982826785273041
      },
      "eval_EMAIL": {
        "f1": 0.9962614462862082,
        "number": 51445,
        "precision": 0.9953818689847873,
        "recall": 0.9971425794537856
      },
      "eval_GENDER": {
        "f1": 0.974448482073879,
        "number": 17457,
        "precision": 0.973473587925909,
        "recall": 0.9754253308128544
      },
      "eval_GIVENNAME": {
        "f1": 0.9365210222588624,
        "number": 100350,
        "precision": 0.9334706161888168,
        "recall": 0.9395914299950174
      },
      "eval_IDCARDNUM": {
        "f1": 0.9049785748995008,
        "number": 22068,
        "precision": 0.8827889338964061,
        "recall": 0.9283124886713794
      },
      "eval_PASSPORTNUM": {
        "f1": 0.9242263349514563,
        "number": 12959,
        "precision": 0.9087180252069506,
        "recall": 0.9402731692260206
      },
      "eval_SEX": {
        "f1": 0.9694227341286166,
        "number": 14570,
        "precision": 0.9683604985618408,
        "recall": 0.970487302676733
      },
      "eval_SOCIALNUM": {
        "f1": 0.9280586914587484,
        "number": 15327,
        "precision": 0.9004663721158567,
        "recall": 0.9573954459450643
      },
      "eval_STREET": {
        "f1": 0.9810103469263542,
        "number": 32803,
        "precision": 0.9793116019078287,
        "recall": 0.9827149955796726
      },
      "eval_SURNAME": {
        "f1": 0.9306129607436204,
        "number": 85192,
        "precision": 0.926976695433423,
        "recall": 0.9342778664663348
      },
      "eval_TELEPHONENUM": {
        "f1": 0.9940678080618354,
        "number": 36941,
        "precision": 0.9924450920079866,
        "recall": 0.9956958393113343
      },
      "eval_ZIPCODE": {
        "f1": 0.9856799457604832,
        "number": 24346,
        "precision": 0.9860648661980516,
        "recall": 0.9852953257208577
      }

End2End scores (answering the question: given a text, what are the spans and to which class do they belong?):

{
	"strict": {
		"per_category": {
			"AGE": {
				"Precision": 0.86,
				"Recall": 0.87,
				"F1": 0.87
			},
			"BUILDINGNUM": {
				"Precision": 0.94,
				"Recall": 0.91,
				"F1": 0.93
			},
			"CITY": {
				"Precision": 0.88,
				"Recall": 0.88,
				"F1": 0.88
			},
			"DATE": {
				"Precision": 0.69,
				"Recall": 0.68,
				"F1": 0.68
			},
			"EMAIL": {
				"Precision": 0.12,
				"Recall": 0.1,
				"F1": 0.11
			},
			"GENDER": {
				"Precision": 0.95,
				"Recall": 0.88,
				"F1": 0.91
			},
			"GIVENNAME": {
				"Precision": 0.92,
				"Recall": 0.9,
				"F1": 0.91
			},
			"IDCARDNUM": {
				"Precision": 0.77,
				"Recall": 0.64,
				"F1": 0.7
			},
			"PASSPORTNUM": {
				"Precision": 0.84,
				"Recall": 0.74,
				"F1": 0.79
			},
			"SEX": {
				"Precision": 0.95,
				"Recall": 0.9,
				"F1": 0.92
			},
			"SOCIALNUM": {
				"Precision": 0.71,
				"Recall": 0.82,
				"F1": 0.76
			},
			"STREET": {
				"Precision": 0.86,
				"Recall": 0.87,
				"F1": 0.86
			},
			"SURNAME": {
				"Precision": 0.91,
				"Recall": 0.89,
				"F1": 0.9
			},
			"TELEPHONENUM": {
				"Precision": 0.67,
				"Recall": 0.73,
				"F1": 0.7
			},
			"ZIPCODE": {
				"Precision": 0.91,
				"Recall": 0.89,
				"F1": 0.9
			}
		},
		"micro": {
			"Precision": 0.79,
			"Recall": 0.77,
			"F1": 0.78
		},
		"macro": {
			"Precision": 0.8,
			"Recall": 0.78,
			"F1": 0.79
		}
	},
	"relaxed": {
		"per_category": {
			"AGE": {
				"Precision": 0.9,
				"Recall": 0.9,
				"F1": 0.9
			},
			"BUILDINGNUM": {
				"Precision": 0.96,
				"Recall": 0.92,
				"F1": 0.94
			},
			"CITY": {
				"Precision": 0.94,
				"Recall": 0.95,
				"F1": 0.95
			},
			"DATE": {
				"Precision": 0.97,
				"Recall": 0.96,
				"F1": 0.96
			},
			"EMAIL": {
				"Precision": 0.96,
				"Recall": 0.79,
				"F1": 0.86
			},
			"GENDER": {
				"Precision": 0.97,
				"Recall": 0.9,
				"F1": 0.93
			},
			"GIVENNAME": {
				"Precision": 0.98,
				"Recall": 0.97,
				"F1": 0.97
			},
			"IDCARDNUM": {
				"Precision": 0.9,
				"Recall": 0.74,
				"F1": 0.81
			},
			"PASSPORTNUM": {
				"Precision": 0.92,
				"Recall": 0.8,
				"F1": 0.86
			},
			"SEX": {
				"Precision": 0.95,
				"Recall": 0.91,
				"F1": 0.93
			},
			"SOCIALNUM": {
				"Precision": 0.78,
				"Recall": 0.9,
				"F1": 0.84
			},
			"STREET": {
				"Precision": 0.95,
				"Recall": 0.96,
				"F1": 0.96
			},
			"SURNAME": {
				"Precision": 0.97,
				"Recall": 0.96,
				"F1": 0.97
			},
			"TELEPHONENUM": {
				"Precision": 0.91,
				"Recall": 0.98,
				"F1": 0.94
			},
			"ZIPCODE": {
				"Precision": 0.94,
				"Recall": 0.92,
				"F1": 0.93
			}
		},
		"micro": {
			"Precision": 0.95,
			"Recall": 0.92,
			"F1": 0.93
		},
		"macro": {
			"Precision": 0.93,
			"Recall": 0.9,
			"F1": 0.92
		}
	}
}

which we obtained by running:

MODEL=/path/to/model
ARGS=(
  --inference_only
  --model_path="$MODEL"
  --corpus_inference=ai4privacy/pii-masking-openpii-1.5m
  --text_column=source_text
  --tags_column=privacy_mask
  --lang=multi
  --inference_stride=32
  --selector_column=language
  --selection nl en fr de es it da sv pt
  --inference_pipe=dt4h
  --trust_remote_code
  --output_file_prefix=multiclass_multilang_
  --allow_numeric_tags AGE BUILDINGNUM DATE IDCARDNUM PASSPORTNUM SOCIALNUM TELEPHONENUM ZIPCODE
)

poetry run python -m cardioner.main "${ARGS[@]}"

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
TokenClassificationModel
Ревизия весов
c0c9812

0 моделей