Utilisateur:Hexasoft/Wikitator

Un article de Wikipédia, l'encyclopédie libre.

Wikitator est un robot capable de lire et de créer une représentation symbolique d'un article. Cette représentation peut être utilisée pour manipuler la structure de l'article, la modifier, la corriger, et enfin elle peut servir à re-générer le contenu de l'article.

Sommaire

[modifier] Description, principe

Le robot est un programme en C qui lit un article à partir d'un fichier. Il analyse le contenu et crée une liste d'entités, chacune représentant les éléments de l'article : texte, lien, modèle, section. Chaque entité possède toutes les informations sur les éléments qu'elles représentent.

Il est ensuite possible de manipuler cette liste, pour transformer les entités présentes, les réordonnées ou encore en ajouter ou en enlever. Au final le programme permet de re-générer le code de l'article correspondant.

Ce robot est en pratique couplé avec un autre robot qui permet de synchroniser une base locale des articles en fonction des demandes, afin de limiter les requêtes à destination de wikipédia.

[modifier] Utilisation

Ce robot, actuellement en développement, est conçu pour être un assisant d'édition, à mon usage pour le moment. Il se greffera entre mon éditeur et wikipédia afin de traiter des corrections triviales de style du code, qui sont pénibles à faire à la main et automatisables. Il est également prévu qu'il permette dans mon domaine (la zoologie) d'intégrer automatiquement des informations telles que des références, interwikis et éléments de taxobox issues d'un programme créé par Liné1 qui les collectent et les regroupent.
Il n'est pas prévu pour le court terme que ce robot agisse seul (sans ma validation explicite).

[modifier] Fonctionnalités existantes

Ce que le code fait déjà (voir les listes d'exceptions pour des exceptions aux comportements décrits ici) :

  • lecture d'un article et création de la représentation interne
  • nettoyage des liens, modèles et interwikis :
    • les espaces en début et fin de liens/modèles/interwikis sont supprimés
    • les espaces multiples dans les liens ou noms de modèles sont supprimés
    • les espaces avant/après les : et | sont supprimés
    • passage de la première lettre en majuscule (quand cela ne modifie pas l'affichage dans le cas d'un lien). Valable aussi pour les interwikis lorsque l'alphabet le permet
  • traduction de certains mots-clés anglais de wikipédia (pour le moment : categorycatégorie)
  • résolution des redirects pour les liens et les interwikis (mais pas suppression d'interwiki non trouvé)
  • suppression des séries de sauts de lignes en début et fin d'article
  • déplacement et organisation par série (un par ligne, chaque série séparée par une ligne vide) des éléments suivants (dans l'ordre) :
    • les bandeaux portail
    • les catégories
    • les balises AdQ
    • les interwikis, avec tri alphabétique par la langue
  • traitements spécifiques sur les catégories :
    • si la première lettre de l'article est accentuée, insertion de DEFAULTSORT sans accent, plus nettoyage des catégories utilisant exactement ce terme (les autres ne sont pas touchées)
    • si aucune catégorie présente, insertion d'une catégorie par défaut en se basant sur la classification zoologique présente dans l'article (ne fait rien sinon)
  • standardisation des sections : élimination des sauts de lignes inutiles avant et après une section
  • fusion d'informations en provenance de BioRéférence (logiciel de Liné1), pour les articles zoologiques :
    • références externes
    • interwikis
    • références externes intégrées aux taxobox
    • découvreur du taxon si absent de l'article
  • réorganisation de certains éléments liés aux taxobox :
    • sous-titre sous la taxobox (si présent)
    • ébauches sous la taxobox ou le sous-titre (si présents)
  • nettoyages/corrections des taxobox :
    • si la taxobox ne contient pas de ligne taxon (forme avec découvreur), le programme cherche l'élément le plus bas de la classification, et s'il correspond au titre de l'article crée l'entrée taxon avec découvreur (uniquement pour des taxons inférieurs ou égaux à la famille)
    • suppression de la légende d'image si identique au titre de la taxobox
    • suppression image si identique à l'image par défaut des taxobox (Defaut.svg)
    • suppression paramètre de Taxobox taxons animal si identique à la valeur par défaut (* Voir aussi)
    • ajout italiques au titre de la taxobox si il s'agit du nom du taxon et qu'ils sont absents (espèce ou genre uniquement, sous-espèce non géré)
    • ajout du modèle Taxobox taxons animal si absent et taxon supérieur à l'espèce
    • ré-écriture de la zone découvreur pour wikifier les dates et découvreurs qui ne le seraient pas (uniquement modèle {{auteur}})
  • autres :
    • préparation d'un résumé de modification reprenant les actions effectuées (outil externe analysant le log généré par Wikitator)

Note : la plupart de ces fonctionnalités sont désactivables au lancement du programme.


Exceptions :

Mon programme gère un certain nombre d'exceptions aux fonctionnalités décrites ci-dessus :

  • liste de modèles à ne pas passer en majuscule (première lettre) : certains modèles s'écrivent en général sans majuscule (par exemple les modèles d'ébauche)
  • les modèles sont ré-affichés sans espace entre les paramètres et les | de séparation (nécessaire car certains modèles construisant des URL ne fonctionnent pas sinon). Une liste d'exception permet l'insertion d'une espace afin d'aérer l'affichage
  • liste des modèles pour lesquels il ne faut pas tenter de corriger les liens vers redirects dans leurs paramètres : nécessaire lorsque le modèle à pour but (par exemple) de décrire un lien incomplet
  • liste de liens pour lesquels il ne faut pas tenter de corriger les redirects : vide actuellement, mais peut être utile
  • ajout d'une espace avant la fermeture d'un modèle dans certains cas.

[modifier] Fonctionnalités prévues

effacé car jamais à jour…

[modifier] Bugs

Des choses qui ne marchent pas comme elles devraient (lire : comme je voudrais) :

  • lors de l'insertion des références externes de BioRef, apparition d'une ligne vide au milieu de la liste d'énumération. Semble venir d'une mauvaise détection du contexte d'insertion.
  • lors du déplacement des ébauches en dessous d'une taxobox, il manque parfois des sauts de lignes entre les modèles.
  • si une section est en début d'article (ou juste après une taxobox) le programme ne laisse pas de ligne vide avant. Cause identifée mais non corrigée.

Problèmes d'analyse de la syntaxe wikipédia :

  • la définition d'une section dans mon programme est plus "souple" que celle de wikipédia. Mon programme classe donc comme section des éléments que WP aurait traité comme du texte (ceci dit je ne vois qu'une typo pour aboutir à ce genre de cas)
  • dans certains cas mon programme peut conclure à des modèles valides alors qu'il y a des erreurs de syntaxe dedans. Ces cas sont quoi qu'il en soit considérés comme des erreur coté wikipédia, mais il faudrait que je les détecte correctement
  • wikipédia supporte certaines erreurs sans protester (fermeture automatique de certains éléments en fin de ligne par exemple) ce que ne fait pas mon programme. Il peut donc classer comme "erreur de syntaxe" des éléments que wikipédia accepte.
  • dans certains cas des commentaires peuvent disparaître du texte, en particulier dans les paramètres de modèles.

[modifier] Effets indésirables

Effets pas forcément prévus / maîtrisés du robot sur le texte :

  • élimination des commentaires dans les modèles et les liens (pas dans le texte brut). Est-ce un problème ?

[modifier] Exemples

Premier exemple : le diff entre le code d'origine et ce qu'en fait le robot. Notez qu'à l'heure actuelle le robot ne gérant pas les paramètres des modèles ceux-ci sont "abimés" par la modification. Ceci est bien sûr provisoire.
Deuxième exemple : le diff. Gestion des paramètres des modèles, déplacement des interwikis, des catégories et des modifieurs AdQ en fin d'article, résolution des liens vers redirect, élimination des séries de saut de ligne en début et fin.
Troisième exemple : le diff. Insertion des éléments provenant de BioRéférences dans l'article.
Exemple plus récent : le diff : correction taxobox (entrée avec découvreur), ajout découvreur, ajout italiques dans le titre de la taxobox (nom du genre), ajout d'une intro minimal, ajout d'une section liens externes avec une série de liens vers des sites de taxo.

[modifier] Des remarques, commentaires ?

Si vous voulez faire des remarques, suggestions, critiques… sur ce programme, merci d'utiliser la page de discussion associée.

Hexasoft (discuter) 27 mars 2007 à 23:18 (CEST)