mapo80/aliasit-pii-dataset-v5
aliasit-pii-dataset-v5 Italian PII dataset in canonical text + character span form, the 42 entity types of v4, with the form variety and the document length that a gold set of real Italian documents showed were missing: perturbed surface forms, composed multi-section documents with anaphoric surname references, and numeric material deliberately labelled O. Read this first: the text is rewritten Every dataset in this family before v5 kept the source text byte for… See the full description on the dataset page: https://huggingface.co/datasets/mapo80/aliasit-pii-dataset-v5.
aliasit-pii-dataset-v5
Italian PII dataset in canonical text + character span form, the 42 entity types of v4, with the form variety and the document length that a gold set of real Italian documents showed were missing: perturbed surface forms, composed multi-section documents with anaphoric surname references, and numeric material deliberately labelled O.
Read this first: the text is rewritten
Every dataset in this family before v5 kept the source text byte for byte. This one does not. The entity values still come from the sources, but their surface form is rewritten on purpose, and documents are recomposed into longer ones. If you need the original wording, use `aliasit-pii-dataset-v4`, which is frozen and unchanged.
Why: a model trained on v4 scores 1.000 exact on 14,087 spans of unseen documents from one synthetic source, and 0.447 on a gold set of real Italian documents. It had learned the grammar of the generators, not Italian. The clearest single symptom: 07118 is recognised as a postal code in Via Trento 44 07118 Sassari and missed in Viale Manzoni, 20 - 07118 NOVARA.
What this is
`validation_perturbata` is not an independent split. It is the same validation documents rewritten with every form perturbation at full rate and a different seed. It ships because it is the set on which the training recipe for this dataset was selected, and publishing it is the only way that selection can be redone from outside. Do not add it to validation and call the sum an evaluation set: you would be counting the same documents twice.
There is no `benchmark` split. aliasit-pii-benchmark-v1 is frozen elsewhere and is not touched by this dataset.
How the text was rewritten
Four transformations, all deterministic given a seed, all declared in configs/dataset.yaml before the first build. The proportions below are the configuration; the distributions further down are what was measured on the built dataset by re-reading the text.
Nothing numeric that is written stays unannotated by accident. The hard negatives are exactly the categories that the annotation guidelines for the gold set exclude by name — statutory citations, page numbers, amounts (monetary_amount is out of the taxonomy), and act numbers not tied to a person. No negative sentence names anybody, and no negative sentence contains a standalone date: writing a date and not annotating it would teach a model that dates are not personal data, which is the worst thing an anonymisation dataset can do.
What that produced, measured on the built dataset
What is NOT in here
This dataset contains no real personal data collected from the web. The project also holds a private gold set of real Italian administrative and judicial documents, and a larger unannotated collection from the same sources. Neither is published, in any form — not the texts, not extracts, not annotations.
That is checked, not asserted. Every document of this dataset is compared against every one of those real documents at four levels — identical text, identical after normalising form, same template family, and shingle containment that survives a rewrite. Result: 0 collisions across 54,734 documents.
Licensing — read this before redistributing
Inherited unchanged from v4: this dataset adds no source, it reuses them. Most are CC-BY-4.0, MIT or Apache-2.0 and are redistributed under their own terms, with attribution listed below.
2 of the sources declare no licence upstream, and they account for 3,261 documents (6.0% of this dataset):
Without a known upstream licence there is no established right to redistribute the material derived from them. They were included on an explicit decision by the dataset author, who accepted that risk. The consequence for you: this dataset cannot assert a single licence over its whole content, the other licence tag reflects exactly that, and if you redistribute it further the same uncertainty travels with you. If your use case needs a clean chain of title, drop those sources — they are identified per record in the prov_dataset column.
Sources and attribution
The sources marked yes are redistributed under licences that require attribution. If you use this dataset, carry the following credits:
- Agenzia Italiana del Farmaco (AIFA), liste dei farmaci di classe A (CC-BY-4.0)
- Ethosoft, TR-DocVQA-Synth (CC-BY-4.0)
- IVASS - Istituto per la Vigilanza sulle Assicurazioni, Lista imprese assicurative vigilate (CC-BY-4.0)
- KlusAI, ds-kp-general-it-50k (CC-BY-4.0)
- Ministero dell'Interno - ANPR, archivio dei comuni (CC-BY-4.0)
- Ministero dell'Interno - ANPR, tabella 2 stati esteri (CC-BY-4.0)
- Ministero della Salute, Manuale ICD-9-CM versione italiana 2007 (IODL 2.0)
- NVIDIA, Nemotron-PII (CC-BY-4.0)
- Toridion, Lindisfarne M1 (CC-BY-4.0)
- dossier-legal, italian-legal-corpus (CC-BY-4.0)
Inherited from v4, and still true here
Two categories were merged into their parent — date_of_birth into date, birth_place into city — because the text carries no signal that separates them and the parent has orders of magnitude more examples. For anonymisation nothing is lost: a date of birth masked as date is still masked. What is lost is the distinction.
Composite address spans were decomposed into their components (street_name, building_number, postal_code, city, italian_province) wherever possible, so the same text pattern always carries the same annotation. The decomposition was proposed by rizzoaiacademy/rizzo-pii-0.3B, a model that has no address category: it is another model's annotation, not ground truth. What it did not cover stays a whole address rather than an invented component.
Personal data
Every source declares its content synthetic. None of them documents a formal verification that no real personal data slipped in, so this dataset inherits that level of assurance and not a higher one: it is a documented assumption, not a fact we verified. Treat it as synthetic training material, not as proof that no real person is described.
Does it work?
The model trained on this dataset (arm ladder_b of a three-arm comparison) scores exact F1 0.476 on the private gold set of real Italian documents — same metric as the v4 model: gold projected onto the current taxonomy, minimum-span decoding rule, inference window 1024/128.
The gain is recall: 0.444 to 0.486 at unchanged precision. The model finds more of the real entities; it does not find them more confidently. That is what a dataset with more surface forms is supposed to buy, and it is what it bought.
The gold set itself is not published and never will be: it is real Italian documents about real people. Only the aggregate number travels.
Format
id document id; `cmp-*` ids are composed documents
text document text — REWRITTEN, see above
language always 'it'
split train | validation | test | validation_perturbata
ent_start[] character offset of each entity, inclusive
ent_len[] length in characters; end = start + len, exclusive
ent_label[] one of the 44 categories
prov_text_origin 'reconstructed' where the text was rewritten
prov_text_reconstruction which transformation produced it
cont_extra_json for composed documents: the ids of their components
fp_* fingerprints recomputed on the v5 text, not inheritedSpans that the sources annotated and this dataset does not map (unm_*) are dropped on rewritten documents: they described text that no longer exists at those offsets, and keeping them pointed at different characters would be worse than losing them.
Splits and leakage
Splits are built so that a template family never crosses them, recomputed on the v5 text rather than inherited from v4. The build verifies it and refuses to write the dataset if it does not hold. Composition only ever combines documents from the same split.
Checksums
manifest.json ships with the data. Two independent builds from the same v4 produced the same four checksums: the rewriting is deterministic given the seeds above.
Citation
@dataset{aliasit_pii_aliasit_pii_dataset_v5,
title = {aliasit-pii-dataset-v5},
author = {Polito, Matteo},
year = {2026},
note = {Italian PII dataset with rewritten surface forms and composed documents, 42 entity types, revision 1.0.0},
url = {https://huggingface.co/datasets/mapo80/aliasit-pii-dataset-v5}
}