Réponse courte
Partez de la décision que le modèle doit prendre, puis réunissez des exemples d’usage réel que vous avez le droit d’utiliser, retirez les renseignements personnels et les doublons, et notez la provenance de tout. Dans un test mesuré, le même modèle a obtenu 100 % avec un partage négligent et 90 % avec un partage honnête, et il n’a pas fait mieux que le hasard sur des messages en français qu’on ne lui avait jamais montrés.
Question de suivi Comment savoir que les données suffisent avant d’entraîner quoi que ce soit de gros?
Un jeu de données n’enseigne un travail que s’il ressemble à ce travail. Cela paraît évident, jusqu’à ce qu’on remarque à quel point les données d’entraînement sont souvent ce qui était facile à recueillir. Un modèle apprend les régularités de ses exemples, que ce soient ou non celles que vous visiez.
Ce projet construit un petit jeu de données pour une seule décision : diriger chaque message de la clientèle d’une boutique de vélos fictive vers les remboursements, la livraison, les réparations ou les comptes. Les 2 120 messages bruts sont tous générés par un script, donc aucune donnée de personne réelle n’est en cause. Le script compagnon 03_build_dataset.py n’a besoin que de scikit-learn et s’exécute en quelques secondes. Si vous préparez du texte pour un modèle de langage plutôt que pour une décision de routage, ce guide de préparation des données couvre le nettoyage et le stockage à plus grande échelle.
Étape 1 : écrire d’abord le travail
Avant de recueillir quoi que ce soit, remplissez cette fiche. C’est une petite cousine des fiches techniques proposées par des chercheurs pour documenter la motivation, la composition, la collecte et les usages d’un jeu de données.
| Question | Exemple de réponse |
|---|---|
| Quelle décision le modèle prendra-t-il? | Choisir une de quatre files |
| Que voit-il à ce moment? | Le texte du message seulement, sans historique client |
| Qui écrit ces entrées? | La clientèle, en anglais et en français |
| Que coûte une mauvaise réponse? | Le délai d’un transfert entre files |
| Qui décide de la bonne étiquette, et comment? | Deux membres du personnel, définitions écrites |
| D’où ces données peuvent-elles venir? | Nos propres messages, avec avis et consentement; textes sous licence ouverte |
L’avant-dernière ligne est souvent escamotée. Si deux personnes attentives ne s’entendent pas sur l’étiquette, le modèle ne peut pas faire mieux qu’elles.
Étape 2 : le faire passer par quatre contrôles
Chaque enregistrement porte sa provenance. Le pipeline refuse, nettoie, retire les doublons, puis partage, en gardant un compte à chaque étape.
OK_LICENCES = {"own-records-with-consent", "cc0", "cc-by-4.0"}
def pipeline(rows):
kept = [r for r in rows if r["licence"] in OK_LICENCES] # contrôle 1 : les droits
for r in kept:
r["text"], r["scrubbed"] = scrub(r["text"]) # contrôle 2 : renseignements personnels
seen, out = set(), []
for r in kept:
key = normalize(r["text"]) # contrôle 3 : doublons
if key not in seen:
seen.add(key)
out.append(r)
return out # contrôle 4 : partage par famille de formulations
Mesuré ici sur les données synthétiques :
| Étape | Lignes |
|---|---|
| Brut | 2 120 |
| Refus : licence inconnue ou non approuvée | −236 |
| Doublons retirés | −236 |
| Final | 1 648 |
Le nettoyeur utilisait des motifs pour les adresses de courriel, les numéros de téléphone et les codes postaux canadiens. Il a attrapé les 279 renseignements semés, sans fausse alerte. N’accordez pas trop de poids à ce score parfait : le script n’a semé que les formats que les motifs recherchent. Des noms dans le texte libre, comme « ma voisine Mara », passent tout droit. Sur de vraies données, faites lire un échantillon aléatoire à une personne, et voyez le nettoyage comme une réduction du risque.
Le fichier final est accompagné d’un manifeste : le nombre de lignes par étiquette et par licence, et une empreinte SHA-256, un court code qui change si un seul octet des données change. Quand un score bougera le mois prochain, vous saurez si les données ont bougé.
Ce que changent les contrôles, en chiffres
Chaque chiffre ci-dessous est la moyenne de cinq exécutions. Le modèle est volontairement simple : des comptes de mots passés à une régression logistique.
| Test | Exactitude |
|---|---|
| Doublons conservés, partage aléatoire | 100 % |
| Données propres, test sur des formulations jamais vues à l’entraînement | 90,2 % |
| Même test honnête, 10 % des étiquettes d’entraînement erronées | 72,2 % |
| 30 % des étiquettes d’entraînement erronées | 60,5 % |
| 50 % des étiquettes d’entraînement erronées | 41,3 % |
| Messages en français, entraînement en anglais seulement | 25,0 %, exactement le hasard |
Les deux premières lignes utilisent la même recette. La différence, c’est le partage. Un partage négligent place des quasi-copies d’un message des deux côtés, et le test mesure alors la mémoire. Partager par famille de formulations, soit toutes les variantes d’une même façon de demander, donne un chiffre bien plus utile. scikit-learn offre des outils de partage par groupe pour cela. Dans la réalité, une famille peut être un même client, un même document ou une même séance d’enregistrement.
La dernière ligne est la plus importante dans un endroit comme le Québec. Un jeu de données uniquement anglais a donné un modèle à 25 % en français, l’équivalent d’un dé à quatre faces. L’exactitude sur votre jeu de test ne dit rien des personnes qui en sont absentes.
Le côté juridique, en termes simples
Ceci est de l’information générale et non un avis juridique. Les règles varient selon les pays et changent; consultez un juriste avant de vous y fier pour un produit.
| Source des données | Question à trancher | Action habituelle |
|---|---|---|
| Vos propres dossiers sur la clientèle ou le personnel | La personne savait-elle que cet usage était possible? S’agit-il de renseignements personnels? | Retirer les identifiants, vérifier votre politique de confidentialité, obtenir le consentement si l’usage est nouveau |
| Textes sous licence ouverte, par exemple CC0 ou CC BY | Quelle licence exacte s’applique à quel fichier? Faut-il créditer? | Garder la licence et la source avec chaque fichier |
| Livres du domaine public | Domaine public là où vous êtes? Les ajouts peuvent ne pas l’être | Noter l’édition; retirer les mentions ajoutées |
| Un site Web que vous moissonnez | Conditions d’utilisation? Droit d’auteur? Blocages techniques? | Présumer que non, jusqu’à preuve du contraire |
| Résultats publiés de modèles d’autrui | Les conditions permettent-elles l’entraînement? | Les lire d’abord |
Au Canada, la Loi sur le droit d’auteur énumère les fins d’utilisation équitable, comme la recherche, l’étude privée et l’éducation, et la fouille de textes et de données n’en fait pas partie. Elle interdit aussi de contourner les mesures techniques de protection, sous réserve d’exceptions prévues. Aux États-Unis, les tribunaux tranchent ces questions au cas par cas, et la façon d’obtenir le matériel a pesé dans la balance.
Au Québec, la Loi 25 a renforcé les règles sur les renseignements personnels et accru le rôle de la Commission d’accès à l’information. Un jeu de messages de clients contient très probablement des renseignements personnels. Entraîner un modèle avec eux peut constituer une nouvelle fin. Écrivez votre réponse et consultez la personne responsable de la protection des renseignements personnels de votre organisation.
À essayer : prenez dix vrais exemples de votre propre tâche et remplissez la fiche. Notez chaque ligne où vous avez écrit « pas certain », et réglez ces points avant de recueillir un seul autre exemple.
Comment savoir que les données suffisent avant d’entraîner quoi que ce soit de gros?
Tracez une courbe d’apprentissage : entraînez sur des sous-ensembles de plus en plus grands et testez sur le même jeu honnête. Mesuré ici, moyenne de cinq exécutions :
| Lignes d’entraînement | Exactitude sur des formulations jamais vues |
|---|---|
| 20 | 40,9 % |
| 40 | 50,8 % |
| 80 | 71,8 % |
| 160 | 83,8 % |
| 320 | 88,9 % |
| 640 | 90,4 % |
| Toutes (environ 1 370) | 90,2 % |
Au-delà d’environ 640 lignes, davantage de la même chose n’aide plus. C’est le signal qu’il faut changer ce que vous recueillez, pas la quantité. Une seconde expérience le montre directement. Avec environ 140 lignes, une seule famille de formulations par étiquette a donné 40,5 %; le même nombre de lignes tirées de toutes les familles a donné 83,0 %. Même taille, deux fois plus de compétence.
Si la courbe monte encore à votre taille maximale, recueillez plus d’exemples du même type. Si elle est plate et qu’il vous faut de meilleurs résultats, recueillez ce qui manque : nouvelles formulations, cas difficiles, seconde langue. Corrigez ensuite les erreurs d’étiquetage, car le tableau sur le bruit montre leur coût, et seulement après, envisagez un plus gros modèle. Avant de croire à une amélioration, passez par les tests honnêtes du projet quatre.
Téléchargez le code de cette série (zip), avec tous les scripts et les résultats enregistrés.
Sources
- Datasheets for Datasets — arXiv, 23 mars 2018
- Copyright Act (R.S.C., 1985, c. C-42) — Justice Laws Website, Government of Canada, 7 novembre 2024
- Entrée en vigueur des nouvelles dispositions de la Loi 25 — Gouvernement du Québec (Secrétariat à la réforme des institutions démocratiques, à l'accès à l'information et à la laïcité), 22 septembre 2023
Tiré du Guide de l’intelligence artificielle, par Robert Scales, publié par Holistic Hybrid inc. Partage et adaptation permis selon la licence CC BY-NC-SA 4.0 : citez le guide, mettez un lien vers https://guidetoartificialintelligence.com/fr/apprendre/construire-jeu-donnees-legalement/, pas d’usage commercial sans permission, et gardez la même licence.