Discussion modèle:Lien/Conversion automatique

Dernier commentaire : il y a 2 ans par Ideawipik dans le sujet Résidus de substitutions ayant échoué
Autres discussions [liste]
  • Admissibilité
  • Neutralité
  • Droit d'auteur
  • Article de qualité
  • Bon article
  • Lumière sur
  • À faire
  • Archives
  • Commons

Exemple de syntaxe erronée devenant plus complexe après passage d'un bot modifier

  Hercule, NicoScribe, ParaBenT et FDo64 , en tant que personnes concernées ou potentiellement intéressées par le sujet ; n'hésitez pas à notifier d'autres utilisateurs de ce modèle.

Constat :
Une nouvelle détection de maintenance du projet Liens rouges permet de visualiser un petit problème concernant le modèle {{Lien/Conversion automatique}} utilisé par certains contributeurs pour modifier ou corriger les appels au modèle {{Lien}}. Avant de renseigner le paramètre à partir du paramètre fr, il serait utile de s'assurer que le contenu du paramètre trad correspond à une page qui existe réellement dans le wiki de la langue spécifiée par le paramètre langue (anglais par défaut). Et si ce n'est pas le cas, le paramètre fr manquant ne devrait pas être rempli ni crée.

Les exemples introduits de cette manière correspondent principalement aux lignes du tableau dans lesquelles la 3e colonne (« =détecté ») contient plusieurs paramètres comme « « fr= » in trad ; « fr= » in fr ».
Exemples de cas où l'erreur initiale est un simple "|" manquant :

  • {{lien|lang=en|trad=O'Gradyfr=O'Grady (emission de television)|texte=O'Grady}}
    {{Lien|trad=O'Gradyfr=O'Grady (emission de television)|langue=en|fr=O'Gradyfr=O'Grady (emission de television)|texte=O'Grady}} (cf. ce diff ; hors-sujet mais qui montre une autre limite de ce modèle qui ne traduit pas : il manque des accents à émission et télévision)
  • {{lien|lang=zh|trad=南昌新四军军部旧址fr=Site historique de l'armée de terre de la Nouvelle Quatrième armée à Nanchang}}
    {{Lien|langue=zh|trad=南昌新四军军部旧址fr=Site historique de l'armée de terre de la Nouvelle Quatrième armée à Nanchang|fr=南昌新四军军部旧址fr=Site historique de l'armée de terre de la Nouvelle Quatrième armée à Nanchang}} (cf. ce diff)

Solutions envisageables :

  • Correction du modèle. Remarque préliminaire : le modèle {{Lien/Conversion automatique}} n'apparaît jamais régulièrement dans l'encyclopédie et sert uniquement à une substitution. De plus il n'est "inséré" que dans les pages utilisant Lien pour un article existant donc un test d'existence d'articles ne solliciterait pas trop les serveurs. Peut-être-est-il possible de vérifier directement dans ce modèle si la page :langue:trad existe ? Une sorte de #ifexist interwiki. Je ne connais pas la syntaxe si c'est possible. Peut-être via un modèle/module intermédiaire qui renverrait un booléen ?
  • Alternative. Ne pas utiliser ce modèle mais plutôt un script dédié qui ferait la même chose en ajoutant cette précaution. Par exemple, dans le cas de Pywiki(pedia/bot), une fois le programme python codé, il suffirait d'utiliser ce script plutôt que de passer par template.py. Avec cette option, la recherche interwiki est possible. Bien sûr, pour limiter les sollicitations serveur, il faudra se contenter de passer le programme uniquement sur les pages de la catégorie citée.

--Ideawipik (discuter) 15 octobre 2019 à 18:15 (CEST)Répondre

Bonjour   Hercule, ParaBenT et FDo64. Quels sont les autres utilisateurs de ce modèle (dresseurs de bots) ?
  • Après plus de réflexion, même si idéalement ce point pourrait être assez facilement corrigé, il n'est pas essentiel. Sur l'exemple donné, le défaut du modèle complique la correction du modèle lien mais n'ajoute pas d'erreur supplémentaire. Ainsi si la liste Paramètre contenant un signe égal dans le modèle Lien est régulièrement vidée, le risque de mauvaise conversion est faible.
  • Par contre la substitution est plus problématique si un des paramètres du modèle Lien a été mal nommé par exemple {{Lien|langue=en|tra=Articlewikien|fr=Articlewikifr|texte=Texte libre}} deviendra {{Lien|langue=en|trad=Articlewikifr|fr=Articlewikifr|texte=Texte libre}}. La substitution fait perdre le nom de la page initiale sur le wiki en langue étrangère (paramètre trad Articlewikien), donnée la plus importante. Cette fois c'est la correction des Modèle lien vers un article inexistant en langue étrangère qui nécessitera de rechercher dans l'historique des modifs. Et imaginez l'éventualité qu'un article nommé "Articlewikifr" existe déjà sur "enwiki", l'article cible désiré initialement serait changé.
  • Parfois, des néo-contributeurs confondent les modèles {{Lien}} et {{Lien web}} et oublient le mot web (exemple : cette correction). Si un bot passe (parce que ce serait justifié pour un modèle Lien bien inséré celui-ci), il substituera tous les modèles « lien » de la page ⇒ exit toute la bibliographie "mal" insérée.
Pour résumer ce modèle ne gère pas les éventuelles fautes d'insertion du modèle Lien. Suggestions pour résoudre ce problème :
Question : Bénéfice de développer une alternative à ce modèle de conversion / temps pour le faire ? --Ideawipik (discuter) 27 octobre 2019 à 13:47 (CET)Répondre
  Orlodrim et Sisyph : pour retour, comme vous maintenez deux des listes cités. --ParaBenT (discuter) 2 novembre 2019 à 08:03 (CET)Répondre

Éviter la création de liens redirigés inutiles modifier

Bonjour   Hercule, ParaBenT et FDo64. Un autre amélioration dans ce modèle est possible. Elle concerne la cosmétique recommandée du code.

Quand les paramètres fr et texte diffèrent uniquement par la casse de la première lettre (une en majuscule et une en minuscule), la substitution remplacera actuellement le modèle {{Lien}} par un lien interne [[fr|texte]] soit [[Titre|titre]] ou [[titre|Titre]]. Par exemple, « Médaille Hans-Beimler » dans Diff #163856192). Or les syntaxes respectivement [[titre]] et [[Titre]] (soit [[texte]]) sont suffisantes et recommandées. Les premières syntaxes seront d'ailleurs détectées par le projet Correction syntaxique et corrigées par d'autres robots. Autant leur éviter d'avoir à le faire.

Techniquement, je ne vois pas comment faire de manière rapide sans développer un module Lua spécifique pour ce modèle de substitution... à moins qu'il existe déjà un modèle/fonction qui mette la première lettre d'une chaîne en majuscule afin de permettre la comparaison. --Ideawipik (discuter) 26 octobre 2019 à 22:03 (CEST)Répondre

Bonjour Ideawipik   Est-ce que Aide:Mot magique#Mise en forme répond à ta question ?
  • {{lcfirst:chaînedecaractères}} (convertir le premier caractère en minuscule)
  • {{ucfirst:chaînedecaractères}} (convertir le premier caractère en majuscule)
--FDo64 (discuter) 27 octobre 2019 à 11:42 (CET)Répondre
Merci FDo64 pour ce lien précieux, il me semblait bien avoir vu quelque part et même déjà utilisé ces fonctions. Je n'ai pas recherché au bon endroit. Je soumettrai une proposition de modification simple que je testerai. --Ideawipik (discuter) 27 octobre 2019 à 13:47 (CET)Répondre

Bonjour   Hercule, ParaBenT, FDo64 et NicoScribe. Hercule, tu aurais pu attendre un peu avant de relancer le script. J'ai ouvert une seule page au hasard et bingo : Diff #164065639.
Pour le modèle, je propose de modifier le code en :
<includeonly>{{safesubst:#ifexist:{{safesubst:Premier non vide|{{{fr|}}}|{{{1|}}}|{{{trad|}}}}}|{{safesubst:#ifeq:{{safesubst:ucfirst:{{safesubst:Premier non vide|{{{fr|}}}|{{{1|}}}|{{{trad|}}}}}}}|{{safesubst:ucfirst:{{safesubst:Premier non vide|{{{texte|}}}|{{{fr|}}}|{{{1|}}}|{{{trad|}}}}}}}|[[{{safesubst:Premier non vide|{{{texte|}}}|{{{fr|}}}|{{{1|}}}|{{{trad|}}}}}]]|[[{{safesubst:Premier non vide|{{{fr|}}}|{{{1|}}}|{{{trad|}}}}}{{safesubst:!}}{{safesubst:Premier non vide|{{{texte|}}}|{{{fr|}}}|{{{1|}}}|{{{trad|}}}}}]]}}|{{Lien|langue={{safesubst:lc:{{{Lang|{{{langue|{{{lang|en}}}}}}}}}}}{{safesubst:#if:{{{trad|}}}|{{safesubst:!}}trad={{{trad|}}}}}|fr={{safesubst:Premier non vide|{{{fr|}}}|{{{1|}}}|{{{trad|}}}}}{{safesubst:#if:{{{texte|}}}|{{safesubst:!}}texte={{{texte|}}}}}}}}}</includeonly>
Ce n'est pas encore idéal car cela ne résout pas les cas comme [[Article]]s. Une possibilité serait de lancer dans un même édit, la fonction cleanUpLinks de cosmetic_changes.py de Pywikibot ce qui serait possible en écrivant un script spécifique à utiliser à la place du présent modèle.
Cela ne résout pas les problèmes mineurs soulevés dans la section précédente.
Mais c'est une amélioration. Pourriez-vous relire le code et valider cette proposition ? Merci d'avance. --Ideawipik (discuter) 1 novembre 2019 à 14:27 (CET)Répondre
Bonjour à tous.   Ideawipik : je ne suis pas spécialiste des modèles, mais j'ai relu votre code : il me semble OK (pour optimiser les cas [[Titre|titre]] et [[titre|Titre]]). Merci pour cette proposition. Cordialement --NicoScribe (discuter) 1 novembre 2019 à 23:07 (CET)Répondre
Bonjour,
Mon bot tourne de manière automatique sur cette tâche, je n'ai donc pas relancé ou arrêté le script par rapport à ces messages.
Toute amélioration du code de ce modèle est bonne à prendre. Cependant je pense qu'il ne faut pas se faire de noeud au cerveau car la mise en forme recommandée est souvent appliquée par des bots (plusieurs outils utilisés les incorpore en tâche de fond).
Si tu as trouvé le bon code tant mieux.
Cordialement,
-- Hercule (discuter) 4 novembre 2019 à 11:31 (CET)Répondre
Pour info, une correction mineure du modèle a été réalisée pour bien introduire les cas [[Titre|titre]] ou [[titre|Titre]]. Mais les autres problèmes de cette substitution minimaliste persistent. Pour info, il manquait un safesubst: dans ma première proposition. code ci-dessus corrigé. --Ideawipik (discuter) 10 novembre 2019 à 23:52 (CET)Répondre

Modèle à rendre obsolète ? modifier

  Hercule et Sisyph : Bonjour, je vous "notifie" car il est signalé sur la page de la catégorie que vos bots vident la Catégorie:Page utilisant Lien pour un article existant. HerculeBot continue à être actif. La commande est-elle lancée manuellement ou programmée pour se lancer automatiquement, à heure fixe ?

Une évolution technique "relativement" simple, mais qui demande une concertation, pourrait supplanter l'usage de ce modèle, pour offrir une maintenance de meilleure qualité concernant les Liens.
Tout part du constat de petits problèmes que ne gère pas ce modèle ou d'incorrections qu'il peut introduire dans les articles (voir les deux sections ci-dessus).

Pour s'en convaincre, les passages d'HerculeBot, suscitent régulièrement des réactions critiques. Certaines réponses d'Hercule sont assez éloquentes avec une position résignée qui peut laisser croire qu'il maîtrise mal son outil.

DSisyphBot est moins critiqué. Son dresseur semble à l'écoute des critiques et en tenir compte. (Bot : détail cosmétique ; Bug ?, Hors sujet :d'ailleurs, ça m'intéresserait bien de connaître la source de ce problème, pour voir si je d'autres dresseurs de bots sont susceptibles de rencontrer le même problème. En tout cas, au regard de son action, il fait des modifications uniquement quand cela apporte quelque chose. Il est certain qu'il ne fait pas une substitution de tous les modèles « Lien » d'un article par le présent modèle Lien/Conversion automatique. Je suppose d'ailleurs qu'il n'utilise pas du tout {{Lien/Conversion automatique}} et a rédigé un script personnel.

Pour tous les utilisateurs de ce modèle (  Projet:Modèle - Projet:Maintenance, ParaBenT ou Orlodrim y a-t-il un moyen de savoir si d'autres personnes s'en servent ?) :
Écrire un algorithme et un programme spécifique, permettrait de répondre techniquement à presque tous les reproches qui sont faits au premier robot (sans compter les potentielles éditions indues que personne n'aurait remarquées) :

  1. Ne pas modifier l'article quand la modification ne convertit pas réellement un lien Modèle:Lien en lien interne. (Archive8: Y fait pas c'qui dit qu'y fait, Archive8: Modèle {{lien}} ou Archive8: Modèle:Lien) ;
  2. Ne pas traiter l'article si des bandeaux R3R ou {{en cours}}, {{en travaux}} (Archive8: article en cours et modifié par ton bot en 2014, Archive8: mais où qu'il est ? en 2016 et encore Archive8:Message au dresseur en 2017) ;
  3. Ne modifier que les modèles Lien concernés (Archive8: Modèle Lien, Archive8: Modèle {{lien}}) ;
  4. Privilégier une écriture simplifiée des liens (déjà signalé en 2017 Archive8: lien direct) et correspondant au point soulevé dans la section #Éviter la création de liens redirigés inutiles, ci-dessus avec une proposition de solution partielle ;
  5. Créer un résumé de modification personnalisé et plus explicite (Archive8: Lien vers article correspondant) ;
  6. Vérifier avant de le modifier que la cible du lien crée (fr) correspond bien à la traduction de l'article ciblé sur le wiki en langue étrangère et non pas à un autre article crée avec le même nom que le paramètre fr (Archive8: Modèle:Lien et lien interlangue mal parcouru, Archive8: Modèle:Lien change en mauvais lien) ni à une erreur de syntaxe comme dans Diff #121118725.
  7. Signaler si la valeur du paramètre trad correspond à une page inexistante sur le wiki en langue étrangère (Archive8: Ajout de lien inutile vers le wikipedia anglais) ;
  8. Enfin, avec un robot plus fiable, les contributeurs n'auraient pas à contrôler ce que fait le robot : propos d'un contributeur : « Ça fait des années que je dissèque les changements de HerculeBot » (Archive8: Faire deux commits ?)

Ces retours de la part de contributeurs divers ne sont pas tous très récents mais, en substance, le modèle et la méthode utilisée n'ont pas beaucoup évolués et ces remarques restent valables dans l'ensemble et à considérer comme un cahier des charges. Autre avantage de "développer" un programme spécifique : cela pourrait par exemple permettre de détecter, signaler et s'exempter de "corriger" pour ne pas dire dégrader (lire la section #Exemple de syntaxe erronée devenant plus complexe après passage d'un bot de cette page) certaines mauvaises insertions récurrentes dont une partie est détectée par le Projet:Liens rouges.

Dans un monde idéal,

  • où tous les modèles seraient utilisés à bon escient sans aucune faute de frappe ni de syntaxe
  • où tous les utilisateurs qui inséreraient un modèle Lien connaîtrait le titre exact correct du futur article sur frwiki.
  • où tous les créateurs d'un article vérifieraient que le titre choisi n'est jamais utilisé dans toute l'encyclopédie comme paramètre fr pour une sujet différent, dans un modèle Lien inséré.

la substitution pure et simple pourrait être une solution correcte. Mais...
Cette remarque générale s'applique à toute substitution de modèle disposant de paramètres. D'où l’intérêt de consulter les statistiques sur les modèles (surtout les paramètres inexistants) et d'ajouter des garde-fous dans nos programmes/outils.

Pour conserver le fonctionnement actuel du bot, le programme pourrait être écrit en python. En réalité, tout ce que j'ai noté ici a peut-être déjà été pris en compte par Sisyph et intégré à son propre bot. Auquel cas, il pourrait peut-être partager les fruits de son travail afin d'éviter à d'autres d'avoir à reproduire deux fois les mêmes efforts et permettre de gagner du temps. Merci d'avoir lu cette longue observation et de donner vos avis.--Ideawipik (discuter) 2 novembre 2019 à 23:40 (CET)Répondre

À ma connaissance, {{Lien/Conversion automatique}} n'est utilisé que par HerculeBot (note : il y a aussi {{Lien'/Conversion automatique}}).
Si le bot de conversion vérifie la correspondance entre l'article en français et l'article en langue étrangère avant de faire la conversion, les cas non traités risquent de s'accumuler dans Catégorie:Page utilisant Lien pour un article existant, rendant plus difficile la détection des nouveaux cas à traiter. Dans ce cas, le bot pourrait peut-être ajouter un paramètre "incohérent" au modèle pour placer la page dans une autre catégorie, voire afficher une indication du problème dans l'article.
Pense au coût de maintenance à long terme si tu te lances là-dedans : un programme plus complexe nécessitera un suivi de {{Lien}} et sa page de discussion dans les années à venir pour prendre en compte les évolutions (alors qu'avec HerculeBot, je sais que je peux modifier le modèle sans intervention d'Hercule pourvu que je mette à jour {{Lien/Conversion automatique}}).
Orlodrim (discuter) 3 novembre 2019 à 12:04 (CET)Répondre
Merci Orlodrim pour cette réponse claire.
A. Si un seul utilisateur (HerculeBot) se sert de ce modèle, peut-être qu'il pourrait adopter la méthode de DSisyphBot plus efficace (rapport signal/bruit).
B. Ajouter un paramètre incohérent au modèle Lien. Tu proposerais de créer une catégorie « Page utilisant Lien pour un article existant mais n'étant pas l'équivalent interwiki de l'article étranger spécifié. ». L'idée est bonne. Le problème, c'est qu'avec la correction actuelle, on perd la cible initiale et cette catégorie serait toujours vide après passage du bot. Il faudrait donc que le subst du modèle ne corrige pas le Lien qui contiendrait le paramètre incohérent. Et juste avant son passage, le bot devrait lancer un premier script pour ajouter ce paramètre au modèle Lien si nécessaire (mettant par la même occasion la catégorie à jour), afin d'éviter la future "perte". S'il y a coexistence des deux types de « Lien pour un article existant », bonjour les historiques ! Il faudrait aussi retirer régulièrement de façon automatique les paramètres incohérent s'il n'ont plus lieu d'ềtre (insertion du modèle corrigé manuellement mais sans retrait de ce paramètre, lien interwiki corrigé).
Je proposerais plutôt une correction par bot plus prudente des « Page utilisant Lien pour un article existant », quitte à lister ces articles dans une section d'une sous-page du Projet:Liens rouges pour permettre une maintenance ciblée (correction du lien ou de l'interwiki dans Wikidata).
Entre avoir une catégorie un peu plus fournie et introduire dans les articles des liens internes fixes incohérents, qu'est-ce qui est le plus dommageable ?
C. Sur le principe je ne suis pas contre le fonctionnement actuel (simple subst de modèle) mais je ne suis pas sûr que tout puisse être résolu avec cette méthode. Ainsi :
  • Le point #2 doit pouvoir être résolu en ajoutant une exception à l'entrée de la commande de lancement de pwb. Ajout d'une option à template.py, ou d'une option globale à pywikibot (plus délicat). Framawiki Bonjour, un avis ?
  • Le point #4 doit pouvoir être pris en compte directement par présent modèle via un module Lua. On peut aussi imaginer une fonction ou modèle à deux paramètres (cible et texte) à safesubster qui renverrait le lien simplifié.
  • Le point #5 serait une fonctionnalité utile permettant notamment à quelqu'un qui suit l'article modifié de vérifier que l'article lié est le bon. Mais cet ajout n'est pas oligatoire et serait surtout utile si le bot a une action peu ciblée (cf #3).
  • Pour le point #7, l'erreur n'est pas introduite par le bot, et cela est détecté par Projet:Liens rouges/Modèle lien vers un article inexistant en langue étrangère.
Pour les suivants, je ne vois pas bien de solution simple :
  • point #1 (lié à PywikiBot)  
  • point #3 L'idée pourrait être de « subster » un modèle par lui-même sous certaines conditions. Avec un module, est-il possible de récupérer la liste de tous les arguments initiaux même si le paramètre est inexistant dans le modèle ? Je pense que oui en itérant avec la fonction pairs( frame.args ) qui renvoie (name, value). Quelqu'un peut-il confirmer ?
  • Point #6, pour la vérification de la correspondance des articles (fr de frwiki et trad de languewiki) il faut se pencher sur les mw:Extension:Wikibase Client/Lua possibilité offertes par Lua. Si quelqu'un maîtrise, une introduction à la consultation de Wikidata par ce biais serait appréciée.
D'où l'idée d'avoir un algorithme plus perfectionné et un script dédié plus flexible. Un fois cela prêt, la mise en œuvre du bot serait la même. Dans tous les cas, un dresseur de bot doit suivre l'évolution des modèles que son bot traite ou insère.
--Ideawipik (discuter) 3 novembre 2019 à 15:29 (CET)Répondre

Bonjour,

Le modèle {{Lien/Conversion automatique}} n'est pas utile que par des bots. Il est aussi utile lors de l'édition de pages, pour mettre en forme et faire le tri entre les articles déjà existants et ceux à créer. Je m'en sers régulièrement en édition manuelle, pour corriger des liens que le bot n'a pas su traiter.

Quand je me suis lancé dans la gestion de ces liens, il n'y avait rien de prévu pour assurer la maintenance de {{Lien}}. Une fois ajouté, le modèle persistait généralement. Ayant pendant des années écrit mes propres programmes de maintenance (en Java), j'ai été lassé des mises à jour trop régulièrement nécessaire. Je n'utilise dès lors plus que les scripts Pywikibot, qui ont l'avantage d'être largement utilisés sur les projets Wikimedia et d'être maintenus.

J'ai fait procéder à des améliorations de ces scripts dans le but de diminuer les effets parfois critiquables (mais jamais rédhibitoires) de la méthode utilisée (le subst). Je reste persuadé que le ration bénéfice/bruit est largement favorable. Si toutefois l'action de mon bot était jugée trop problématique, je n'aurai d'autre solution que de cesser totalement de m'occuper de cette maintenance puisque je n'écrirais pas de programme spécifique (je ne maîtrise pas Python et ne suis plus développeur Java).

Cordialement,

-- Hercule (discuter) 4 novembre 2019 à 11:27 (CET)Répondre

Bonjour
Je vois effectivement un petit intérêt à une utilisation manuelle, si on veut faire une édition propre, sans que le bot n'ai à passer après.
  • mais en général, un rédacteur aura très certainement davantage envie de vérifier que le lien existe et de créer le lien direct plutôt que de remplacer par Lien par subst:Lien/Conversion automatique avec le risque qu'un mauvais article soit lié (voir point #6 : fonctionnement actuel du modèle sans vérification)
  • avec une utilisation manuelle, le risque que l'utilisateur laisse une syntaxe erronée dont les conséquences fâcheuses sont expliquées dans la section #Exemple de syntaxe erronée devenant plus complexe après passage d'un bot, est réduit.
L'intérêt d'une utilisation manuelle serait plus grand si ce modèle était plus fiable.
Parallèlement, la nécessité d'une correction manuelle via ce modèle serait réduite, si la maintenance automatisée « transformation de liens avec le modèle {{Lien}} en lien interne, suite à la création de l'article correspondant » était plus efficace. Par exemple en comprenant la raison de la limitation « L'action subst ne fonctionne pas dans les balises <ref></ref> et <gallery></gallery>. » Si c'est la fonction subst qui est en cause, alors une solution sans subst par traitement du wikitexte avec un script en python pourrait résoudre le problème, sans changer les habitudes de l'opérateur et la routine cosmetic_changes serait applicable en fin de traitement si l'article doit être modifié, ce qui résoudrait par la même occasion le problème soulevé dans la section #Éviter la création de liens redirigés inutiles, ci-dessus. Je sais par expérience que les balises <ref> ne posent pas de problème au parser mwparserfromhell implémenté dans PywikiBot.
Actuellement, difficile d'estimer les
  • bénéfice : conversion modèle en lien interne, sans modification d'apparence dans l'article mais qui est globalement une bonne chose car elle supprime l'utilisation d'un modèle pour une syntaxe classique moins gourmande en ressources et plus naturelle pour les futurs contributeurs à l'article.
  • bruit (subst de tous les modèles non concernés, simples modifications de l'ordre ou du nom des paramètres (alias), parfois des diff qui ne correspondent pas à cette maintenance et parfois des passages répétés sur le même article sans correction réelle. Résumé sur la pdd utilisateur d'Hercule. Cela constitue l'essentiel des reproches faits au fil du temps à ce bot.
  • dégâts collatéraux involontaires qui peuvent passer inaperçus car, en général, on fait confiance aux bots et à leurs dresseurs mais qui affectent les articles en occasionnant des pertes : ceux engendrés potentiellement par des erreurs humaines, inévitables et régulières, comme :
    • des paramètres du modèle Lien mal nommés. Voir détails plus haut (message du 27 octobre 2019 à 13:47)
    • des confusions, par un contributeur, des modèles {{Lien}} et {{Lien web}} que cette page de statistiques permet de repérer sur les dump. Merci @Epok pour les corrections
    • un choix de paramètre fr qui ne correspond pas au titre "naturel" du futur article sur frwiki (avouons que ce n'est pas évident et parfois imprévisible) et pour lequel un autre article où une redirection aura été créee ultérieurement vers un article différent de la cible.
Un bot ne pourra pas forcément s'adapter à toutes les erreurs humaines mais quand elles sont identifiées, il devrait les intégrer, au moins les plus fréquentes ou faire des contrôles.
  Hercule et Sisyph : Qu'en pensez-vous ? --Ideawipik (discuter) 4 novembre 2019 à 23:23 (CET)Répondre
« un rédacteur aura très certainement davantage envie de vérifier que le lien existe et de créer le lien direct » Tu trompes. Il est bien plus facile d'utiliser {{Lien/Conversion automatique}} pour une liste de liens que de vérifier un par un s'ils existent. Ce modèle est utile pour les rédacteurs comme pour les bots.
Ce modèle est fiable, du moment qu'il est utilisé intelligemment. Et quand il est mal utilisé c'est que {{Lien}} l'est aussi. Le rendu pour le lecteur n'est pas modifié par l'utilisation de ce modèle.
Je ne partage pas ton analyse sur les nuisances qu'apporte ce modèle. En plusieurs années d'utilisation j'ai eu quelques retours négatifs, mais généralement il y avait moyen de les corriger ou le "bruit" n'était pas très gênant (quelques lignes de plus dans un historique, même si ce n'est pas souhaitable ce n'est pas un vrai problème du moment que c'est rare. D'autant que les modifications cosmétique améliorent la lisibilité du code et ne sont pas nuisibles).
Encore une fois, je ne traite ces corrections (j'ai été le premier à m'en préoccuper) que parce que je peux le faire par un script que je n'ai pas à écrire ni à maintenir. S'il faut en passer par du code personnalisé ce sera sans moi.
Par contre si des améliorations du modèle de conversion sont possibles (peut-être par du Lua ?), alors bien entendu que je suis favorable à ce qu'elles soient mises en oeuvre.
Cordialement,
-- Hercule (discuter) 5 novembre 2019 à 15:45 (CET)Répondre
Bonjour, que de lecture, pour faire bref, j'ai copié Hercule qui s'occupait admirablement bien à vider la Category:Page utilisant Lien pour un article existant. J'ignorai qu'il y avait un script pywikibot, j'ai donc réinventé la roue pour quelques articles qui étaient ignorés par HerculeBot sans forcément être exhaustif pour autant, les cas tordus restent ignorés. Le script est dispo ici : Utilisateur:DSisyphBot/Script/modele lien a remplacer.py. Soyez indulgent avec le code, je n'ai appris à coder que pour contribuer à WP. C'est également avec ce script que je suis sensé mettre à jour Projet:Liens rouges/Modèle lien vers un article inexistant en langue étrangère. -- Sisyph 5 novembre 2019 à 23:51 (CET)Répondre
Bonjour à tous.
Merci @Sisyph pour le partage du code (tu utilises Python 2 ?).
En fait, j'ai écrit mon propre code à partir de la librairie Pywikibot et du parser mwparserfrommhell avec de légères modifs personnelles et l'ajout de quelques fonctions. C'est un intermédiaire entre la méthode brutale du subst et le traitement du texte brut que tu proposes.
Cela permet :
  • de faire des contrôles plus poussés, en fonction de la valeur des paramètres et en interrogeant les liens inter-langues pour vérifier l'existence et la correspondance des articles. Et ainsi éviter des conversions malencontreuses notamment par confusion d'homonymes ;
  • de détecter s'il n'y a pas confusion entre les modèles {{Lien}} et {{Lien web}} par celui qui a introduit ce modèle dans l'article et de corriger si c'est flagrant ;
  • de ne pas traiter les modèles insérés dans des commentaires mais bien ceux présents entre des balises <gallery> contrairement à ce qui est fait actuellement. (Je crois que je ne traite pas encore le cas des légendes dans les [[Fichier:...]] ou images) ;
  • de suggérer, en commentaire de modification, une correction complémentaire.
On peut aussi envisager d'alimenter une catégorie ou de sortir une liste d'articles. (Cela serait utile dans les cas ou aucune correction certaine n'est nécessaire dans l'article, par exemple quand le passage du bot a été invisible dans l'historique de l'article mais qu'il aurait pu faire une suggestion de lien) Par exemple:
  • si l'article langue:trad n'existe pas mais que l'article fr existe ;
  • si l'article fr existe mais ne correspond pas à l'inter(wiki)-langue de l'article en langue étrangère).
Si les bons liens sont corrigés dans les articles, la « Catégorie:Page utilisant Lien pour un article existant » doit être autant (voire davantage) vue comme un moyen de détecter
  • les connexions inter-langues incorrectes ou manquantes entre articles (wikidata)
  • les modèles « Lien » insérés dans les articles avec un paramètre fr (ou texte ou 1) incorrect (homonyme) ou un paramètre trad incorrect (inexistence)
plutôt que comme une catégorie servant à remplacer, à tout prix, des modèles « Lien » par des liens internes usuels, dans ses articles.

Pour corroborer ces dires : parmi les dix dernières contributions d'HerculeBot (d · c · b) du 9 novembre 2019:
Dans la quasi-totalité de ces cas, on ne peut pas dire que ce soient les contributeurs qui ont apposé le modèle qui sont fautifs. Ils ont bien renseigné le principal paramètre du modèle ie trad, le paramètre fr, titre du futur article, étant difficile à déterminer avant la création de celui-ci. Le modèle {{Lien}} n'est donc pas « mal utilisé » comme l'opérateur du bot semble le suggérer. C'est bien la méthode utilisée (substitution de modèle et test minimaliste ou inexistant dans le code du modèle « Lien/Conversion automatique ») qui n'est pas fiable.
La réponse « ce n'est pas un vrai problème du moment que c'est rare » n'est pas nom plus acceptable car les cas problématiques ne sont visiblement pas marginaux. Sans compter que le bot ne respecte pas les règles d'utilisation des bots.
  Hercule : La maintenance ne consiste pas à vider à tout prix une catégorie mais à s'assurer que les modifications effectuées automatiquement vont dans le sens de l'amélioration de la qualité de l'encyclopédie et à ne pas compliquer la tâche des (futurs) contributeurs. Supprimer, dans le wikicode, les indices qui permettraient de lever les doutes sur une confusion possible dégrade l'encyclopédie, même si cela n'altère pas le rendu pour le lecteur.

Par ailleurs, de façon générale, j'invite toutes les personnes qui font des (en) substitutions de modèles à faire attention. Ce n'est pas pour rien que la plupart des modèles à « subster » s'utilisent sans paramètre ou bien avec des paramètres à usage unique entrés manuellement par celui qui insère le modèle dans une page (souvent de discussion).
Dernière chose pour se convaincre que l'utilisation de ce modèle n'est pas évidente : le résultat de cette recherche des articles qui affichent « {{Lien/Conversion automatique… » dans leur texte avec 8 résultats.
  Orlodrim, Sisyph, FDo64, ParaBenT, NicoScribe, Od1n, TigH, Hercule, Epok et Linedwell : (comme derniers contributeurs à cette page de discussion ou aux deux modèles concernés), J'espère que cette petite démonstration par l'exemple vous fera comme moi douter de la pertinence de ce modèle. Merci à Hercule d'avoir voulu, comme il a pu corriger des appels superflu au modèle Lien. Mais il s'avère qu'une maintenance plus rigoureuse est à notre portée, sans utiliser le présent modèle relativement dangereux.
Regardez, pour exemple, les premiers tests de mon programme, contributions commençant par « BOT modèle Lien » du 8 et 9 novembre, Adiewibot (d · c · b). Deux types de cas intéressants :
  • le signalement d'une incohérence (ce diff), seul cas rencontré pour l'instant, en combinaison avec une autre correction). Il pourrait aussi s'agir d'un défaut de lien interlangue dans wikidata.
  • En supplément d'une correction effective d'au moins un lien, une suggestion, sans correction. Par rapport à la méthode de la substitution, c'est juste du bonus ; étant donné que l'article fr n'existe pas, ce ne sont pas ces Liens qui alimentent la catégorie à traiter. Plusieurs cas comme cette intervention.
Pour info, je pense changer le mot « confusion » en « suggestion » (ou peut-être même en autoriser la correction dans l'article) si le titre de la traduction inter-langue de langue:trad sur frwiki existe mais ne correspond pas au paramètre fr dont l'article n'existerait pas sur frwiki, par contre je préfère garder « confusion » quand les deux existent mais que leur cible (après redirections éventuelles) diffèrent.
La suggestion d'Orlodrim de rajouter un paramètre incohérent est envisageable, même si je pense qu'il vaudrait ne pas toucher à l'article et le corriger manuellement dans ce cas. Quoi qu'il en soit, cette option serait préférable à introduire un lien interne fixe dont on est quasiment sûr qu'il est erroné (principe du modèle à substituer actuel). Sinon plutôt qu'une catégorie, nous pourrions envisager d'éditer une liste des cas concernés à traiter. La correction manuelle de cette liste viderai en partie la catégorie actuelle.
Dans le résumé de diff, je mets des liens uniquement vers les articles existants au moment du passage du bot. Je ne sais pas s'il faut conserver le signalement des articles inexistants sur les wiki étrangers cas pour lesquels le modèle lien n'apporte strictement rien.
Je reste à l'écoute de toute suggestion.
Pour mon auto critique, j'ai déjà repéré quelques corrections à faire au programme. Diff #164325453 On ne peut pas trop compter sur cosmetic_changes par défaut (dans des paramètres de modèles et entre certaines balises). J'ai corrigé l'insertion du lien en amont et le robot de Friday83260 (WPCleaner) sera moins sollicité... Sur ce cas, HerculeBot n'aurait pas fait mieux avant la modification du modèle d'il y a quelques jours et évoquée dans la section précédente de cette page..

Pensez-vous qu'il serait souhaitable qu'Hercule désactive le lancement automatique de son bot pour cette correction, peut-être temporairement, pour voir comment évolue cette catégorie ?
--Ideawipik (discuter) 10 novembre 2019 à 23:52 (CET)Répondre
Bonjour   Je n'ai rien compris, mais je vous laisse décider, parce-qu'à ce niveau là, pour moi c'est du Chinois  . Amicalement, et merci pour le travail que vous faites   --Friday83260 (Wanna talk ??) 11 novembre 2019 à 15:45 (CET)Répondre

Bonjour, concernant les modifications avec des modèles {{En cours}} ou équivalent, Pywikibot est déjà configuré pour ne pas les modifier, et confirme que ça marche bien: mes scripts sont régulièrement bloqués pendant une semaine à cause d'un modèle oublié  . J'ai il y a deux ans enlevé {{En travaux}}, car ce modèle n'est pas censé empêcher les modifications mineures [1]. Ping Hercule: es tu sûr d'utiliser la dernière version de PWB? Sinon c'est un bug, et n'hésites pas à me contacter pour que j'essaye de le corriger. --Framawiki 17 novembre 2019 à 17:23 (CET)Répondre

Salut,
Oui, j'actualise tous les jours la dernière version de Pywikibot, donc je suis censé être à jour. Le messages à ce sujet mentionnés en début de cette discussion date d'il y a quelques années. Je doute qu'ils soient encore d'actualité.
Concernant la « mauvaise utilisation de Lien » : comme mon bot ne change pas le rendu (un lien interne vers une page qui n'est pas la plus logique), si le lien converti n'est pas correct ce n'est pas la faute de mon bot mais bel et bien de l'utilisateur qui appose le modèle...
-- Hercule (discuter) 18 novembre 2019 à 11:41 (CET)Répondre
Bonjour. Concrètement, en plus de la correction des {{Lien}}, j'ai intégré à mon programme le traitement des liens insérés via le modèle {{Jumelage}} (exemple) et via le modèle {{TriNom}} (exemple).
Par mesure de précaution et étant donné que cette maintenance n'est pas d'une priorité absolue, mon bot ne traite pas les articles qui contiennent les modèles {{R3R}} , {{En cours}} ou {{En travaux}}.
Avec ce programme, on s'affranchit de toutes les critiques qui peuvent être faites à la méthode de la substitution "agrémentée" de corrections cosmétiques et on est plus efficient. La méthode employée depuis quelques jours permet de traiter davantage de modèles Lien de façon automatique tout en s'abstenant quand il y a risque de confusion. Quand le bot tourne sur la catégorie, il sort un rapport qui :
  • pour les modèles qu'il n'aurait pas su traiter (article nommé fr existant), suggère soit
    • un lien inter-langue manquant dans Wikidata, entre articles cibles de fr et trad
    • la correction du paramètre fr dans un modèle Lien, parce qu'il serait trop imprécis (existence possible d'homonymes)
    • un lien interne avec une cible.
  • pour les autres modèles Lien de l'article, indique
    • le nom, s'il existe, de l'article qui est la traduction de l'article trad.
    • les paramètres trad qui ne correspondent pas à un article existant en langue étrangère.
Dans la pratique, la catégorie est maintenant quasiment vide et se remplit d'environ une à deux centaines d'articles par jour (dont une partie est listée uniquement parce qu'elle contient une palette qui elle seulement nécessite une mise à jour de liens internes).
  Hercule :
  • pour répondre à ta remarque de « mauvaise utilisation de Lien ». Ce n'est pas parce que ton bot ne change rien visuellement qu'il agit forcément de façon optimale. En examinant le paramètre trad, paramètre qui est celui qui a le plus de chance d'être correct parmi les paramètres entrés par l'utilisateur du modèle Lien, on peut identifier assez clairement l'intention de celui qui a inséré le modèle dans un articleNote. Avec la méthode de substitution actuelle, le bot ne considère même pas la valeur de ce paramètre ; puis le supprime du wikicode alors que ce serait un moyen de différencier des articles homonymes. Pour faire une comparaison : si un facteur sait que A. Dupont habite seul au 3 de la rue et B. Durand seul au 5 de la même rue et qu'il voit passer une enveloppe adressée à A.Dupont 5 rue… , à quelle porte va-t-il sonner pour distribuer la lettre ? Entre un bot con et un bot plus intelligent, j'opte pour le second.   Friday83260, est-ce que c'est moins du chinois ainsi ?
  • Par ailleurs, quand un bot fait des modifications inutiles ou ne fait pas ce qu'il dit qu'il fait, c'est bien la faute du dresseur ! La nouvelle méthode élimine les modifications parasites qu'HerculeBot (d · c · b) continue de faire. Pour illustration : actions inutiles récentes et qui ne correspondent pas au résumé de diff, quatre édits en quelques jours sur Robert Smithson, sans corriger le moindre lien : diff 1, diff 2, diff 3 et diff 4.
  Sisyph : Même si ton bot pour traiter la catégorie est plus prudent que celui d'Hercule et voit davantage de modèles, il pourrait aussi contrôler la correspondance entre l'article en langue étrangère et celui sur frwiki. Par exemple sur ce diff, les articles en:iReport et IReport ne traitent pas du même sujet.
  Orlodrim, FDo64, ParaBenT, NicoScribe, Od1n, TigH, Epok, Linedwell, Framawiki et Toff :
Mon outil (algorithme et script python), que je serais prêt à partager (pourvu que vous vouliez regarder son code, le faire évoluer et ne pas l'utiliser bêtement sans comprendre ce qu'il fait), fait le travail et remplace haut la main la méthode actuelle risquée. C'est pourquoi j'invite à ne plus utiliser dorénavant ce modèle de conversion et à le déclarer obsolète. Toute remarque positive ou négative sur les actions de Adiewibot (d · c · b) (dont le résumé commence par « BOT modèle Lien ») est la bienvenue. J'hésite à désactiver certaines corrections cosmétiques personnalisées issues de Wikipédia:AutoWikiBrowser/Template_redirects.
Salutations. --Ideawipik (discuter) 19 novembre 2019 à 14:29 (CET)Répondre
Note: Pour rappel, d'après la documentation du modèle Lien : le paramètre trad contient le « titre de l’article existant sur la Wikipédia en langue étrangère », le paramètre fr contient le « titre de l’article inexistant à créer sur la Wikipédia en français ». S'il était si facile pour un contributeur de déterminer le titre du futur article en français, la liste des modèles liens utilisés pour des articles déjà traduits serait toujours vide.
Bonjour à tous.   Ideawipik : j'ai 3 remarques de fond puis 2 remarques de forme :
  1. Merci pour les contributions « BOT modèle Lien » d'Adiewibot (d · c · b). J'en ai regardé quelques unes : j'ai juste trouvé une bizarrerie en rapport avec {{Lien}} (celle-ci, où il n'y a pas « 1 conversion + 1 suggestion » mais bien « 2 conversions » puisque le bot a appliqué sa suggestion où l'article étranger était celui de la bonne personne, par chance, étant donné les nombreux James Walker possibles) et une bizarrerie sans rapport avec {{Lien}} (celle-ci, où des espaces fautives sont déplacées, ex : ''[[Lost : Les Disparus| Lost]]'' → '' [[Lost : Les Disparus|Lost]]'').
  2. Les personnes notifiées dans cette discussion sont suffisamment expérimentées pour comprendre les limitations du modèle, en particulier lors d'utilisations automatiques. Alors j'ai été troublé par vos formulations : j'ai cru que vous aviez découvert de nombreux défauts, mais finalement ils viennent de 2 limitations connues. Par exemple, vous signalez « quatre confusions », mais cela correspond à une limitation connue : l'absence du contrôle de la chaîne « article trad - Wikidata - article fr ». Vous signalez « un lien vers une page d'homonymie », mais c'est la même limitation connue. Vous signalez le cas « Quisling », mais c'est encore la même limitation connue. Vous signalez « trois édits 100 % cosmétique », mais cela correspond à une seconde limitation connue sur laquelle   Hercule vous a déjà répondu : l'application de cosmetic changes même quand la conversion de {{Lien}} a échoué. Vous signalez les cas du 10 novembre, mais ils sont équivalents aux cas précédents. Vous signalez le cas « Robert Smithson », mais c'est encore la seconde limitation connue.
  3. Vous avez pointé des limitations du modèle. OK, donc la documentation du modèle peut être complétée pour les lister. Mais cela ne rend pas le modèle obsolète pour autant car, comme l'a signalé Hercule (pour une utilisation manuelle) « Il est bien plus facile d'utiliser {{Lien/Conversion automatique}} pour une liste de liens que de vérifier un par un s'ils existent. »
  4. Je pense que certaines de vos remarques sont trop sévères. Vous signalez « un lien vers une page d'homonymie » → votre bot le fait aussi. Vous signalez « un diff difficile à lire » → c'est valable pour tous ceux (humains et bots) faisant des cosmetic changes → votre bot en fait aussi. Vous signalez « perte du paramètre trad qui permettrait la déconfusion » → on supprime forcément les paramètres en même temps que le {{Lien}}, même lorsqu'un humain juge après coup que la conversion était imparfaite → votre bot l'a fait dans la première bizarrerie que j'ai signalée. Vous signalez le cas « Loving v. Virginia », où Mildred Loving est une redirection (vers l'article corrigé) → je ne sais pas si votre bot vérifie les liens circulaires indirects, mais en tout cas votre bot ne vérifie pas les liens circulaires directs, cf. cet exemple, où SUSAT est directement l'article corrigé.
  5. Votre solution est plus sécurisée que la précédente (l'utilisation automatique du modèle), je vous redis « merci ». Je suppose que vous avez travaillé un bon moment pour la mettre au point, et que sa complexité algorithmique est supérieure à celle de la précédente, et que son coût (processeur et mémoire) est supérieur à celui de la précédente. Donc, au lieu de dire « Votre solution est plus sécurisée, merci », je pourrais dire « Votre solution est plus sécurisée, c'est la moindre des choses (étant donné les efforts qu'elle nécessite) » → cela serait de la taquinerie. Par contre, je considère que votre phrase « Entre un bot con et un bot plus intelligent, j'opte pour le second. » va au-delà d'une taquinerie.
--NicoScribe (discuter) 22 novembre 2019 à 00:13 (CET)Répondre
Bonjour. Merci beaucoup NicoScribe pour cette réponse appréciée, ces retours constructifs et étayés et le temps que vous y avez consacré.
  1. Contributions. Je vous rassure. Il n'y a pas de bizarrerie. Désolé de vous avoir mené à ces questionnements.
    • a. Il n'est aucunement question de chance. J'ai deux façons d'appliquer mon bot. Soit en automatique complet, soit en mode semi-automatique. La seconde option permet de voir le diff et le commentaire de diff avant de valider ou refuser manuellement la correction. Elle permet aussi de faire des petites retouches en ouvrant le nouveau texte dans un éditeur. C'est ce que j'ai fait dans ce cas précis en suivant la suggestion pour le second lien, après vérification, mais sans changer, à tort, le commentaire de modification. J'ai dû le faire deux ou trois fois tout au plus pour éviter la nécessité d'un autre édit dans la foulée. Désormais je peux modifier le commentaire de diff, si j'utilise exceptionnellement le mode semi-automatique.
    • b. Je ne vois pas où est la bizarrerie dans le second cas. Le bot traite le lien vers « Weather Girl » et la modif que vous mentionnez est une correction cosmétique automatique en bonus.
  2. Ces deux limitations ont beau être connues, s'il y a des moyens relativement simples de s'affranchir de ces limites ou de réduire leurs effets négatifs, pourquoi ne pas le faire ? Toute action peut-être remise en question. @Hercule lui-même le reconnaît.
    Par exemple, je ne vois pas l'interêt de modifier "cosmétiquement" plusieurs dizaines d'articles par jour, avec un commentaire inapproprié, alors même que ces articles peuvent ne pas contenir de modèle lien, si la raison de leur présence dans la catégorie est l'inclusion d'une palette commune qui elle seule contient un Lien à actualiser.
    Dans l'exemple pris, les « quatre confusions + un cas + trois 100 % cosmétique » correspondaient si je me rappelle bien à huit modifications consécutives d'HerculeBot. Cela tend à montrer que ce que son dresseur appelle un « effet de bord » n'est pas si rare que cela, le ratio d'un cinquième de modifications inapproriées du 10 novembre va dans le même sens. Et les critiques reçues par/pour ce bot en pdd utilisateur sont aussi explicites.
    Le cas Robert Smithson est un exemple typique de ce qu'il faut faire pour améliorer la crédibilité des bots (voir diff 3 et 4 plus haut), la cohabitation humains-bots et la lisibilité des historiques des articles. Autre exemple : historique de la page « Bataille de Kenge ».
  3. Si l'utilisation manuelle du modèle {{Lien/Conversion automatique}} pour une liste de liens revient à faire la substitution de tous les liens sans vérifier les correspondances manuellement, autant faire passer un bot sur la page contenant cette liste. Sinon, supprimer des {{Lien, |trad=…, |fr=, texte=, }} et ajouter des [[ et ]] est relativement accessible. Je ne dis pas que ce modèle est entièrement inutile mais qu'il n'est pas fiable donc dangereux. Est-ce que vous accepteriez que l'on recommande aux bots faisant des corrections automatiques de ne plus utiliser cette méthode voire qu'on leur en interdise l'utilisation ? En reprenant vos mots, si un humain doit vérifier les actions du bot afin de juger après coup si la conversion était correcte ou imparfaite, le bénéfice du passage du bot me semble limité.
    • Liens vers des pages d'homonymie. Dans le cas cité, la page d'homonymie correspond à l'équivalent francophone de la page d'homonymie anglophone (contenant des personnes portant les prénoms Ulf). C'est bien ce qui était visé par le rédacteur.
      Je peux éventuellement tester si la cible est une page d'homonymie. Mais, si c'est positif, que faire ?
      • Ne rien faire et laisser le lien bleu via le modèle Lien permettrait juste de conserver titre et langue initiaux donnant peut-être un indice sur l'intention initiale (en examinant les renommages de pages sur les deux sites) si tant est que la destination souhaitée ne soit pas la page d'homonymie. Et si un autre bot passe derrière avec des critères plus souples, cette précaution n'aura servi à rien.
      • Convertir en {{page h'|...}}, sans assurance de l'intention du rédacteur.
      • Convertir en lien interne classique, comme je l'ai fait jusqu'à présent et comme le ferait le présent modèle à "subster".
    • Cosmetic changes. Vous remarquerez que contairement à ce qui est fait avec la méthode de la substitution, mon bot ne touche qu'aux modèles Lien qu'il converti en lien interne et pas à tous ceux de l'article dont l'ordre des paramètres ne correspondrait pas au standard. Ensuite, il fait des corrections cosmétiques sensiblement comme l'autre bot avec quelques-unes en plus. C'est aussi pour une raison de lisibilité que je disais « J'hésite à désactiver certaines corrections cosmétiques personnalisées ».
    • Perte du paramètre trad. Le but de la conversion est bien de s'affranchir du lien vers l'article en langue étrangère, donc de perdre les paramètres trad et langue, j'en conviens. Mais si on peut s'assurer, avant de les perdre que la page en français correspond à la cible souhaitée, pourquoi ne pas le faire. Les données interlangues (wikidata) me semblent relativement fiables pour établir ce lien. Les problèmes pouvant néammoins survenir si les articles en langue étrangère ont été renommés, sans redirection, par exemple pour faire de l'ancienne page une page d'homonymie. Les signalements de mon bot « Article inexistant : <langue>:<titre> » en sont probablement des témoins (ou bien sont liés à une suppression pour critères d'admissibilité sur l'autre wiki).
      La suggestion donnée dans ce commentaire de ce diff n'aurait pas été repérée par la méthode actuelle. C'est un coup de pouce. Pour le coup, je l'ai corrigé au cours du même édit. Mais imaginez qu'une page d'homonymie ait été créee avec le nom James J. Walker sur frwiki, la méthode employée aurait donné un lien interne normal vers cette page « James J. Walker ». Avant qu'un contributeur se rende compte de cette action du bot ou de la non pertinence du lien, il peut se passer du temps et ensuite, bon courage pour repérer de quel James J. Walker il s'agit. Certains cas peuvent être assez ambigu.
    • Liens internes circulaires. Mon bot vérifie que les articles cibles, après ou via redirection coïncident dans les deux langues. D'ailleurs, il m'a permis de repérer un cas étonnant : sur enwiki une redirection Supercar Street Challenge → Exakt Entertainment et sur frwiki dans l'article « Exakt Entertainment » un modèle {{Lien|trad=Supercar Street Challenge|langue=en|fr=Supercar Street Challenge}}
      Pour les liens internes vers le titre de l'article (directement ou indirectement), j'avais hésité à tester cela me disant que cela devait être rare.   Je viens d'ajouter la comparaison et la suppression du lien dans le cas d'un simple lien interne. (Est-ce qu'il faut aussi le faire pour {{Jumelage}} et {{TriNom}} ?) Encore une amélioration par rapport à la méthode du subst !
  4. Sur la forme, je reconnais que n'ai pas forcément choisi les bons mots pour exprimer que sans entrer dans des algorithmes complexes ni recourir à de l'intelligence artificielle, avec un simple cahier des charges mieux adapté à la situation concrête, on peut améliorer une action automatisée. Je m'en excuse auprès du bot dressé de façon minimaliste. En l'état, le coût (processeur et mémoire) n'est pas excessif, pas bien plus que celui utilisé par Hercule, puisque j'ai la même base PywikiBot. Par contre au prix d'un peu de mémoire, je pourrais encore optimiser mon programme et réduire la sollicitation parfois redondante du serveur.

Mes rapports de détection m'ont permis manuellement de créer des liens interlangues manquants dans wikidata et de modifier la valeur du paramètre fr pas assez précis (en raison d'existence d'homonymes), dans des articles que le bot a analysé (catégorie) mais pas traité (un seul lien concerné).
Faire passer un bot moins rigoureux vide partiellement la catégorie et entrave ces corrections facilement détectables tout en augmentant la tâche du projet de maintenance Liens vers les pages d'homonymie. Je me permets de notifier cette discussion à quelques contributeurs à ce projet   ContributorQ, Criric, Frenouille, Kertraon, Leag, LeFit, Litlok, NicoV, Paternel 1, Piku, Polmars, TED, The Titou, TwoWings et SenseiAC au cas où ils voudraient apporter un avis ou un éclairage plus global.
Merci. --Ideawipik (discuter) 22 novembre 2019 à 22:27 (CET)Répondre
Je ne sais pas pourquoi je suis notifié et j'avoue que je suis découragé par la longueur de cette discussion... Quelqu'un peut me faire une courte synthèse ? -- TwøWiñgš - [Formules de politesse parfois implicites, inutile de s'offusquer] - Et si on discutait ? 22 novembre 2019 à 22:45 (CET)Répondre
Je suis comme TwoWings un peu perdu, une courte synthèse serait la bien venue --Paternel 1 (discuter) 22 novembre 2019 à 23:06 (CET)Répondre
  TwoWings et Paternel 1 : Vous avez raison discussion difficile à prendre en cours.
Synthèse de la discussion :
HerculeBot (d · c · b) se charge quotidiennement de vider la catégorie Catégorie:Page utilisant Lien pour un article existant qui rassemble théoriquement des articles contenant au moins un modèle {{Lien}} pour lequel il existe sur frwiki un article nommé comme la valeur du paramètre fr spécifiée dans ce modèle.
Dans son fonctionnement, à la création de la nouvelle page, sur frwiki, le modèle Lien n'affiche plus le lien rouge (article inexistant) accompagné du lien vers la traduction en langue étrangère (paramètres langue et trad) mais un lien bleu vers cette nouvelle page. La nouvelle page peut être la traduction en français de l'article visé (dans ce cas pas de problème). Mais il peut s'agir d'un autre article homonyme n'ayant aucun rapport ou d'une page d'homonymie et ces cas ne sont pas marginaux.
Un robot peut remplacer les modèles Lien par des liens internes classiques [[cible|texte]] qui sont moins coûteux en ressources que le modèle pour l'affichage d'un article, avec un rendu identique.
Le fonctionnement du bot sus-cité qui utilise le modèle {{Lien/Conversion automatique}} présente plusieurs problèmes évoqués dans la discussion. Les principaux étant :
  • la non vérification de la correspondance entre l'article visé trad et le nouvel article crée (paramètre fr) et donc la perte du nom de l'article visé initialement en cas de confusion. Pour comprendre pourquoi cela me semble absurde, lire cette note.
  • moins grave, un choix du dresseur qui autorise son bot à faire des modifications uniquement de cosmétique du code avec un résumé de modification ne correspondant pas à ce qui est effectivement fait (parfois plusieurs fois en quelques jours sur un même article). C'est contraire aux usages des bots sur Wikipédia francophone et ça rend l'action du bot confuse.
Un autre mode de fonctionnement automatisé, capable d'examiner davantage d’occurrence du modèle Lien dans les pages concernées, tout en n'effectuant pas les conversions en cas de doute, est proposé. Il permet aussi de faire des suggestions supplémentaires de correction d'autres Lien insérés dans les pages analysées. Il a été adopté par Adiewibot (d · c · b). Sa mise en activité optimale requerrait que les bots se chargeant de cette maintenance (ceux d'Hercule et occasionnellement de Sisyph que seul le premier point concerne) se conforment à un fonctionnement commun (histoire d'utiliser des tamis de calibres équivalents).
J'aimerais des avis pour savoir si vous pensez qu'il est préférable de basculer vers le nouveau mode de fonctionnement. Merci d'avance.
--Ideawipik (discuter) 23 novembre 2019 à 12:16 (CET)Répondre
Merci Ideawipik pour tes explications, sans avoir aprofondit le sujet il me s'emble que le nouveau mode apporte quelques bénéfices, --Paternel 1 (discuter) 23 novembre 2019 à 13:12 (CET)Répondre

  Ideawipik : Je réponds à votre message du 22 novembre 2019 à 22:27 (CET).Répondre
Ma réponse globale :
Je vous présente mes excuses car mon message précédent est imprécis. Je ne veux pas minimiser ces 2 limitations connues de l'utilisation automatique du modèle. Je sais que de nombreuses contributions incluent ces limitations. J'avais déjà compris vos arguments, donc je n'ai pas besoin de répétition des arguments, ou besoin de nouveaux exemples illustrant ces 2 limitations. Votre solution est plus sécurisée.
Mes réponses aux 5 points :

    • a. OK.
    • b. Oubliez cet exemple, cela n'est pas grave. Voici tout de même un exemple équivalent dans le même diff : l'espace fautive dans « 2008]] : ''[[NCIS : Enquêtes spéciales| NCIS]]'' » a été déplacée dans « 2008]] : '' [[NCIS : Enquêtes spéciales|NCIS]]'' ».
  1. cf. « ma réponse globale »
  2. « Ne pas vérifier les correspondances » est la première limitation connue de l'utilisation automatique du modèle. Alors, en écrivant « pour une utilisation manuelle », je pensais au cas où il y a vérification. Exemple : un humain veut sortir un article de la catégorie « Page utilisant Lien pour un article existant » ; il cherche le texte « {{Lien| » dans le wikicode ; celui-ci est trouvé 42 fois ; l'humain ne détecte donc pas facilement quel(s) appel(s) du modèle apparai(ssen)t en bleu ; l'humain remplace alors tous les « {{Lien| » par des « {{subst:Lien/Conversion automatique| » ; le bouton « Voir les modifications » lui permet de détecter un unique appel de {{Lien}} transformé en lien interne ; il vérifie alors la correspondance avant de publier sa contribution.
    J'ai suggéré l'ajout des limitations dans la documentation du modèle, sans réfléchir à la formulation. La formulation minimale « Attention : ce modèle ne vérifie pas la correspondance entre l'article en français et l'article en langue étrangère avant de faire la conversion. Attention : pour une utilisation automatique du modèle, celui-ci n'a pas de « valeur de retour » indiquant que zéro ou une ou plusieurs conversions ont eu lieu. » me conviendrait, mais je ne suis pas opposé à une formulation plus explicite, déconseillant l'utilisation automatique du modèle. Par contre, je suis mal placé pour me prononcer, n'ayant pas de bot alors que plusieurs personnes notifiées dans cette discussion en ont.
  3. Ma remarque portait sur la forme (j'ai écrit « remarques trop sévères » parce que les défauts listés semblent, à la louche, s'appliquer aussi à votre bot). Mais vous reprenez chaque exemple pour repartir sur le fond : vous êtes infernal  . Pour vos remarques de fond : je vous renvoie à « ma réponse globale ». Pour vos nouvelles questions : je ne sais pas.
  4. OK.

--NicoScribe (discuter) 24 novembre 2019 à 23:27 (CET)Répondre

Merci NicoScribe et Paternel 1 pour vos réponses. Elles me confortent sur l'intérêt d'un changement de méthode.
1.b. Concernant le fonctionnement de mon bot, la question des modifications cosmétiques est connexe. Si c'est préféré, je peux les désactiver entièrement ou partiellement. NicoScribe, vous avez raison pour la question des espaces superflus dans le texte des liens internes. Cette correction est insérée dans les cosmetic changes de pywikibot (les même que ceux utilisés par l'autre bot). Dans certains cas, comme celui que vous citez, la modification ne fait que déplacer l'espace superflu. La correction « [[NCIS : Enquêtes spéciales| NCIS]] » en « [[NCIS : Enquêtes spéciales|NCIS]] » aurait bien lieu (avec suppression des espaces doubles ou superflus) s'il n'y avait pas la présence des guillemets (balises de gras ou d'italique). Plus généralement, l'outil préfère adopter une mise en forme en s'assurant que cela ne modifie pas le rendu de la page, quitte à seulement déplacer une coquille mineure. Dans le cas où il y a du texte (ou un caractère différent d'un espace) juste avant ou juste après les crochets, la décision est un peu complexe. Par exemple « ''texte''[[2005 à la télévision| 2005]] » (« texte 2005 ») doit être converti en « ''texte'' [[2005 à la télévision|2005]] » (« texte 2005 ») et non pas en « ''texte''[[2005 à la télévision|2005]] » (« texte2005 »). J'ai bien saisi le message et vais voir si on peut améliorer cela.
3. Ça c'est une utilisation intelligente et tout à fait honorable de ce modèle. On peut la recommander. Je vois deux inconvénients qui personnellement me décourageraient à l'utiliser.
  •   OK J'allais vous demander comment remplacer tous les « {{Lien| » par des « {{subst:Lien/Conversion automatique| » mais je vous remercie car je viens de (re)découvrir la fonction « Rechercher et remplacer » de l'éditeur avancé. Ne pas oublier d'activer la case « Traiter la chaîne de recherche comme une expression rationnelle » et d'utiliser comme expression « \{\{ *[Ll]ien *\| » pour inclure les variantes possibles.
  • Comme tous les modèles de l'article considéré sont potentiellement modifiés par le subst (ordre des paramètres, ajout du paramètre optionnel langue ou fr ou trad, simple ajout de majuscule à lien), il n'est pas toujours rapide de visualiser quels sont les modèles effectivement transformés en liens internes. Mais il est aussi vrai qu'aucun changement cosmétique n'interfère, changements qui rendent parfois difficile la vérification des actions d'un bot. D'où l'importance de pouvoir faire confiance aux bots.
  • Si les modèles « Lien » sont entre des balises <ref> et </ref> ou <gallery> et </gallery>, la substitution ne fonctionne pas. En faisant « Prévisualiser » puis « Voir les modification », on affiche juste {{subst:Lien/Conversion automatique| dans le texte de l'article. Le mode de fonctionnement du nouveau bot proposé permet de traiter ces modèles comme les autres. (remarque ajouté le 27 novembre 10:00).
Actions envisageables
Je n'y connais rien en gadgets. et ne sais pas s'il serait possible de reporter uniquement les modèles Lien concernés par un article fr existant ou une traduction de trad existante sur frwiki sous un nom différent de fr. Les corrections du deuxième cas permettant d'éviter la création de doublons de traductions incitées par ce modèle (travail inutile). Et les cas sont listés deux fois par mois sur ces pages du projet Liens rouges.
Autres options :
  • Je pourrais poster le rapport d'analyse par bot des articles présents dans la Catégorie:Page utilisant Lien pour un article existant, sur une page annexe, pour aiguiller un humain dans ses corrections manuelles. Les pages présentes simultanément dans la catégorie et dans le rapport étant à traiter en priorité car le(s) bot(s) n'aurait pas su quel choix y faire ni laissé de place à la chance.
  • On peut envisager, comme le faisait   Orlodrim en tout début de discussion, l'ajout de deux paramètres incohérent et déjà existant par le bot. Mais pour le premier il faudra d'abord se mettre d'accord sur les cas où il y a dans une langue deux articles différents et dans l'autre langue une redirection et un article. Avec cette solution, la maintenance à long terme me semble plus délicate.
Accorder les bots
Comme déjà dit, adopter ce nouveau mode de fonctionnement reviendrait à faire des efforts pour rien si le bot d'  Hercule poursuit avec sa méthode actuelle (traitement automatique avec peu de discernement ; pour la route, introduction d'un sportif à la place d'un acteur dans des articles liés au cinéma russe ; par exemple : ce diff où l'acteur ru:Макаров, Василий Иванович (Makarov, Vassili Ivanović) est confondu avec le biathlète fr:Vassili Makarov. Le nom complet du second étant Макаров, Василий Павлович (Makarov, Vassili Pavlovich).). J'aimerais bien une réponse de la part du principal intéressé. Mon intention n'est pas de mettre Herculebot au chômage mais de faire en sorte que nos bots agissent au mieux pour le bien de l'encyclopédie. La petite surcharge de travail pour "vider" la catégorie avec l'aide des propositions du nouveau bot me semble inférieure à la tâche nécessaire ultérieurement à un contributeur pour retrouver le bon lien ou le bon homonyme une fois perdu. Pour info, sur les 215 pages de l'espace principal que comptait la catégorie hier soir, une dizaine nécessitait une correction du paramètre fr, cinq requéraient un ajout de lien interlangue dans Wikidata, six contenaient une incertitude (faut-il suivre ou non la redirection ?). Et le rapport a permis de déceler un doublon Society for the Study of French History et Société pour l'Étude de l'Histoire de France corrigé depuis en redirection.
Cordialement. --Ideawipik (discuter) 25 novembre 2019 à 22:03 (CET)Répondre
Pour les paramètres langues voir la notices de {{lien}} et également les deux pages de catégorie de maintenances relatives aux langues où les codes langues y sont actualisé. Par facilité, j'utilise cette autre pages !
Je suis du même avis que NicoScribe pour son point 4. --ParaBenT (discuter) 26 novembre 2019 à 21:03 (CET)Répondre
Merci ParaBenT pour les liens.
Sur la forme, vous avez peut-être l'impression que je tire sur l'ambulance mais je propose à la place un SAMU (SMUR).
Sur le fond, je vous saurais gré de me donner un cas où mon bot ferait moins bien que ceux appliquant l'ancienne méthode. Si on peut éviter de remplacer, dans tous les articles le contenant, un modèle Lien en lien interne classique vers le mauvais article pour ne serait-ce que trois ou cinq pages (article ou redirection) créees par jour, on y gagne vraiment en "des-homonymie" à long terme.
(message parti un peu vite) Cordialement--Ideawipik (discuter) 27 novembre 2019 à 13:33 (CET)Répondre

Résidus de substitutions ayant échoué modifier

Il faudra penser à corriger les pages qui contiennent encore des substitutions infructueuses ou commentaires compliqués : Spécial:Recherche/insource:/st\:Lien\/Conversion automatique/ (488 dans l'espace des articles). — Ideawipik (discuter) 11 janvier 2022 à 16:52 (CET)Répondre

Revenir à la page « Lien/Conversion automatique ».