Discussion utilisateur:Roland45/VBA et Wikipédia
Programme Ajout_Indicateurs
modifierDes questions ?
Objectif 1 - Définition des étapes
modifierL'idée est de définir les différentes tâches que l'on va mettre en oeuvre pour arriver à l'objectif et quelles sont les tables de données dont on va avoir besoin ?
- @Roland45, commençons par l’objectif 1.
- Pour changer les modèles de population au sein des articles, nous allons avoir besoin comme bdd de la liste des communes actuelles.
- Ensuite il faudra rédiger un script qui passera sur les pages et récupéreras la syntaxe actuelle dans la section Démographie. Cependant, il faut prendre en compte le fait que sur certaines communes, la section s’appelle uniquement « Population et société » ou « Évolution démographique ».
- Pour les modèles au sein de l’infobox, il faut prendre en compte les éventuelles références, et éventuellement le fait qu’il n’y ait aucun modèle de population.
- Jessy Oui ? 14 mai 2020 à 18:49 (CEST)
- Première idée de la démarche :
- Récupérer la liste des communes actuelle avec leur nom WP
- Au sein de ces articles, tester si {{Population de France/section}} apparaît,
- S'il apparaît, on passe à l'étape 3,
- S'il n'apparaît pas, on cherche la section "Démographie" et on en récupère le contenu (ou on cherche les anciens modèles ?)
- On teste si {{Population de France/dernière pop}} apparaît DANS l'INFOBOX (comment ?)
- S'il apparaît, on passe à l'étape 4,
- S'il n'apparaît pas, on récupère le contenu de la ligne pop.
- Qu'est-ce que l'on fait des données récoltées ?
- Première idée de la démarche :
@JessydeVilly Oui. C’est un début de questionnement. Mais en réalité, c’est un peu plus complexe qu’il n’y paraît :
On peut sérier en fait le problème en deux :
1. changer les modèles de l’Infobox :{{Dernière population commune de France}} par {{Population de France/dernière pop}}
{{Dernière population commune de France|date}} par {{Population de France/dernière année Infobox}}
2. Changer les modèles dans le corps du texte, et en particulier dans la section démographie, mais pas que.
Cas 1 : l’Infobox
- Remplacer le modèle {{Dernière population commune de France}} par {{Population de France/dernière pop}} revient à remplacer deux chaînes de caractères. On peut donc très bien ne pas se poser de question et remplacer la chaîne dans tout le corps du texte, une ligne de commande et le tour est joué. Ainsi si dans le texte on a trois fois la chaîne, elle sera remplacée trois fois (c'est comme cela que fonctionne tous les bots standards type AWB). Et le résultat sera correct.
- Remplacer {{Dernière population commune de France|date}} par {{Population de France/dernière année Infobox}} relève du même principe : changer une chaîne de caractères par une autre. Mais la même procédure que ci-dessus ne va-t-elle pas poser un pb ? Eh bien si, parce que si on remplace dans le corps du texte par ledit modèle, on va se retrouver avec un pictogramme dans le corps du texte, ce que l’on ne veut pas. On va donc avoir besoin de tester la localisation du modèle {{Dernière population commune de France|date}} :
- S’il est situé dans l’Infobox on le remplace par {{Population de France/dernière année Infobox}}
- S’il est situé ailleurs dans le corps du texte on le remplace par {{Population de France/dernière année}}
Cas 2 : la section démographie ou ailleurs dans le corps du texte
Là cela se complique, car on peut avoir de multiples configurations de modèles (dont par exemple {{Tableau population d'article de commune de France}} à remplacer par {{Population de France/tableau}} ou {{Population de France/section}}, mais pas que!) qu’il va donc falloir analyser. Cette analyse peut être faite à la main (on parcourt à la main une dizaine ou une centaine d’articles et on regarde comment cela se présente) ou par un bot qui récupèrera quelques éléments clés de texte sur un nombre plus importants d’articles. En fonction des différentes situations trouvées, on bâtira ensuite le bot final.
Donc dans un premier temps, on se cantonnera au cas de l’Infobox, et ce sera déjà pas mal.
Cas 3 : la base de données
Tu dis « 1.Récupérer la liste des communes actuelle avec leur nom WP ». Oui, c’est fondamental. Mais comment la récupérer ? je t’en ai communiquée une (la feuille COM2020 du classeur mis en ligne) mais comment savoir si elle est correcte ou pas ? En fait je vais te le dire : il y a de fortes chances pour que cette base soit … fausse !
Alors comment peut-on obtenir un résultat correct avec une base fausse ?!
Trois erreurs peuvent entâcher la base :
- il manque des communes (lors de la création de communes nouvelles), dès lors le bot ne modifiera pas ces communes ne figurant pas dans la base ;
- il y a des communes en trop (toujours lors de la création de communes nouvelles, qui parallèlement fait disparaître des communes), dès lors le bot modifiera des articles qu’il n’y a pas lieu d’être;
- le nom wikipédien (nom WP, disons) est erroné. Et ça c’est fréquent. Par exemple depuis que je t’ai envoyé la base, qui dit que tel ou tel article n’a pas été renommé ? Est-ce que je passe mon temps à surveiller les renommages pour modifier ma base en continu ? Bien entendu que non. Il faudrait que j’ai en liste de suivi toutes les communes de France, ce qui n’est pas le cas, ou que je mette une procédure via les catégories, difficile aussi. Et beaucoup de temps à passer sur ma base pour rien. Le tout étant d’avoir la base disponible au moment où on en a besoin.
En réalité la méthode que j’utilise est :
- Actualisation de la base au 1er janvier de l’année en cours en couplant l'ancienne base (quelle que soit sa date) et la table d’appartenance (qui est publiée par l’Insee en mars). Le risque d’erreur ne repose dès lors plus que sur les noms WP (des noms WP de mon ancienne base qui seraient erronés, ou les noms WP des communes nouvelles à créer).
- Lors du traitement du bot avec ladite base au 1er janvier, on teste si l’article est une redirection (on verra qu’il y a plusieurs méthodes), si oui on stocke quelque part code Insee et nom de la commune, constituant ainsi une liste B d’articles à corriger ensuite avec les vrais noms WP (pas de panique, il n’y en a toujours que très peu ) ;
- Correction de la liste B, à la main (c’est rapide, puisqu’il y en a peu) ;
- Relance du bot sur les communes de la liste B corrigée.
Bon. Tout cela étant dit, on voit donc qu’au départ, il nous faut une bonne base. Et savoir manipuler des listes. Il va donc falloir faire des exercices en ce sens (avant toute intervention directe sur WP). Je fais une petite pause et proposerai ensuite quelques exercices sur des manipulations de listes et constitutions automatiques de tableaux (ou de toute autre forme de données comme des palettes).Roland45 (discuter) 15 mai 2020 à 09:50 (CEST)
- La première page d'exercices, pour s'entrainer sur des listes est ici.Roland45 (discuter) 15 mai 2020 à 10:32 (CEST)