Wiktionnaire:Statistiques/Coordination

Raccourci [+]
WT:STATC

Acte de création modifier

Copié de Wiktionnaire:Wikidémie/janvier 2011#Wiktionnaire:Statistiques plus mis à jour

Ces statistiques n'ont plus été mises depuis juin 2010. Ce n'est pas très sérieux pour une page qui est pointée par un des liens les plus visibles de la page d'accueil.

Le plus simple serait que Laurent Bouvier réapparaisse, mais il semble bien être aux abonnés absents. Il a néanmoins laissé quelques instructions sur Discussion Wiktionnaire:Statistiques. Mais je n'ai pas Excel, et les macros OpenOffice et moi on est fâchés. Alors s'il y avait un volontaire, ce serait cool. --GaAs 5 janvier 2011 à 23:47 (UTC)[répondre]

J'ai aussi remarqué que les stats n'ont pas été mis à jour depuis plus de 6 mois. J'avais donc essayé de regardé ça mais faute de temps je me suis arrêté pas beaucoup plus loin que télécharger le dernier dump. Il me semble que la partie pour Excel concerne surtout la mise en forme (que je pense pouvoir réussir à faire avec OO Calc). C'est toute la partie avant qui me pose problème (faute de temps), c'est-à-dire tout le traitement de la base de données. Par exemple « Pour chacun des articles, découper l'article en sous-articles de premier niveau (= par langue ) grâce aux balises du {{}} et les quelques exceptions éventuelles (Caractère …) » je ne sais pas le faire automatiquement sans écrire un bout de code en ???. Ensuite,
  • Pour chacun des sous-articles:
    • Mesurer la taille en octets (Je laisse les catégories dans le sous-article)
    • Rechercher les balises de second niveau. Pour ce faire, le plus simple est d'extraire intégralement les balises du type Modèle:-x*-

Je sais pas faire non plus, etc. Bref à mon avis il faut avoir quelques connaissances qui s'étendent au-delà de la manipulation d'un tableur. Mais si quelqu'un se sent le courage d'écrire un script qui fait tout cela automatiquement et qui le propose au téléchargement aux autre contributeurs, ça permettrait que ces stats soient mises à jour très régulièrement. Pamputt [Discuter] 6 janvier 2011 à 13:11 (UTC)[répondre]

Tu as raison, je coince déjà à "Pour chacun des articles". Comment et avec quel outil récupère-t-on le code d'un article dans le dump ? La suite ne me poserait pas de problème en C ou en VB. --GaAs 6 janvier 2011 à 13:34 (UTC)[répondre]
J’ai des outils qui pourraient servir à ça (en perl). — Dakdada (discuter) 6 janvier 2011 à 13:43 (UTC)[répondre]
Voilà quelques sources utiles : Utilisateur:Darkdadaah/Toolserver#Sources. Ce sont les scripts de base que j’utilise pour créer les données pour mes outils. — Dakdada (discuter) 6 janvier 2011 à 14:23 (UTC)[répondre]
Si chacun est capable de faire un point particulier de la liste, on va réussir à aller au bout. Dakdada est ce que tu penses que tu pourrais écrire un script Perl qui permet de faire ça automatiquement. Ensuite si GaAs est capable de faire la suite, je pourrais me charger de la mise en forme (oui ça semble le plus simple  ), si d'autres ont des compétences toutes les bonnes âmes sont les bienvenus. À terme il faudrait faire un script qui fasse tout automatiquement (on donne le chemin du dump et il nous sort le code wiki prêt à être poster  ). Pamputt [Discuter] 6 janvier 2011 à 19:50 (UTC)[répondre]
Ce qui serait vraiment *cool*, se serait de faire ça collaborativement (expliquez-moi comment on n'a pas ce mot). Je propose d'agir désormais sur Wiktionnaire:Statistiques/Coordination, où je vais copier cette discussion. --GaAs 6 janvier 2011 à 20:27 (UTC)[répondre]
pywikipedia fournit ce qu'il faut pour lire les pages d'un dump l'une après l'autre, sans même avoir besoin de décompresser le dump auparavant (il faut quand même d'abord aller le récupérer et le stocker sur sa machine). Cela donne quelque chose comme :
dump = xmlreader.XmlDump("nomdudump.xml.bz2")
for entree in dump.parse():
 titre_page = entree.title
 contenu_page = entree.text
 (analyse et calcul des statistiques)
(tri des résultats)
Mais, personnellement, je laisserais tomber les tailles, qui ne veulent pas dire grand chose, pour me concentrer sur les nombres, qui me semblent plus intéressants. Et j'ajouterais un numéro de classement dans une première colonne, ce qui a aussi l'avantage de tout de suite voir combien on a de langues présentes. Lmaltier 6 janvier 2011 à 21:06 (UTC)[répondre]
Lmaltier, tu ne peux pas savoir comme ça me fait plaisir de te voir sur cette page. Alors, on fait ça collaborativement ? (ce coup-ci j'ai créé l'article) --GaAs 6 janvier 2011 à 21:13 (UTC)[répondre]
Je suis également d'accord avec la taille ; l'intérêt est limité. Si je comprends, ton script pywikipedia permet de faire la première étape (découper l'article en sous-articles de premier niveau (= par langue, etc ). Tu penses que c'est possible de faire tout le traitement avec pywikipedia ? Tu proposes de le faire ? Si c'est le cas je ne peux pas trop aider dans la mesure où je ne connais absolument rien à pywikipédia et je n'ai pas le temps de me plonger dedans. Pamputt [Discuter] 6 janvier 2011 à 21:24 (UTC)[répondre]
Mon idée c'est qu'on crée ici une section "code", et qu'on écrive le programme tous ensemble. --GaAs 6 janvier 2011 à 21:31 (UTC)[répondre]
Je n'ai pas de script qui fait ça, mais ce n'est pas trop compliqué. Le plus long me semble être la mise en forme comme tableau. Il faut prendre le programme Python de pywikipédia destiné à servir de base de création aux nouveaux robots, et y mettre les traitements qu'on veut. C'est une bonne idée de créer une page avec le programme (je conseillerais une page à part, ne contenant aucun titre ni texte, uniquement le programme), et que chacun puisse collaborer. Il faut simplement apprendre un minimum de Python (mais on peut apprendre au fur et à mesure des besoins). Lmaltier 6 janvier 2011 à 21:42 (UTC)[répondre]

Question de licence modifier

On ne peut pas copier de code de pywikipedia sur le Wiktionnaire, car la licence de pywikipedia n'est pas compatible avec la CC-BY-SA (qui s'applique dès qu'on écrit qqch ici). Par contre je ne pense pas qu'il y ait de problème pour tout nouveau code écrit par nous, surtout si on le double-licencie CC-BY-SA + GPL (j'ai dit GPL, pas GFDL). --GaAs 9 janvier 2011 à 19:04 (UTC)[répondre]

Même basic.py ? C'est dommage. Lmaltier 9 janvier 2011 à 19:14 (UTC)[répondre]
Non, je ne crois pas. Mais par contre je ne vois pas de problème à mettre ici sous CC-BY-SA + GPL du code qui appelle les librairies de pywikipedia. --GaAs 9 janvier 2011 à 19:32 (UTC)[répondre]
Bon, si tu commençais ? Écris-nous un "hello world" sur Wiktionnaire:Statistiques/python/1.py. --GaAs 9 janvier 2011 à 19:39 (UTC)[répondre]
bon si personne n'y va... je me lance ! (bon ça commence bien, tout mon code est en paquet ...)Hector 25 janvier 2011 à 00:07 (UTC)[répondre]
  Corrigé. JackPotte ($) 25 janvier 2011 à 00:34 (UTC)[répondre]
Merci ! Hector 25 janvier 2011 à 11:00 (UTC)[répondre]

Discussion sur le code modifier

J'ai très envie de collaborer avec vous, pour découvrir les fonctionnalités de pywikipedia entre autres. Ayant fait tourner le code plus haut qui recense toutes les pages du wiktionnaire, la prochaine étape est me semble t'il de trouver à quelle(s) langue(s) appartiennent ces pages. Sauf erreur, il faut reconnaître les == {{=code=}} == dans les contenu_page (en mettant de côté pour l'instant le problème des balises nowiki ) : peut-être y a t'il une méthode de pywikipedia qui fait ça ? Hector 10 janvier 2011 à 16:27 (UTC)[répondre]

Quand on épluche les fonctions comme meta:interwiki.py on constate qu'elle récupère les liens interwiki par interwikiInside = pywikibot.getLanguageLinks(Page, site). Par contre je n'ai pas trouvé si le reste est "parsé" (h1, h2, templates…) JackPotte ($) 25 janvier 2011 à 00:39 (UTC)[répondre]

Bonjour, bon il semblerait que ça ne bouge plus énormément ici. Du coup, il semblerait qu'on ne sache pas utiliser pywikipedia e façon à ce qu'il lise les pages d'un dump l'une après l'autre et que personne n'a le temps/l'envie d'apprendre. Je propose donc qu'on aille demander de l'aide sur WP. Ils doivent bien avoir des gens spécialiste de pywikipedia qui ont du temps à nous consacrer. Par contre, je ne sais pas où demander, peut-être sur le le bistro. Pamputt [Discuter] 22 janvier 2011 à 14:17 (UTC)[répondre]

Si, je donne une méthode ci-dessus. Et il existe dans pywikipedia un bot de base qui ne fait rien, à remplir. Mais il parait qu'on n'a pas le droit de le copier ici... Par ailleurs, il existe une discussion pywikipedia pour ceux qui l'ont téléchargé, mais la seule fois où j'ai essaye de mettre un message, je n'ai pas eu de réponse, donc je ne sais pas trop la façon dont ça marche. Lmaltier 22 janvier 2011 à 15:32 (UTC)[répondre]
Moi j'ai toujours obtenu une réponse pertinente rapidement sur irc://freenode.net/pywikipedia. JackPotte ($) 25 janvier 2011 à 00:43 (UTC)[répondre]

Bonjour, j’ai un petit script sous Unix qui me donne le nombre d’entrées par langue présente dans le wiktionnaire. C’est sans prétention (une quinzaine de lignes écrites entre deux cafés). Comme il ne lit pas vraiment le dump ligne à ligne, il ne peut fournir en l’état d’information de deuxième niveau (flexions et autres). Je peux l’habiller pour qu’il fournisse du code wiki mais il me faudra alors probablement de l’aide. Il m’a d’ores et déjà permis de savoir que l’on a actuellement 795 langues présentes dont 26 n’apparaissent pas dans la liste des langues du wiktionnaire. (Je m’en sers pour aller chercher le libellé de chaque langue.) J’ai bien compris que cela ne répond pas vraiment au projet mais si en attendant mieux cela intéresse quelqu’un... Unsui Discuter 9 février 2011 à 09:17 (UTC)[répondre]

Sans aller jusqu'à le publier, une simple page Wiktionnaire:Langues à préciser avec ces 26 permettrait de les ajouter collectivement. JackPotte ($) 9 février 2011 à 09:38 (UTC)[répondre]
Cool. Toute l'aide est la bienvenue et même si ça ne fait pas directement ce qui est recherché, ça peut servir de base pour qu'on l'adapte ensuite. Est ce que tu tu pourrais copier ton code ici par exemple ? Je dois par contre t'avertir que si tu copie ton code sur le Wiktionnaire, il sera automatiquement placé sous licence CC by-sa. Tu peux en plus le publié sous licence GNU GPL comme le suggère GaAs. Fais comme tu veux. Pamputt [Discuter] 9 février 2011 à 09:39 (UTC)[répondre]
J’ai créé Wiktionnaire:Langues à préciser avec les langues qui restent à définir. Pour le code je vais l’arranger un peu car il y a des manips que je fais à la main mais qui peuvent être peaufinées dans des scripts. Unsui Discuter 9 février 2011 à 10:12 (UTC)[répondre]
Après correction d’un premier bug (les codes langue > à 3 caractères étaient ignorés) je trouve maintenant 814 codes langues différents. Je dis codes langues car certains pointent vers d’autres désignant donc la même langue. Unsui Discuter 9 février 2011 à 15:16 (UTC)[répondre]
J’ai finalement modifier mon script afin qu’il produise du code wiki directement. Premier jet ici. Je peux facilement y accoler le même tableau trié par code ou par nom de langue. Unsui Discuter 10 février 2011 à 15:01 (UTC)[répondre]
C'est vraiment super ça. Est ce que tu peux donner sur la même page, le code qui permet d'obtenir ce résultat car il ne doit aps y avoir beaucoup de choses à adapter pour obtenir le même tableau que celui qui nous intéresse ? Pamputt [Discuter] 10 février 2011 à 16:19 (UTC)[répondre]
J’ai ajouté une page documentation avec le code. Mais je le rappelle, cette façon de faire ne se prête pas à l’analyse des sections de second niveau. Est-il vraiment nécessaire de disposer du nombres de flexions par langue et d’ailleurs que recouvre ce terme qui manifestement n’a pas la même signification par langue. Certaines langues n’ont pas de catégorie verbes, adjectifs et autres... Peut-être que le besoin se fait surtout sentir pour le français. Qu'en pensez-vous ? Unsui Discuter 11 février 2011 à 10:32 (UTC)[répondre]

Merci beaucoup Unsui pour ta contribution. On avance petit à petit. Concernant l'analyse des sections de second niveau je pense qu'on peut quand même adapter ton(tes) scripts. Au lieu de rechercher des chaines de la forme {{=.*=}}, il suffit de demander la recherche de chaine de la forme '{{-nom-|'. On aura ainsi tous les noms communs de toutes les langues confondues. J'ai essayé rapidement pour voir et ça a l'air de fonctionner. Aprèsil reste à extraire les codes de langues et effectuer le comptage pour chaque langue mais je n'ai pas encore eu le temps de regarder et je ne suis pas aussi à l'aise que toi en script korn shell (à vrai dire je ne connais que le bash et je ne suis pas très doué). Pamputt [Discuter] 13 février 2011 à 15:56 (UTC)[répondre]

Bien vu Pamputt. J'ai complètement zappé le fait qu’il y a le code langue dans les niveaux secondaires. Cela ne devrait pas à priori poser de problème pour les comptabiliser. Je regarde et je vous dit quoi....   Unsui Discuter 13 février 2011 à 20:13 (UTC)[répondre]
J’ai placé ici une deuxième mouture en tenant compte de la remarque de pamputt. Je note un problème pour les noms en Tsolyàni (et peut-être d’autres langues) que je vais corriger. On voit que les stats anciennes sont parfois fausses par excès en général (exemple 118632 noms indiqués en français pour juin 2009 alors qu’on en est qu’à 113868 aujourd’hui. De même pour l’afar plus facile a controler car inchangé depuis juin 2009. Unsui Discuter 14 février 2011 à 13:51 (UTC)[répondre]
Super, quel est le problème exact avec le tsolyàni ? Comment gères-tu les entrées de la forme {{-nom-|fr|num=1}} suivi d'un {{-nom-|fr|num=2}}. Tu comptes ça comme deux entrées ? Pamputt [Discuter] 14 février 2011 à 13:59 (UTC)[répondre]
Les balises {{-nom-|fr|num=n}} sont ajoutées au balises {{-nom-}} . Elles comptent donc comme autant d’entrées. S'il ne faut pas, me le dire, ce n'est pas un problème. Pour le tsolyàni, il n'y a pas de catégorie -nom- (communs) il y a noms ignobles, noms nobles, noms inclassifiables etc. Ce n'est pas un problème mais je ne l’avais pas prévu. Je pense qu’il convient des les ajouter. Je corrige et je repasse les scripts. Faut-il d’autres catégories (verbes, adjectifs ...) ? (attention ça allonge sérieusement le temps d'exécution). Unsui Discuter 14 février 2011 à 14:26 (UTC)[répondre]
Concernant les num=n, tu fais ce qu'il faut faire, ne change rien. Pour le tsolyàni, ok je comprends du coup je ne sais pas absolument pas comment traiter cela. Le plus logique serait sûrement de mettre tous les noms quelque chose comme des noms (noms ignobles, noms nobles, noms inclassifiables sont à compter comme des noms). Effectivement ça fait un cas particulier à traiter à la main. On peut poser la question à Urhixidur (d · c · b), c'est lui le spécialiste de cette langue ici. Sinon je pense aussi que le nombre d'adjectifs et de verbes serait intéressant à connaitre.
Une fois que tous les scripts auront été corrigé, il faudrait faire un script global qui appelle tous les autres (voire qui télécharge automatiquement le dump) comme ça on le lance et on revient plus tard pour avoir les résultats finaux sans lancer toutes les opérations à la main. Pamputt [Discuter] 14 février 2011 à 14:34 (UTC)[répondre]
Je ne sais pas trop ce que le créateur du tsolyáni (notez l’accent aigu et non grave ; la graphie tsolyani est aussi tout à fait acceptable en français, anglais ou toute autre langue latine), Barker, cherchait à faire avec son découpage grammatical, mais comme c’est un linguiste je ne suis certes pas compétent pour « corriger » ! À mon avis, du point de vue statistique il convient de compter {{-nom-ni-}}, {{-nom-nn-}} et {{-nom-nu-}} comme des « noms », et {{-nom-npl-}} comme des flexions. Urhixidur 15 février 2011 à 12:53 (UTC)[répondre]
  et en ligne. Unsui Discuter 16 février 2011 à 14:03 (UTC)[répondre]

Accélérer un peu le traitement modifier

En réfléchissant un peu, je propose une solution qui permettra peut-être d'accélérer un peu le traitement du dump. Ce qui prend le plus de temps c'est de lire le fichier de dump en xml. Actuellement tu le lis autant de fois qu'il y a d'informations à extraire (une fois pour les langues, une autre fois pour les noms, encore une fois pour les flexions, ...). Si on rajoute les adjectifs, les verbes, ... ça peut effectivement prendre pas mal de temps. Ce que je propose c'est de lire une seule fois le fichier de dump, de mettre tous les résultats dans un seul fichier et de faire le tri après dans ce fichier. Un peu de code sera peut être un peu plus parlant

grep -e "{{=.*=}}" -e "{{-flex-.*|.*}}" -e "{{-nom-|.*}}" Fic_wiki.txt >Fic_balise_global.temp # on récupère en un seul coup toutes les langues, tous les noms et toutes les flexions.
grep -iv comment Fic_balise_global.temp > Fic_balise_global.temp1 # supprime les commentaires qui contiennent des balises nom
grep -iv bauche Fic_balise_global.temp1 > Fic_balise_global.temp # supprime les ébauches qui contiennent des balises nom
grep -v "^:" Fic_balise_global.temp > Fic_balise_global.temp1 # supprime les commentaires type : qui contiennent des balises nom
grep -iv section Fic_balise_global.temp > Fic_balise_global.txt # supprime les lignes section qui contiennent des balises nom
...

Après ça il faut découper le fichier Fic_balise_global.txt en Fic_balise_nom.txt, Fic_balise_lang_total.txt et Fic_balise_flex.txt mais ça ne doit pas être très compliqué pour toi. Pamputt [Discuter] 15 février 2011 à 08:15 (UTC)[répondre]

Oui, j’utilise grep -e pour comptabiliser le tsolyàni. Maintenant pour les balises je n’y tiens pas car le script en l’état dure 3 minutes et même si je gagne 30 secondes ça ne me changera pas la vie (d’autant plus que le tri qu’il faudra du coup faire est assez lent). J’ai mis en ligne une nouvelle version avec verbes et adjectifs. Je n’ai pas compté les noms pluriels dans les noms communs du tsolyàni ( contrairement aux stats anciennes) car pour moi il vaudrait mieux les mettre dans les flexions. Je ferai la modif. plus tard si accord. Unsui Discuter 15 février 2011 à 09:34 (UTC)[répondre]

Mise à jour des statistiques modifier

Le dernier dump du 07 mars 2011 a été traité et mis en ligne pour l’instant toujours ici. S’il convenait de mettre en place un historique, m’indiquer la meilleure méthode. Le code est quelque peu modifié car j’ai été contraint de changer de serveur pour un beaucoup plus lent et j’ai du coup dû l’optimiser un chouïa.

Toute suggestion est la bienvenue. Unsui Discuter 9 mars 2011 à 15:38 (UTC)[répondre]

Très bien pour l'optimisation. Concernant l'évolution entre deux dumps, je pense que cela aurait en effet un intérêt. Maintenant quelle est la meilleure méthode pour arriver à cela, je me pose la question. Il est vrai qu'un tableur présente l'intérêt de simplifier la chose (on lui fait manger l'ancien fichier, puis le nouveau et on fait une différence entre les colonnes qui vont bien). Le problème c'est que ça casse l'automatisme de la chose. L'idée serait en effet de donner le dump à manger au code, on appuie sur ok et hop il nous sort du code wiki qu'on a plus qu'à recopier. Je pense que ça doit être possible de faire ça en bash, ksh ou autre mais je ne sais pas trop comment faire ça. Pamputt [Discuter] 9 mars 2011 à 16:11 (UTC)[répondre]
J’ai ajouté l’évolution du nombre de pages par rapport au précédent traitement. Unsui Discuter 10 mars 2011 à 15:18 (UTC)[répondre]


Bonjour, il semblerait que Jona (d · c · b) fasse aussi des stats du même genre. Il a également fournit sur sa page utilisateur, les scripts qu'il utilise pour cela. Si ça peut en inspirer certains. Pamputt [Discuter] 13 mars 2011 à 13:40 (UTC)[répondre]

La méthode utilisée est bien plus orthodoxe que la mienne et doit donc être probablement plus juste, les différences entre les deux restant toutefois très minimes. Il faudrait par contre numéroter les langues, peut-être ajouter le code langue mais surtout tenir compte de la trentaine de langues manquantes (par ex: alsacien, sibérien, tarantino, gaulois, bo, slovio, ombrien, tsolyáni, etc.). Unsui Discuter 15 mars 2011 à 10:04 (UTC)[répondre]
Bonjour, Je viens de rajouter la numérotation des langues. Je dois encore régler le code pour les langues manquantes, je pensais qu'une langue se composait de deux ou trois lettres mais ça ne semble pas être le cas. Il y a aussi que je n'affiche la langue que si elle a un des champs "type" non-nul. Je vais voir comment améliorer cela. Jona 15 mars 2011 à 21:48 (UTC)[répondre]
Tu as une liste des codes langues à jour ici. Tu peux aussi comparer avec ce que je trouve avec mon code qui part du même dump que le tien. Pour le tsolyáni voir la conversation plus haut. Moi je l’ai traité à part. Mais bon c’est un détail à mon avis. Autre détail (mais ça reste très perso) si tu pouvais mettre des couleurs moins flashy que celles du modèle de Laurent Bouvier... Bon courage et merci. Unsui Discuter 15 mars 2011 à 22:17 (UTC)[répondre]
J'ai encore refait la liste, il me manque encore 2 langues par rapport à toi, je vais encore regarder ce qui cloche ! Jona 17 mars 2011 à 20:37 (UTC)[répondre]
(Remarque en partie pour moi-même) Il y a un problème avec le mandan, le kiowa et le laal. Il y a aussi une différence au niveau de l'indo-européen. Le problème est un peu toujours le même, c-à-d, le filtre de l'espace principal. Pour ne pas s'encombre avec les pages "Annexes:Page pas utile", "Discussion:chien"; tout ça est filtré au début. Malheureusement, dans certaines langues exotiques, on trouve "yəw láà:l". A voir, donc. Jona 17 mars 2011 à 22:04 (UTC)[répondre]
Je suis bien d’accord avec toi : Tout est une question de filtres et les miens ne sont toujours pas parfaits Il y a en effet des balises langues un peu partout où il ne faudrait pas (discussions, annexes, notes, ébauches, etc.). Aussi ne te fie pas totalement à ce que je trouve de mon côté.. En tout cas, ça me semble d’ores et déjà très bien. Unsui Discuter 18 mars 2011 à 09:15 (UTC)[répondre]
Voilà, maintenant, j'ai fait une liste manuel de ce qui doit être filtré. Il y a "Wiktionnaire", "MediaWiki", "Annexe", "Modèle", "Fichier", "Aide", "Thésaurus", "Catégorie", "Projet", "Portail", "Transwiki", "WT". Je crois que c'est bon pour la liste maintenant. Jona 20 mars 2011 à 13:56 (UTC)[répondre]
J'ai sauté le pas, j'ai change le tableau de la page ! Jona 20 mars 2011 à 16:47 (UTC)[répondre]