Décompressez le fichier, puis ouvrez le projet .Rproj. Les chemins utilisés dans les exercices fonctionneront sans déplacer les données.
Ces exercices sont indépendants de l’aventure et du défi. Ils consolident l’analyse de texte, les scores lexicaux, le TF-IDF et la préparation d’un tableau de bord à partir de textes québécois réels et publics.
Importez descriptions_donnees_quebec.csv. Chaque ligne représente une fiche réelle du portail, avec son titre, sa description, son producteur et sa catégorie.
# A tibble: 8 × 3
producteur fiches categories
<chr> <int> <int>
1 Ville de Laval 12 6
2 Ville de Longueuil 12 7
3 Ville de Montréal 12 7
4 Ville de Québec 12 5
5 Ville de Saguenay 12 6
6 Ville de Sherbrooke - Données géomatiques 12 5
7 Ville de Trois-Rivières 12 3
8 Ville de Gatineau 5 2
La sélection est équilibrée par producteur, mais elle ne représente pas tout le catalogue. Elle privilégie les fiches récemment mises à jour dont la description contient au moins 50 caractères.
# A tibble: 12 × 2
mot n
<chr> <int>
1 ville 53
2 territoire 34
3 cartographie 26
4 données 23
5 ensemble 16
6 travaux 16
7 type 16
8 identifiant 15
9 longueuil 13
10 rivières 13
11 zone 13
12 québec 12
Une ligne correspond maintenant à un mot conservé. Les fréquences donnent un premier portrait, mais le contexte d’une description doit être relu avant toute interprétation.
# A tibble: 40 × 3
producteur mot n
<chr> <chr> <int>
1 Ville de Gatineau courant 10
2 Ville de Gatineau zone 8
3 Ville de Gatineau correspond 6
4 Ville de Gatineau crue 6
5 Ville de Gatineau gatineau 6
6 Ville de Laval territoire 9
7 Ville de Laval cartographie 6
8 Ville de Laval lavallois 6
9 Ville de Laval cdu 5
10 Ville de Laval code 5
# ℹ 30 more rows
ggplot( mots_par_producteur,aes(x = n, y =fct_reorder(mot, n))) +geom_col() +facet_wrap(vars(producteur), scales ="free_y") +labs(x ="Nombre d'occurrences",y =NULL,title ="Mots fréquents par producteur" ) +theme_minimal()
Une différence peut venir des thèmes publiés, du vocabulaire institutionnel ou de la taille des descriptions. Elle ne mesure pas directement la qualité des données.
Bloc B - Construire un score lexical simple
Exercice 5 - Créer un lexique de précision
Créez un petit lexique exploratoire. Les mots concrets reçoivent +1 et les mots très généraux -1.
# A tibble: 20 × 3
mot classe score
<chr> <chr> <dbl>
1 localisation concret 1
2 inventaire concret 1
3 nombre concret 1
4 mesure concret 1
5 date concret 1
6 horaire concret 1
7 statistiques concret 1
8 registre concret 1
9 liste concret 1
10 géographique concret 1
11 quotidien concret 1
12 annuel concret 1
13 donnée general -1
14 données general -1
15 information general -1
16 informations general -1
17 ensemble general -1
18 divers general -1
19 autre general -1
20 différents general -1
Ce score ne constitue pas une mesure validée de qualité rédactionnelle. Il sert à comprendre la mécanique d’un score fondé sur un lexique et doit toujours être accompagné d’une lecture humaine.
# A tibble: 10 × 5
jeu_id producteur titre score_precision mots_reconnus
<chr> <chr> <chr> <dbl> <int>
1 04880bdf6ffa40ababfa900c2ef45… Ville de … Trav… 5 9
2 728d843955a744c78dd6cd4b26b86… Ville de … Stat… 1 1
3 arrondissements-longueuil Ville de … Arro… 1 1
4 chantiers-routiers Ville de … Chan… 1 1
5 infrastructure-pietonne Ville de … Infr… -1 1
6 milieux-humides-rci Ville de … Mili… -3 3
7 offres-d-emploi Ville de … Offr… -2 2
8 permis-de-construction Ville de … Perm… -1 1
9 permis-delivres-ville-de-queb… Ville de … Perm… -1 1
10 sag-reseau-routier Ville de … Rése… -1 1
Un score nul peut signifier que le vocabulaire est neutre, mais aussi qu’aucun mot du petit lexique n’a été reconnu. La colonne mots_reconnus est donc indispensable.
# A tibble: 8 × 5
producteur score_moyen mots_reconnus_moyens ressources_moyennes fiches
<chr> <dbl> <dbl> <dbl> <int>
1 Ville de Gatineau 0 0 2.6 5
2 Ville de Laval -0.167 0.333 3.83 12
3 Ville de Longueuil 0.0833 0.25 3 12
4 Ville de Montréal -1.17 3.33 4.75 12
5 Ville de Québec -0.167 0.167 4.67 12
6 Ville de Saguenay -0.667 1 4.08 12
7 Ville de Sherbroo… 0.25 1.08 6 12
8 Ville de Trois-Ri… 0 0 3 12
Le graphique compare l’échantillon, pas la qualité globale des producteurs. Les différences de sujets et de style rédactionnel peuvent expliquer une partie des écarts.
# A tibble: 40 × 6
producteur mot n tf idf tf_idf
<chr> <chr> <int> <dbl> <dbl> <dbl>
1 Ville de Gatineau courant 10 0.0452 2.08 0.0941
2 Ville de Gatineau correspond 6 0.0271 2.08 0.0565
3 Ville de Gatineau crue 6 0.0271 2.08 0.0565
4 Ville de Gatineau gatineau 6 0.0271 2.08 0.0565
5 Ville de Gatineau grand 6 0.0271 2.08 0.0565
6 Ville de Laval lavallois 6 0.0392 2.08 0.0815
7 Ville de Laval cdu 5 0.0327 2.08 0.0680
8 Ville de Laval zaep 4 0.0261 2.08 0.0544
9 Ville de Laval architecturale 3 0.0196 2.08 0.0408
10 Ville de Laval piia 3 0.0196 2.08 0.0408
# ℹ 30 more rows
Un mot distinctif est relativement plus associé à un producteur qu’aux autres. Il n’est pas nécessairement positif, négatif ou important pour les utilisateurs.
# A tibble: 8 × 6
producteur fiches score_precision_moyen ressources_moyennes
<chr> <int> <dbl> <dbl>
1 Ville de Gatineau 5 0 2.6
2 Ville de Laval 12 -0.167 3.83
3 Ville de Longueuil 12 0.0833 3
4 Ville de Montréal 12 -1.17 4.75
5 Ville de Québec 12 -0.167 4.67
6 Ville de Saguenay 12 -0.667 4.08
7 Ville de Sherbrooke - Donnée… 12 0.25 6
8 Ville de Trois-Rivières 12 0 3
# ℹ 2 more variables: jours_medians_depuis_mise_a_jour <dbl>, categories <int>
Le tableau sépare la préparation des indicateurs de leur affichage. Un tableau de bord pourrait ensuite présenter des cartes, des graphiques et les descriptions sources.
Exercice 11 - Simuler un filtre
NoteSolution
producteur_choisi <-"Ville de Québec"resume_dashboard |>filter(producteur == producteur_choisi)
# A tibble: 1 × 6
producteur fiches score_precision_moyen ressources_moyennes
<chr> <int> <dbl> <dbl>
1 Ville de Québec 12 -0.167 4.67
# ℹ 2 more variables: jours_medians_depuis_mise_a_jour <dbl>, categories <int>
Dans une application shiny, la valeur pourrait venir d’un menu. L’opération analytique reste un filtre sur un tableau préparé.
Étude de cas 1 - Qualité des descriptions de données
Une équipe veut repérer les descriptions qui mériteraient une révision éditoriale.
Votre mandat:
choisir deux indicateurs parmi le score, les mots reconnus, le nombre de ressources et la récence;
repérer quelques fiches à relire;
formuler une recommandation qui reconnaît les limites du lexique.
# A tibble: 10 × 6
producteur titre description score_precision mots_reconnus
<chr> <chr> <chr> <dbl> <int>
1 Ville de Montréal Inte… "Ensemble … -4 6
2 Ville de Sherbrooke - Donnée… Mili… "Milieux h… -3 3
3 Ville de Laval Offr… "Ensemble … -2 2
4 Ville de Montréal Cale… "Cet ensem… -2 2
5 Ville de Montréal Résu… "Cet ensem… -2 2
6 Ville de Montréal Fréq… "Ensemble … -2 4
7 Ville de Montréal RSQA… "La Ville … -2 8
8 Ville de Québec Infr… "Ensemble … -1 1
9 Ville de Laval Perm… "Informati… -1 1
10 Ville de Québec Perm… "Informati… -1 1
# ℹ 1 more variable: jours_depuis_mise_a_jour <int>
Le score peut prioriser une lecture, mais ne doit pas déclencher automatiquement une correction. Le lexique est petit, les sujets diffèrent et une description générale peut tout de même être exacte et utile.
Étude de cas 2 - Événements touristiques québécois
Importez evenements_touristiques_quebec.csv. La colonne texte combine des champs publics du SIT Québec pour fournir un corpus court et reproductible.
Deux visuels utiles seraient un graphique TF-IDF par type d’événement et un graphique de couverture par région. L’échantillon est équilibré à un maximum de huit événements par région touristique; il ne mesure donc pas le volume réel de toute l’offre touristique.