Tous les articles qui parlent de bidouille

Au boulot !

![Un halo, que moi j'appelle «arc-en-neige»](/media/2021/arc-en-neige.jpg)

Après quelques mois de trop passés à essayer à tout prix de boucler un article pour expliquer tous mes déboires dans mes tentatives de l'année passée de rafraîchir un peu mon matériel informatique et les logiciels que j'utilise, je me dis qu'il est grand temps de faire une pause et de parler un peu d'autre chose en attendant.

Surtout que, ce début d'année est plein de promesses pour moi. Je suis à la fin de ma [convalescence](/articles/Compte%20à%20rebours.html), j'ai reçu plein d'intéractions motivantes autour de [hablo](https://git.marvid.fr/Tissevert/hablo) et je m'apprête d'ici quelques jours à entamer la thèse en Traitement Automatique des Langues dont je rêve depuis si longtemps !!

…dans les arbres

Dans l'[épisode précédent](/articles/On%20va%20à%20la%20pêche.html), nous avons vu que tester chaque case de la «rivière aux Barpaus» une fois seulement avant d'aller pêcher sur la suivante augmentait les probabilités de rencontrer un Barpau pour un nombre de pêche donné, et donc que, statistiquement, cette stratégie de pêche diminuait le nombre de pêches à tenter avant de trouver une «case à Barpau» (pour reprendre les notations de l'article précédent, `C⁺`, sérieusement allez le lire si vous ne l'avez pas déjà lu, sinon celui-ci n'a aucun intérêt).

La méthode que nous avions suivie reposait sur une hypothèse, tout à fait fondée initialement mais de plus en plus discutable et même carrément fausse au-delà de 394 cases testées dans la rivière, qui consistait à considérer une distribution uniforme de probabilité pour les cases `C⁺` (c.f. le début du § «Stratégie, stratégie»). Mais comme nous l'avions vu, les tirages ne sont pas indépendants et `P⁺` évolue au fil du résultat de nos tirages, puisque par exemple si nous observons 6 cases distinctes avec des Barpaus, alors il n'est pas besoin de poursuivre l'expérience : la probabilité que les autres cases contiennent des Barpaus sachant cela est nulle (sauf blague de l'équipe de développement du jeu, mais si l'on accepte la prémice «il n'y a que 6 cases contenant des Barpaus dans cette rivière» alors elle est bien nulle). Et si on regardait un peu plus en détail comment cette fonction de probabilité évolue au fil des tirages et de leurs résultats ?

## Une méthode

On va à la pêche…

Pokémon est un jeu formidable. En plus de fuguer de chez ses parents à tout juste 10 ans et demie pour capturer des animaux sauvages et organiser des sortes de combats de chiens, on y fait des tas de choses : on y fait du vélo, on cultive des plantes et on pêche. Soyez donc sans craintes, car c'est bien de pêche virtuelle dans ce jeu dont il s'agit. Je ne vous invite en aucun cas à rompre le confinement pour aller vous asseoir au bord d'une rivière et aucun poisson réel n'a été blessé ni même contrarié dans ses velléité de rester peinard au frais et au fond de l'eau dans la préparation de cet article.

Les gens qui ont créé pokémons aiement les farces et les histoires morales et c'est la raison pour laquelle existe Magicarpe. Magicarpe est un gros poisson sans capacité d'attaque aucune, ce qui le rend extrêmement dur à faire évoluer. Tout dresseur·se raisonnable l'abandonnerait au bout de quelques niveaux en voyant qu'il n'a toujours appris aucune compétence utile et bim ! Sans prévenir, niveau 20, le voilà qui se transforme subitement en un dragon, monstre de rage et de destruction. Comme quoi faut se méfier des faux-calmes.

Ça, c'était dans la toute première génération de Pokémon. Au cas où ça ne suffirait pas, dans la troisième génération on en remet une couche avec un deuxième couple de pokémon «relou-inutile» / «méga-balèze & en plus trop beau» : j'ai nommé Barpau et Milobellus. Mais, histoire de corser un peu les choses, il est en plus super dur de trouver un Barpau. Il ne vit que dans une seule rivière, où il a une chance assez faible d'apparaître (taux de rencontre de 15% — quand un pokémon est rencontré, le jeu tire au sort de quelle espèce il va s'agir parmi les quelques espèces présentes dans une zone donnée, il n'y a que 15% de chances que ce soit un Barpau), **sur 6 cases seulement** dans toute la rivière (qui fait quand même au bas mot 400 cases). On ne vous dit pas lesquelles, ça va sans dire.

La source du Mal

![Les deux serpents du logo python invitent Eve à manger la pomme d'Apple](/media/2020/python+mac.png)

La semaine avait plutôt bien commencé. Bien sûr, tout le retard accumulé sur le projet n'allait pas disparaître comme ça mais, quand même, pour une fois les choses donnaient l'impression d'avancer. Pour une fois, l'univers entier semblait avoir consenti à un léger répit pour redonner de l'espoir à la petite équipe du labo. Pour la première fois depuis quelque semaines, je faisais autre chose que harceler des gens par courriel pour obtenir des détails sur les solutions magiques qu'ils nous avaient fait miroiter au moment de déposer des demandes de financement pour le projet, découvrir et corriger une n<sup>ième</sup> incohérence dans le corpus voire une erreur d'encodage dramatique dans les fichier ou faire le bilan sur tout ce qui n'allait pas dans les tâches déjà entamées et parcourir avec crainte la longue liste de celles restantes. J'écrivais du code nécessaire pour le projet, j'entraînais le programme de reconnaissance de structure de texte par apprentissage automatique.

C'est le moment qu'a choisi Mon Chercheur pour débarquer dans le bureau. Il avait besoin de comparer la classification des articles de l'Encyclopédie par domaine de connaissance selon deux sources qui publiaient le texte. Il me montre rapidement comment il s'y prend : il utilise les pages web de chaque projet pour dresser les listes par domaine et essaye de copier-coller les résultats dans un fichier texte pour pouvoir ensuite effectuer les comparaisons. Ça marchait franchement pas si mal jusqu'à ce qu'il tombe sur sa majesté la Botanique, qui est venue titiller son sens de la ténacité avec sa cour de 4000 articles. Clairement, la méthode crapi-crapaud que j'te copie-colle le texte des pages web, ça allait bien deux minutes.

Vite fait bien fait

## Un peu de contexte

C'était lundi. Nous étions en train de finir d'extraire une liste de noms propres pour améliorer l'[annotation](/articles/Le%20tronçonneur%20des%20Lilas.html) de l'[Encyclopédie](https://fr.wikisource.org/wiki/Encyclop%C3%A9die,_ou_Dictionnaire_raisonn%C3%A9_des_sciences,_des_arts_et_des_m%C3%A9tiers) (celle qui n'a pas besoin d'autre titre, celle qui a fixé les règles modernes du genre, celle de Diderot & d'Alembert).

Notre annotateur n'est pas mauvais, il a été développé spécialement pour traiter du français ancien et supporte à merveille les «étoit» et autres «enfans». Par contre, il est super mauvais sur les noms propres. Il comprend qu'il s'agit de noms, mais il n'ose pas affirmer qu'ils sont propres, même en voyant leur majuscule initiale. Ce n'est pas un signe de rebellion, probablement n'y en avait-il pas assez dans le corpus annoté manuellement qui a permis de l'entraîner; toujours est-il que pour lui «Pline», «Garonne» et «Théophrone» sont des noms communs. «Sozomène» ? Un nom commun aussi.

Hablo !

![L'icône du projet Hablo, un perroquet gris du gabon stylisé dans un carré qui regarde vers le haut](/media/2019/04/22/hablo.svg)

Bon, ça y est, les dernières semaines furent les plus dures mais j'ai enfin releasé la première version de [hablo](https://git.marvid.fr/Tissevert/hablo) mon générateur de blog !

Je me sens vraiment soulagée, ça me pesait beaucoup ces derniers jours. J'ai d'abord quasi-terminé le code mais je n'avais [pas écrit](/articles/Saturday%20afternoon%20unexpected%20fun%20adventure.html) la documentation. Premier ascenseur émotionnel, aller, t'as pas fini, repars écrire ta doc ! J'ai mis quelques semaines pour peaufiner ça, des gens super sympas m'ont relue (merci encore, [@eliotberriot](https://mastodon.eliotberriot.com/@eliotberriot) !) et là, vraiment certaine qu'il n'y avait plus rien à faire, je me suis retrouvée figée, incapable d'appuyer sur le bouton pour fusionner les branches et ajouter la documentation sur ma branche *master*.

Saturday afternoon unexpected fun adventure

Bon, je reconnais, j'ai pas été méga-sérieuse. J'ai essayé d'aller à fond sur le développement de [hablo](https://git.marvid.fr/Tissevert/hablo) pour qu'il soit utilisable rapidement et pouvoir ouvrir (enfin !) ce blog. Et de fait j'ai un truc qui marche. Mais. Mais j'ai pas écrit la doc au fur et à mesure. Oui, je m'en mords les doigts, oui je bats ma coulpe. Pas la peine d'en rajouter en me conspuant.

![Une jeune fille qui pleure son oiseau mort](/media/2019/03/jfqpsom.png)

J'ai donc entamé la fin de semaine avec l'espoir déraisonnable que j'allais pouvoir écrire ma doc vite-fait, faire la première release et écrire un joli article là-dessus pour expliquer un peu comment c'était foutu, ce qu'on pouvait faire avec, vous donner envie de l'utiliser, même, pourquoi pas ? Las ! C'était sans compter sans le monde merveilleux de la gestion de version et de l'intégration continue.