├── README.md ├── docs ├── Presentation_emilien.pdf ├── Presentation_matthias.pdf ├── Seance4_Maya_AndersonGonzalez_Celya_GrusonDaniel.pdf ├── declinerso.html ├── presentation.pdf ├── presentation_margherita.pptx ├── resume_seance1.md ├── resume_seance2.md ├── resume_seance3.md ├── resume_seance4.md ├── seance1_Tristan_Salord.pdf ├── seance2_Mariannig_Le_Bechec.pdf └── seance3_Lucie_Loubere.pdf └── img ├── 20102022.jpg ├── coco241122.jpg ├── cocopyshs-cgd.jpeg ├── cocopyshs-mb.jpeg ├── cocopyshs.png └── cocopyshs3.jpeg /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Programme 2022-2023 3 | 4 | [Les enregistrements des séances sont disponibles sur Canal U](https://www.canal-u.tv/chaines/callisto/les-coulisses-du-code-python-pour-les-shs-cocopyshs) (Séance 3, 4 et 5 en cours de traitement). 5 | 6 | ## Séance 1 - 20/10/2022 7 | 8 | Présentation de *Émilien Schultz* (médialab), *Mathieu Morey* (Datactivist) et *Antoine Blanchard* (Datactivist), **Des notebooks Jupyter pour découvrir les usages de Python pour les SHS - pourquoi ? comment ? pour quel résultat ?** 9 | 10 | Dans cette présentation, Emilien revient sur le processus de développement conjoint entre Huma-Num Lab (Stéphane Pouyllau et Nicolas Sauret) et Datactivist (Mathieu Morey et Antoine Blanchard) de démonstrateurs de l'utilisation du *machine learning* pour les SHS sous la forme de Notebooks Jupyter écrits en Python. Ce projet qui a donné naissance à 5 Notebooks pédagogiques et exécutables vise à poser la question des outils actuellement utilisés par les communautés scientifiques en SHS, et les supports nécessaires à leur transmission. Rendus disponibles sur la [plateforme IO](https://gitlab.huma-num.fr/io) hébergée sur la forge d'Huma-Num, ces démonstrateurs ont pour objectif d'être utilisés comme point de départ pour expérimenter, enseigner ou développer de nouvelles solutions. 11 | 12 | [Les slides de la présentation](https://github.com/pyshs/cocopyshs/blob/main/docs/Presentation_emilien.pdf) 13 | 14 | ![CocoPySHS](https://github.com/pyshs/cocopyshs/blob/main/img/20102022.jpg) 15 | 16 | 17 | ## Séance 2 - 24/11/2022 18 | 19 | Présentation de *Matthias Bussonnier* (dev. open source & open science à QuanSight), **Recommandations pour la programmation scientifique par un contributeur open source à la science ouverte** 20 | 21 | Dans cette présentation, Matthias revient sur son expérience d'abord de chercheur en biophysique, puis comme contributeur à l'écosystème *open source* de la programmation scientifique en Python (notamment dans le projet Jupyter). En revenant sur la particularité de ce qu'est "programmer" pour un scientifique, il souligne l'importance de l'automatisation et de la formalisation du traitement des données numériques, qui participe en retour à améliorer la qualité du travail de recherche. Il revient aussi sur la genèse et la philosophie des notebooks Jupyter, tout en insistant que les bonnes pratiques de la programmation scientifique en Python dépassent la question du langage lui-même et concernent un ensemble d'outils, notamment la gestion des versions. Cette présentation est une introduction au lien entre science ouverte et *open source*. 22 | 23 | [Les slides de la présentation](https://github.com/pyshs/cocopyshs/blob/main/docs/Presentation_matthias.pdf) 24 | 25 | ![CocoPySHS](https://github.com/pyshs/cocopyshs/blob/main/img/coco241122.jpg) 26 | 27 | 28 | ## Séance 3 - 19/01/2023 29 | 30 | Présentation de *Margherita Parigini* (Université de Genève), **Mettre en oeuvre une stratégie de traitement automatique de la langue en littérature : fine tuning d'un modèle BERT pour la détection du doute dans les écrits de Italo Calvino** 31 | 32 | Dans cette présentation, Margherita est revenue sur le processus la conduisant à se saisir les outils de traitement automatique de la langue, et plus particulièrement les modèles BERT avec SpaCy pour réaliser de la détection d'entités nommées, au service de sa réflexion inscrite en littérature. Réalisant une thèse sur l'auteur italien Italo Calvino, elle a eu l'occasion de constituer un corpus annoté de passages caractéristiques du style de l'auteur. Souhaitant explorer une autre stratégie d'analyse, elle s'est formée à la programmation scientifique en Python et a utilisé ce corpus pour entraîner un modèle de détection de ces passages. Cela lui a permis d'interroger différemment les corpus étudiés, d'étendre sa réflexion à d'autres corpus, et de mettre en discussion la nature de ces passages au croisement entre interprétation et formalisation. Dans sa présentation, elle insiste aussi sur les difficultés qu'elle a rencontré mais aussi sur l'importance du traitement des données antérieur à l'entraînement du modèle. Cette expérience lui a aussi permis d'initier de nouvelles collaborations, [et à publier son analyse dans une conférence d'humanités numériques](https://ceur-ws.org/Vol-3290/long_paper399.pdf). 33 | 34 | [Les slides de la présentation](https://github.com/pyshs/cocopyshs/blob/main/docs/presentation_margherita.pptx) 35 | 36 | ![CocoPySHS](https://github.com/pyshs/cocopyshs/blob/main/img/cocopyshs3.jpeg) 37 | 38 | ## Séance 4 - 4/05/2023 39 | 40 | Présentation de *Max Béligné* (Université Lyon 2), **Répondre au défi de la reproductibilité d'une recherche en humanité numérique par la création d'une interface Web** 41 | 42 | Dans cette présentation, Max Béligné revient dans le processus initié pendant sa thèse en épistémologie de la géographie de construire une interface web. En effet, ses analyses portaient sur des données qu'il ne pouvait directement rendre disponible en raison d'une convention signée. Pour permettre cette mise en publication mais aussi faciliter ses propres traitements, il a développé une interface avec le processus Django. Dans cette communication, il revient sur les différentes étapes de cette expérience, son apprentissage progressif des bons réflexes, et les enseignements qu'il en tire pour ses futurs travaux. Cette interface est devenue interdépendante de son travail de thèse, ce qui souligne la place de l'instrumentation numérique en sciences humaines et sociales. 43 | 44 | ![CocoPySHS](https://github.com/pyshs/cocopyshs/blob/main/img/cocopyshs-mb.jpeg) 45 | 46 | ## Séance 5 - 01/06/2023 47 | 48 | Présentation de *Célya Gruson-Daniel* (Inno3), *Claire Lemercier* (Sciences Po) et *Emilien Schultz* (Medialab), **La traduction de R vers Python : enjeux pratiques et épistémiques** 49 | 50 | Dans cette présentation à trois voix par Célya Gruson-Daniel (Inno3, COSTECH/UTC), Claire Lemercier (CNRS, CSO/SciencesPo) et Emilien Schultz (Medialab/SciencesPo), les intervenantes reviennent sur le traitement des données d'un questionnaire conduit dans le projet [*Décliner la science ouverte*](https://declinerso.pubpub.org/). Cette analyse a d'abord été conduite avec un tableur et les outils de R, puis dans un second temps une démarche de reproductibilité a été initiée avec Python. Ce cheminement pose la question de la stabilisation progressive des résultats et les conditions de la reproductibilité, notamment dans la mesure où les bibliothèques R et Python diffèrent. Cela pose en retour des questions épistémologiques sur l'instrumentation numérique utilisée dans nos recherches. 51 | 52 | [Les slides de la présentation](https://pad.inno3.eu/p/Z-asMAOdQ#/) 53 | 54 | ![CocoPySHS](https://github.com/pyshs/cocopyshs/blob/main/img/cocopyshs-cgd.jpeg) 55 | 56 | 57 | # Session 2021-2022 58 | 59 | 60 | ![CocoPySHS](https://github.com/pyshs/cocopyshs/blob/main/img/cocopyshs.png) 61 | 62 | ## Séance 4 - 09/06/2022 63 | 64 | Présentation de *Maya Anderson-Gonzalez* et *Célya Gruson-Daniel* de Inno3 **Python en code et no-code pour la cartgographie de réseaux** 65 | 66 | > Pour cette quatrième séance, Maya et Célya font un retour d'expérience de deux projets menés au sein du cabinet de conseil en innovation ouverte Inno3 sur la cartographie de réseaux. La mise en comparaison de ces deux projets, l'un recourrant à un script écrit en Python pour la collecte des données, l'autre par un outil déjà existant, permet de réflechir sur de nombreuses dimensions : le choix d'une solution impliquant de la programmation vs. un logiciel déjà existant ; l'intégration d'une expertise extérieure dans une équipe pour développer le morceau de code nécessaire pour la collecte et la mise en forme des données ; les stratégies différentes de documentation des étapes de traitement des données. 67 | 68 | - [Le résumé de l'intervention](https://github.com/pyshs/cocopyshs/blob/main/docs/resume_seance4.md) 69 | - [Les slides de la présentation de l'enquête](https://github.com/pyshs/cocopyshs/blob/main/docs/Seance4_Maya_AndersonGonzalez_Celya_GrusonDaniel.pdf) 70 | 71 | ## Séance 3 - 12/05/2022 72 | 73 | Présentation de *Lucie Loubère* **Utilisation de scripts Python en amont d'Iramuteq pour l'analyse textuelle** 74 | 75 | > Pour cette troisième séance, Lucie montre ses pratiques peu visibles de **transformation des données**, en amont de l'usage d'un logiciel spécialisé (dans ce cas, Iramuteq). La programmation en langage Python permet d'avoir une forte flexibilité pour collecter les données et constituer différents corpus textuels qui respectent les formats attendus par le logiciel. 76 | 77 | - [Le résumé de l'intervention](https://github.com/pyshs/cocopyshs/blob/main/docs/resume_seance3.md) 78 | - [Les slides de la présentation de l'enquête](https://github.com/pyshs/cocopyshs/blob/main/docs/seance3_Lucie_Loubere.pdf) 79 | 80 | 81 | ## Séance 2 - 07/04/2022 82 | 83 | Présentation de *Mariannig Le Béchec* et *Emilien Schultz* **Reproductibilité de l'enquête SOSP - State of Open Science Practices in France** 84 | 85 | > Pour cette deuxième séance, Mariannig est revenue sur l'enquête collective qu'elle a coordonné sur les pratiques de science ouverte des chercheurs et de leurs usages d'outils numériques, dont les données ont été rendues disponibles. Puis Emilien a présenté le *Notebook Jupyter* de reproduction des analyses qu'ils ont construit sur la base de ces données pour approfondir certains résultats avec les outils disponibles de l'écosystème Python. Il a insisté sur les forces et les faiblesses (actuelles) des outils pour le traitement statistique en sciences sociales, et les tours de main qu'il utilise. 86 | 87 | - [Le résumé de l'intervention](https://github.com/pyshs/cocopyshs/blob/main/docs/resume_seance2.md) 88 | - [Les slides de la présentation de l'enquête](https://github.com/pyshs/cocopyshs/blob/main/docs/seance2_Mariannig_Le_Bechec.pdf) 89 | - [Le dépôt des données de la réanalyse](https://github.com/emilienschultz/sosppyshs) 90 | 91 | ## Séance 1 - 17/03/2022 92 | 93 | Présentation de *Tristan Salord* **Pois-chiche et "Franken-Code" - Verrouillage technologique et alimentation durable: le cas des légumineuses** 94 | 95 | > Pour cette première séance, Tristan est revenu sur la stratégie qu'il a développé pour rendre *vivantes* des données d'ingrédients afin d'éclairer l'usage des légumineuses dans l'alimentation. Pour cela, il a rendu visible l'ensemble des opérations nécessaires pour passer de l'idée générale à sa décomposition en problèmes pouvant donner lieu à automatisation. Il a aussi partagé des éclairages et des expériences de sa pratique. 96 | 97 | - [Les slides de la présentation](https://github.com/pyshs/cocopyshs/blob/main/docs/seance1_Tristan_Salord.pdf) 98 | - [Le résumé de l'intervention](https://github.com/pyshs/cocopyshs/blob/main/docs/resume_seance1.md) 99 | -------------------------------------------------------------------------------- /docs/Presentation_emilien.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/Presentation_emilien.pdf -------------------------------------------------------------------------------- /docs/Presentation_matthias.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/Presentation_matthias.pdf -------------------------------------------------------------------------------- /docs/Seance4_Maya_AndersonGonzalez_Celya_GrusonDaniel.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/Seance4_Maya_AndersonGonzalez_Celya_GrusonDaniel.pdf -------------------------------------------------------------------------------- /docs/presentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/presentation.pdf -------------------------------------------------------------------------------- /docs/presentation_margherita.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/presentation_margherita.pptx -------------------------------------------------------------------------------- /docs/resume_seance1.md: -------------------------------------------------------------------------------- 1 | # #CoCoPySHS - Séance 1 - 17/03/2022 2 | 3 | ## Résumé de la séance 4 | 5 | Cette première séance organisée par l'URFIST de Lyon ouvre un cycle de présentations et d'échange autour de la programmation scientifique en Python en SHS. Son ambition est d'ouvrir un moment collectif dans des pratiques encore très dispersées en se concentrant sur Python (mais les praticiens de R, et d'autres langages, sont les bienvenus car de nombreuses questions sont plus générales). 6 | 7 | Trois publics en particulier sont attendus, et ont été au rendez-vous (une quarantaine de participants) : 1/ des praticiens pour parler de leur pratique 2/ des apprenants qui ont des questions sur les bonnes approches 3/ des curieux.ses voulant voir et échanger. Le point clé est cependant : en SHS, nous ne sommes pas des développeurs ni des informaticiens, et nous devons tenir ensemble la problématisation et l'aspect technique. 8 | 9 | C'est ce que fait **Tristan Salord**. Il se définit avant tout comme un socio-anthropologue, et pas comme un informaticien. Il est chercheur en humanité digitale : la problématique est première, et le traitement des données est là pour y répondre. Par conséquent, peut-être que son code est "une monstruosité pour un développeur", mais elle permet de rendre utilisable des données : dans ce cas, des listes d'ingrédients. 10 | 11 | En effet, coder : c'est réaliser des traductions, transporter des objets d'un univers à d'autre, en les dotant d'agentivité. Lui, il est venu à la programmation après une formation en sociologie par la petite porte du code : les bases de données, et SQL. Au gré des projets, il a été amené à automatiser certains traitements. Comme il le dit, *derrière la nécessité de coder, il y a toujours un calcul cout/bénéfice à faire : si ce que je peux faire je peux le faire manuellement, il n'y a pas besoin de coder*. 12 | 13 | Son travail en cours depuis quelques années sur les légumineuses s'inscrit dans un projet sur le changement des pratiques alimentaires. Il existe en effet des blocages technologiques autour des connaissances sur les légumineuses, et finalement peu de connaissances scientifiques sur la question. L'idée est d'apprendre des grosses bases de données alimentaires. Or, il n'existait pas d'outils de traitement de ces bases de données et d'ingrédients. 14 | 15 | Ces données sont complexes et nécessitent un traitement; Ainsi, des aliments sont souvent marqués sous la forme de noms d'usages (une lentille en France n'est pas une lentille en Inde). Il est nécessaire de s'appuyer sur des savoirs spécifiques pour comprendre les listes d'ingrédients (des ensembles de mots). Par ailleurs, la taille de ces données limite un traitement humain, avec plus de 300000 entrées. 16 | 17 | La tache clé a donc été d'automatiser le processus de lecture et de repérage que ferait un cerveau humain et de stocker ça dans une structure de données (un dictionnaire d'ingrédients). Concrètement, cela signifie développer un *parseur*. Pour cela, Tristan a décomposé les problèmes rencontrés à partir de la tache humaine, et progressivement constitué son workflow. Cela nécessite de trouver les astuces pour réduire le travail à faire : par exemple découper à la virgule plutôt que de repérer tous les patterns. Une première étape est alors de construire la réflexion sous la forme d'un pseudo-code en langage très descriptif, écrit à la main, puis de construire les briques de bases en Python. C'est un travail itératif, avec à chaque fois le besoin de tester les morceaux de code. 18 | 19 | Pourquoi il a choisi Python : parce qu'il est proche du langage naturel, de la langue et donc du pseudo code. Le fait qu'il s'agisse d'un langage non typé aide. Son style est davantage procédural que orienté objet. Pour autant, il n'est pas exclusif, par exemple il se forme actuellement à Julia. Travaillant dans un IDE (Microsoft Visual Studio), il a développé avec le temps des bonnes pratiques de notation des fichiers, d'un usage extensif des commentaires pour documenter le code et de limiter la taille de ses scripts. 20 | 21 | Il est convaincu que le mieux est l'ennemi du bien : il faut garder la possibilité de l'imperfection/d'une petite erreur plutôt que de s'épuiser à un code parfait. Un enjeu dans le traitement de données est de trouver la structure adaptée pour conserver au mieux l'information initiale. Mais celle-ci est pas donnée d'avance, et provient d'échanges progressifs avec des experts qui conduit à faire évoluer la structure de donnés. 22 | 23 | Une fois l'outil développé au gré des traitements, que faire du code ? Tristan le met à disposition, mais la question demeure des bonnes pratiques de diffusion. 24 | 25 | Son avis sur le machine learning ? S'il est possible de l'éviter, autant l'éviter. 26 | 27 | Et puis, finalement, **pourquoi faire tout ça ?** Cela permet d'ouvrir les boites noires de la production alimentaire, qui seraient inaccessibles sinon. Et de traiter des volumes impossibles à traiter à la main. Ce parseur est alors essentiel dans la production de résultats : réseaux de liens, évolution dans le temps, statistiques descriptives. Des publications sont en cours tant sur les résultats que sur le jeu de données produit. 28 | 29 | Après la présentation, les questions ont balayé les problématiques de structure des données, du temps gagné à l'automatisation, des conditions de publication du script, de la décision entre apprendre à programmer soi-même ou déléguer à un spécialiste, ou encore des ressources disponibles. La question reste ouverte de la manière de faciliter les échanges : Twitter avec un hashtag #cocopyshs ? Un serveur Discord ? Ouvrir un mattermost avec Hum-Num ? Réflexion à suivre. 30 | 31 | Quelques remarques remarquables : 32 | 33 | - "pour faire une analogie simple, déléguer complètement la programmation c'est comme être un anthropologue qui dépend d'un traducteur" 34 | - "perso je trouve qu'apprendre la programmation soi-même permet de mieux concevoir le panel des possibilités de techniques pour une recherche" 35 | - "Beaucoup d'apriori aussi peut être sur le code en SHS..." 36 | -------------------------------------------------------------------------------- /docs/resume_seance2.md: -------------------------------------------------------------------------------- 1 | # #CoCoPySHS - Séance 2 - 08/04/2022 2 | 3 | ## Résumé de la séance 4 | 5 | Cette deuxième séance organisée par l'URFIST de Lyon propose de plonger directement dans les problématiques au coeur de nos interrogations : l'usage des outils numériques par les chercheurs et la reproductibilité des résultats d'une enquête. 6 | 7 | Le duo Mariannig Le Béchec et Emilien Schultz présentent justement cette dynamique de reproduction de données d'une enquête menée en 2021 **Reproductibilité de l'enquête SOSP - State of Open Science Practices in France** (Mariannig Le Béchec - Aline Bouchard - Philippe Charrier - Claire Denecker - Gabriel Gallezot - Stéphanie Rennes) dont le rapport est paru il y a peu https://hal.archives-ouvertes.fr/hal-03545512v1 8 | 9 | La démarche de l'équipe investigatrice était justement de favoriser les bonnes pratiques de la recherche mais dans les contraintes d'une activité prises par les impératifs matériels et organisationnels. Ainsi, s'ils ont utilisé un logiciel propriétaire pour la collecte et l'analyse des données (Sphinx, déployé par la TGIR Huma-Num qui avait l'avantage de permettre la mise en ligne du questionnaire pour la passation et le traitement des données), ils ont rapidement ouvert les données en déposant le jeu de données et de méta-données sur *Zenodo* : https://zenodo.org/record/5827206. 10 | 11 | De là, nous avons tout pour nous saisir de cette enquête, vérifier certains traitements et aller plus loin si besoin. Cela permet de mettre à l'épreuve les outils existant en Python. 12 | 13 | Mariannig présente la genèse et le périmètre de l'enquête, en insistant sur quelques résultats marquants concernant les pratiques des chercheurs. 14 | 15 | Emilien présente alors sa pratique de traitement de données en sociologie qui utilise uniquement les outils de la programmation scientifique en Python : les Notebooks Jupyter, et les bibliothèques principales (Pandas, Matplotlib, etc.). 16 | 17 | Sans rentrer dans le détail fin du code, disponible dans un carnet Jupyter exécutable (https://github.com/emilienschultz/sosppyshs), il insiste sur les différentes étapes : le chargement, le nettoyage, puis la reproduction de certains résultats, notamment une visusalisation du rapport pour en modifier certains aspects, et enfin l'exploration de pistes ouvertes par le rapport mais qui n'ont pas été détaillées. 18 | 19 | L'intérêt de travailler dans un Notebook Jupyter est de faciliter cette interaction avec les données tout en gardant une trace de l'ensemble des opérations, qui peuvent ensuite être mises en pause sans perdre le travail, ou partagée à des collègues. L'association entre les bibliothèques structurantes de Python scientifique (Pandas, Matplotlib, Plotly, etc.) couplé avec des bibliothèques plus spécifiques (PySHS, Prince), permettent de couvrir l'ensemble des traitements statistiques "habituels", tout en formalisant les étapes. 20 | 21 | Bien entendu, le coût d'entrée existe et il n'est pas évident de trouver immédiatement ces opérations et la meilleure manière de le faire. Cet exemple a justement pour objectif de donner un cas réutilisable d'étapes qui peuvent ensuite être traduites pour d'autres enquêtes. 22 | 23 | Une rapide démonstration a ensuite été faite sur la possibilité de passer de l'étape de prototypage dans un notebook avec une application grâce à Streamlite. Python permet justement de lier les pratiques d'exploration avec le passage en production. 24 | 25 | Une rapide synthèse pose la question des forces et des faiblesses de Python : 26 | 27 | Forces 28 | 29 | - Formaliser la démarche 30 | - Support Jupyter ++ pour le travail collaboratif et incrémental 31 | - Code réexcutable facile à reprendre et à corriger 32 | - Des outils très puissants qui permettent la souplesse 33 | - Sortir de la dépendance d'un logiciel (Sphinx initialement) 34 | - De nombreuses ressources disponibles sur internet 35 | 36 | Faiblesses 37 | 38 | - Manque d'exemple -> beaucoup de petites recherches sur internet pour arriver au résultat final 39 | - Cout d'entrée pour son propre code : découvrir les bibliothèques, etc. 40 | - Manque de bibliothèques SHS & de tutoriaux spécifiques 41 | - Un travail "caché" : chercher les bonnes manières de faire, etc. difficile à montrer + beaucoup de temps à passer à retrouver les bonnes options 42 | - Une ergonomie qui peut être moindre qu'un logiciel dédié 43 | 44 | 45 | Et puis demeure la dernière question : Python ou R ? Ce sont effecivement deux solutions possibles, et nous ne prétendons pas terminer ce débat :) 46 | 47 | La discussion qui a suivi la présentation a justement porté sur le coût d'entrée, l'importance d'avoir des exemples pour s'y mettre, et sur l'intérêt évident de construire des documents exécutables pour la reproductibilité des résultats. 48 | 49 | Affaire à suivre ... -------------------------------------------------------------------------------- /docs/resume_seance3.md: -------------------------------------------------------------------------------- 1 | # #CoCoPySHS - Séance 3 - 12/05/2022 2 | 3 | ## Résumé de la séance 4 | 5 | Cette troisième séance porte l'éclairage sur les pratiques peu visibles de **transformation des données**, en amont de l'usage d'un logiciel spécialisé (dans ce cas, Iramuteq). Ici, "le résultat de mon code est une porte d'entrée et pas une conclusion". 6 | 7 | [Lucie Loubère](https://www.lerass.com/author/lloubere/) est spécialiste dans l'analyse des débats avec les outils de traitement textuels. Elle mobilise largement Iramuteq pour la production des résultats, dont elle a la familiarité à la fois théoriques (les notions sous-jacentes au logiciel) et pratique (ses paramétrages). Cependant, avant de pouvoir procéder à une analyse de corpus, il est indispensable de constituer ce corpus et de le mettre en forme. Comme elle le fait remarquer, "la force des logiciels spécialisés dépend de la qualité du corpus qu'il y a en amont". 8 | 9 | Pour cela, la programmation en Python permet d'avoir une forte flexibilité pour collecter les données et constituer différents corpus textuels qui respectent les formats attendus par le logiciel. Notamment, cela permet de filtrer ou de recomposer les corpus à analyser, rajouter des informations supplémentaires (conserver certains textes à partir d'une liste d'expressions par exemple) ou procéder à des regroupements pertinents. Le faire à la main limiterait largement l'exploration des possibilités. 10 | 11 | Un exemple qui témoigne de l'importance d'avoir les outils : nettoyer un corpus pour neutraliser les chiffres romains (ou des groupes de mots) en les remplaçant par des expressions non-ambigues qui pourront être analysées. Ou encore, des scripts permettent de décomposer des textes en sous éléments (début, milieu, fin) et d'analyser d'autres aspects. 12 | 13 | Il ne s'agit donc pas pour elle de développer un nouveau logiciel ou de suppléer à son usage : non seulement les compétences et le temps nécessaire dépassent souvent largement l'activité, mais en plus ces logiciels existent et son performants. Par contre, en maîtrisant les bases du langage et quelques tours de mains, faire un script utile est à la fois possible et fait gagner du temps, en étendant les usages. 14 | 15 | Il y a plusieurs raisons qui l'incitent à utiliser de la programmation. 16 | 17 | Tout d'abord, comme Lucie le fait remarquer, "les données s'y prête ou incitent à le faire", notamment sur des données non structurées à collecter comme les réseaux sociaux. 18 | 19 | Ensuite, s'il existe des solutions pour certaines transformations, la versatilité de Python permet progressivement de monter en compétence. Ainsi, elle fait remarquer que 20 | "dans certains cas, je ne connais pas les outils, et ça va plus vite que de me familiariser à un nouveau logiciel pour beaucoup de pratique de collecte de données". 21 | 22 | Enfin, écrire ses scripts de transformation permet de maîtriser le processus complet des données au logiciel, et de ne pas passer par des boîtes noires non contrôlées. 23 | 24 | Quelles sont les raisons d'utiliser Python plutôt qu'un autre langage ? Tout d'abord, "mon entourage scientifique m'y a invité", cet entourage étant Pierre Ratinaud. C'est un langage très accessible, auquelle elle s'est familiarisée en autodidacte, et qui a de nombreuses forces comme la gestion des encodages. Par ailleurs, "de nombreuses librairies préxistantes : je ne vais pas réinventer la roue, plein de gens ont déjà fait des roues et des voitures, et on peut les utiliser". 25 | 26 | En pratique, qu'est-ce qu'elle fait ? Elle décrit un peu la répartition de ses usages : 27 | 28 | - 80% des pratiques: ouvrir un fichier texte ; lire les lignes et constituer des objets et écrire un nouveau fichier 29 | - 15% des pratiques : adapter des solutions trouvées sur Stackoverflow : "souvent ça passe : souvent, on ne sait pas pourquoi ça passe, mais ça passe". 30 | - 5% des pratiques : aspect créatif, qui porte sur des points limités mais qui peut prendre du temps 31 | - marginalement, elle est aussi intervenu sur le code du logiciel lui-même, grâce aux compétences développées 32 | 33 | Un exemple précis d'utilisation ? Écrire un petit script qui permet d'ajouter des variables descriptives à un corpus, qui a pris 10 minutes et a permis une publication. 34 | 35 | Ses bibliothèques préférées ? CSV, Selenium, BeautifulSoup. 36 | 37 | Sur l'ouverture du code par contre, les pratiques de scripts restent largement personnelles. Ce sont des palimpsestes qui évoluent dans le temps en fonction des besoins. Elle n'utilise pas les Notebooks, et travaille directement dans des fichiers. Cette variabilité des besoins très proche de la pratique limite le passage vers des outils stabilisés diffusables (modules, bibliothèques). Cela souligne l'existence de différents niveaux de scripts. 38 | 39 | Dans la discussion, Lucie développe un peu sur son usage de Selenium pour automatiser l'action d'un navigateur afin de collecter des données sur des sites. Cela permet de contourner certaines limitations, notamment celles liées au caractère non statique de certains sites. Cela nécessite cependant une forte dose de rétroingéniérie pour comprendre la structure du site, et c'est souvent une course contre les évolutions des pages internets. 40 | 41 | Une pensée pour la route ? "c'est parce qu'on en a besoin qu'on apprend : j'ai toujours codé pour un besoin précis. Mais à chaque fois qu'on code, on apprend". C'est en se confrontant à une gamme de problèmes qu'on monte en compétence." -------------------------------------------------------------------------------- /docs/resume_seance4.md: -------------------------------------------------------------------------------- 1 | # #CoCoPySHS - Séance 4 - 09/06/2022 2 | 3 | ## Résumé de la séance 4 | 5 | Cette quatrième séance propose un prolongement de la réflexion sur l'usage de Python dans le traitement de données avec un décalage sur deux aspects : 6 | 1. à partir de deux projets impliquant la cartographie de réseaux, les intervenantes proposent de questionner la présence de l'usage d'une étape de script dans des études plus générales, 7 | 2. à partir de leur perspective de praticienne dans un cabinet de conseil en forte prise avec la science ouverte. 8 | 9 | Maya Anderson-Gonzalez et Célya Gruson-Daniel sont des chercheuses praticiennes, et développent leur activité au sein d'Inno3, cabinet de conseil en innovation ouverte spécialiste des données ouvertes, de l'open source. Elles interviennent avec d'autres collaborateurs.rices sur de nombreux projets autour des pratiques associées aux données en recherche et de leur ouverture, des enjeux juridiques et éthiques en lien avec la conduite d'enquêtes. Une des particularités de leurs usage de Python est qu'elles ne sont pas elles-mêmes engagées directement dans l'écriture du code mais sont amenées à l'intégrer dans leurs projets avec l'aide d'autres chercheurs et chercheuses. Elles s'appuient sur cette expérience pour développer une réflexion sur les méthodes mixtes intégrant des stratégies d'analyse et de visualisation dans une démarche de science ouverte. 10 | 11 | Leur présentation vise justement à mettre ces stratégies de traitement de données avec la programmation en perspective de la conduite plus générale d'un projet : en effet, non seulement produire un script pour analyser ou visualiser les données n'est pas l'unique solution existante, mais peut aussi ne pas être la plus pertinente. 12 | 13 | Les deux projets présentés portent sur des approches de cartographie de relations. Le premier se concentre sur les échanges Twitter pendant deux conférences (ChaosCon et FOSDEM), l'autre sur des liens entre site web autour des enjeux de la recherche sur la recherche/metascience dans le cadre de la préfiguration du Laboratoire de la science ouverte du Comité pour la science ouverte : 14 | - OSOS : analyse d'un réseau d’acteurs à la croisée de l'Open Source et de l’Open Science [billet de blog](https://inno3.fr/actualite/projet-de-recherche-ouverte-osos-analyse-dun-reseau-dacteurs-la-croisee-de-lopen-source) + [Gitlab](https://code.inno3.cricket/ouvert/osos) 15 | - LabSO : étude exploratoire sur la recherche sur la recherche :rapport sur [HAL](https://hal-lara.archives-ouvertes.fr/hal-03663434) + [Gitlab](https://gitlab.com/inno3/labso-meta-research-public) + site web de l'étude [Pubpub](https://meta-open-research.pubpub.org/) 16 | 17 | Dans le premier projet, l'approche déployée reposait sur les méthodes mixtes. Pour la partie d'analyse des tweets, elles ont fait appel aux services d'un data scientist extérieur qui a développé un script pour récupérer et mettre en forme l'analyse ultérieure qui a été menée dans [Gephi](https://gephi.org/) (logiciel d'analyse de réseaux). L'enjeu central a alors été de co-développer le script avec cet interlocuteur extérieur puis de documenter chacune des étapes afin de les rendre lisibles et reproductibles. Le script en lui-même reposait sur l'outil développé en Python twark (ligne de commande) puis complété par un Notebook Jupyter. L'ensemble du code a ensuite été déposé sur un FramaGit. Les données brutes sont accessibles grâce à l'identifiant des tweets utilisés. 18 | 19 | Dans le deuxième projet, le choix s'est porté sur une solution "no-code" en recourrant à la [plateforme Hyphe](https://hyphe.medialab.sciences-po.fr/) développé par le Médialab de SciencesPo, qui se trouve développée en Python pour le backend. L'outil permet de collecter des sites et leurs liens à partir de quelques liens url initiaux. Dans ce cas, l'interface est disponible avec des options à sélectionner et n'est pas automatisée par un script, il a été donc important de de documenter l'ensemble des opérations réalisées (pas la possibilité de documenter le code en lui-même). Une fois les données collectées, de nouveau l'analyse de réseaux et l'obtention des visualisations ont été réalisées avec Gephi. 20 | 21 | La mise en comparaison de ces deux projets permet de réflechir sur de nombreuses dimensions : le choix d'une solution impliquant de la programmation vs. un logiciel déjà existant ; l'intégration d'une expertise extérieure dans une équipe pour développer le morceau de code nécessaire pour la collecte et la mise en forme des données ; les stratégies différentes de documentation des étapes de traitement des données. Célya et Maya identifient plusieurs points : recourir à un code explicite permet une plus grande transparence, mais la solution "no-code" est plus simple à déployer en l'absence d'expertise de programmation disponible. Le code est moins accessible, et conduit à créer plus de dépendance avec la personne qui programme ; cependant, il y a aussi une dépendance aux versions du logiciel utilisé qui peut fragiliser un projet. 22 | 23 | Dans ces deux cas, la programmation Python est présente par contre avec deux formes de coulisses: d'une part, le script, sa co-production et les expertises nécessaires ; d'autre part, le travail d'ingénierie pour développer un logiciel dédié qui nécessite des ressources plus importantes (investies par le Médialab) et une communauté de développeurs.euses pour assurer son maintien. Dans les deux cas, elles insistent sur l'importance de relier l'opération de codage (même si elle est invisible) et de décodage, qui correspond à la documentation des traitements réalisés pour la transparence et la réutilisation. Dans les deux cas, les outils conduisent à une mise en vue des données. Et il apparaît nécessaire de développer une base de culture computationnelle pour pouvoir se mouvoir dans les outils possibles et initier une discussion avec des compétences extérieures. 24 | 25 | La discussion s'ouvre sur cette coulisse du code qui est celle du maintien des logiels et codes sources utilisés par nos communautés. Que ce soit Hyphe, ou des bibliothèques Python comme scikit-learn, il est nécessaire d'apporter des ressources pour assurer le maintien, l'adaptation et la promotion de ces solutions. Cela passe par des politiques de soutien explicites de l'open source dans la recherche scientifique (par exemple [le Plan National pour la science ouverte 2](https://www.ouvrirlascience.fr/deuxieme-plan-national-pour-la-science-ouverte/) , et des modalités adaptées de valorisation des logiciels libres et open source en recherche tout autant que des communautés qui y contribuent. 26 | 27 | -------------------------------------------------------------------------------- /docs/seance1_Tristan_Salord.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/seance1_Tristan_Salord.pdf -------------------------------------------------------------------------------- /docs/seance2_Mariannig_Le_Bechec.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/seance2_Mariannig_Le_Bechec.pdf -------------------------------------------------------------------------------- /docs/seance3_Lucie_Loubere.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/docs/seance3_Lucie_Loubere.pdf -------------------------------------------------------------------------------- /img/20102022.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/img/20102022.jpg -------------------------------------------------------------------------------- /img/coco241122.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/img/coco241122.jpg -------------------------------------------------------------------------------- /img/cocopyshs-cgd.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/img/cocopyshs-cgd.jpeg -------------------------------------------------------------------------------- /img/cocopyshs-mb.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/img/cocopyshs-mb.jpeg -------------------------------------------------------------------------------- /img/cocopyshs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/img/cocopyshs.png -------------------------------------------------------------------------------- /img/cocopyshs3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyshs/cocopyshs/4dd99209b6b528bf35b72e837d557997f98af6d5/img/cocopyshs3.jpeg --------------------------------------------------------------------------------