/ Модель

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

Контекст
514 токенов
Параметры
138 млн
Лицензия
MIT
Архитектура
camembert · dense
Базовая модель
camembert-base
Библиотека
transformers
Опубликована
17 июн 2026

anonymiseur-lyceen

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

Дообученная CamemBERT для поиска и разметки персональных данных во французских школьных работах перед анонимизацией.

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

Бенчмарки

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

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

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

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

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

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

Anonymiseur-Lycéen — модель CamemBERT, дообученная XenocodeRCE для автоматического обнаружения и разметки персональных данных в текстах французских школьных работ. Она присваивает токенам метки сущностей, среди которых имена и фамилии, учебные заведения, классы, номера учащихся, адреса, профессии родителей и города. Модель содержит 137,8 млн параметров, использует архитектуру CamembertForTokenClassification и принимает контекст длиной до 514 токенов.

Модель предназначена для предварительной анонимизации ученических работ перед публикацией, передачей или анализом. В README приведены примеры с оценками 63–70%; автор отмечает ложные срабатывания на известных именах, шум в разметке пунктуации и коротких слов, а также отсутствие надежного распознавания дат рождения, электронной почты и телефонов. Обучение проводилось на небольшом синтетическом наборе французских школьных работ, поэтому результаты стоит проверять вручную. Лицензия — MIT.

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

  • поиск имен и фамилий учеников в школьных работах
  • обнаружение названий школ, классов и номеров учащихся
  • выделение адресов и профессий родственников в ученических текстах
  • предварительная разметка персональных данных перед публикацией школьных работ

Ограничения

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

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

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

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

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

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

Открыть на Hugging Face

🛡️ Anonymiseur-Lycéen

Modèle CamemBERT fine-tuné pour l'anonymisation automatique de copies d'élèves.

Détecte et annote les données personnelles dans les textes scolaires français : noms, prénoms, établissements, classes, numéros étudiants, adresses, professions des parents, etc.

📊 Dataset d'entraînement : XenocodeRCE/anonymiseur-lyceen-dataset — 282 copies d'élèves synthétiques générées avec Mistral 7B.


📊 Statistiques d'entraînement

MétriqueValeur
Modèle de basecamembert-base (110M params)
Exemples d'entraînement226
Exemples de validation56
Époques30
Batch size8
Learning rate5e-5
OptimizerAdamW (weight_decay=0.01)
StratégieClass weights (anti-déséquilibre)
Eval loss finale0.95
Train loss finale0.76
Taille du modèle420 MB
GPUNVIDIA RTX A4500 (20 Go)
Temps d'entraînement~8 min (GPU)

Évolution de la perte

ÉpoqueEval Loss
12.44
51.44
101.18
151.06
200.99
250.96
300.95

🏷️ Entités détectées (8 types)

EntitéDescriptionExemple
PRENOMPrénom de l'élève ou d'un procheMarie, Kévin, Jean-Marc
NOMNom de familleDupont, Lefebvre, Cohen
ETABLISSEMENTNom du lycée/collègeLycée Baudelaire, Lycée Jean Moulin
CLASSENiveau et filièreTerminale G, Première S, Terminale STMG
NUMERO_ETUDIANTINE ou numéro d'inscription2024-7831, FR-992831, 2025-4492-X
ADRESSEAdresse postale42 rue des Glycines, 54000 Nancy
PROFESSIONMétier d'un parentmédecin, infirmière, comptable
VILLEVille de résidence ou naissanceLyon, Arles, Strasbourg

Distribution des entités dans le dataset d'entraînement

O                : 17513 tokens (90.0%)
I-ETABLISSEMENT  :   364 tokens ( 1.9%)
I-ADRESSE        :   318 tokens ( 1.6%)
I-CLASSE         :   224 tokens ( 1.2%)
I-NUMERO_ETUDIANT:   186 tokens ( 1.0%)
B-PRENOM         :   139 tokens ( 0.7%)
B-NOM            :   134 tokens ( 0.7%)
B-ETABLISSEMENT  :    74 tokens ( 0.4%)
B-CLASSE         :    72 tokens ( 0.4%)
B-PROFESSION     :    72 tokens ( 0.4%)
B-ADRESSE        :    42 tokens ( 0.2%)
B-NUMERO_ETUDIANT:    40 tokens ( 0.2%)

🚀 Utilisation

Installation

pip install transformers torch

Avec le pipeline Hugging Face

from transformers import pipeline

ner = pipeline("ner", model="XenocodeRCE/anonymiseur-lyceen", aggregation_strategy="simple")

texte = "Je m'appelle Pierre Dupont, je suis au Lycée Baudelaire à Lyon."
resultats = ner(texte)

for ent in resultats:
    print(f"[{ent['entity_group']}] {ent['word']} ({round(ent['score']*100)}%)")

Sortie :

[PRENOM] Pierre (48%)
[NOM] Dupont (51%)
[ETABLISSEMENT] Lycée Baudelaire à Lyon (47%)

Avec PyTorch (niveau avancé)

from transformers import AutoTokenizer, AutoModelForTokenClassification
import torch

model_path = "XenocodeRCE/anonymiseur-lyceen"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForTokenClassification.from_pretrained(model_path)

texte = "Sarah Cohen, Terminale G au Lycée International de Strasbourg."
inputs = tokenizer(texte, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)
    predictions = torch.argmax(outputs.logits, dim=-1)

tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
labels = [model.config.id2label[p.item()] for p in predictions[0]]

for token, label in zip(tokens, labels):
    if label != "O":
        print(f"{token:15s} -> {label}")

Via l'API Hugging Face

import requests

API_URL = "https://api-inference.huggingface.co/models/XenocodeRCE/anonymiseur-lyceen"
headers = {"Authorization": "Bearer VOTRE_TOKEN_HF"}

response = requests.post(API_URL, headers=headers, json={
    "inputs": "Je m'appelle Pierre Dupont, élève au Lycée Baudelaire à Lyon."
})
print(response.json())

📈 Performances

Exemples réels

TexteEntités détectéesScores
"Pierre Dupont, Lycée Baudelaire à Lyon"PRENOM: Pierre, NOM: Dupont, ETABLISSEMENT: Lycée Baudelaire, VILLE: Lyon64-70%
"Jean-Marc Martin, médecin, 15 av. des Champs-Élysées"PRENOM: Jean-Marc, NOM: Martin, PROFESSION: médecin, ADRESSE: 15 av...63-67%
"Kévin Dubois, 2025-4492-X, Terminale STMG"PRENOM: Kevin, NOM: Dubois, NUMERO_ETUDIANT: 2025-4492-X, CLASSE: Terminale STMG64-68%
"Marie Lefebvre, 42 rue des Glycines à Arles"PRENOM: Marie, NOM: Lefebvre, ADRESSE: 42 rue des Glycines, VILLE: Arles63-67%

Limites connues

  • ⚠️ Faux positifs possibles sur les noms de personnes célèbres (ex: Victor Hugo) — des exemples négatifs sont présents dans le dataset mais le modèle n'est pas parfait
  • ⚠️ Bruit résiduel sur la ponctuation et les mots courts (,, ', au, en)
  • 📈 Scores en nette progression (63-70% vs 47-53% précédemment) grâce au dataset 3.5× plus grand
  • 🆕 VILLE maintenant détecté correctement (Lyon, Arles, Strasbourg...)
  • 🚫 Pas encore de détection des dates de naissance, emails, téléphones (classes rares)

🔄 Ré-entraînement

Le script train.py contient tout le nécessaire pour reproduire l'entraînement :

python generate_dataset.py   # Génère les données via LM Studio (LLM local)
python train.py              # Lance l'entraînement avec class weights
python test_model.py         # Teste le modèle localement

Points clés de l'entraînement

  • Class weights : les classes rares (ex: B-NUMERO_ETUDIANT) sont pondérées jusqu'à 437× plus que la classe O pour compenser le déséquilibre (90% des tokens sont O)
  • 30 époques nécessaires pour que le modèle apprenne les classes minoritaires
  • Sans class weights : le modèle prédit O partout (stratégie paresseuse)

📁 Structure du projet

anonymiseur-lyceen/
├── config.json              # Configuration du modèle
├── model.safetensors        # Poids du modèle (420 MB)
├── tokenizer.json           # Tokenizer SentencePiece
├── tokenizer_config.json    # Configuration du tokenizer
├── sentencepiece.bpe.model  # Vocabulaire BPE
└── README.md                # Ce fichier

⚖️ Licence

MIT — Utilisation libre, y compris commerciale.


🙏 Remerciements

  • CamemBERT — Modèle de langue français pré-entraîné par l'Inria
  • Hugging Face — Infrastructure d'entraînement et de déploiement
  • Données générées synthétiquement via LM Studio (Gemma 4 12B)

Model description

More information needed

Intended uses & limitations

More information needed

Training and evaluation data

More information needed

Training procedure

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 5e-05
  • train_batch_size: 8
  • eval_batch_size: 8
  • seed: 42
  • optimizer: Use adamw_torch with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
  • lr_scheduler_type: linear
  • num_epochs: 10

Training results

Training LossEpochStepValidation Loss
No log1.0101.6000
No log2.0201.2571
No log3.0301.1538
No log4.0401.1063
No log5.0501.0734
No log6.0601.0496
No log7.0701.0320
No log8.0801.0187
No log9.0901.0096
No log10.01001.0065

Framework versions

  • Transformers 4.48.0
  • Pytorch 2.12.1+cpu
  • Datasets 3.2.0
  • Tokenizers 0.21.4

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
CamembertForTokenClassification
Ревизия весов
99dd58a

0 моделей