Lateo.net - Flux RSS en pagaille (pour en ajouter : @ moi)

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierSciences communes

L’exception Text & Data Mining sans décret d’application…

L’information vient d’être relayée sur Twitter (et n’a apparemment pas encore fait l’objet de publication par ailleurs) : le conseil d’État a rejeté le décret encadrant l’exception au droit d’auteur pour la fouille de texte et de données (Text & Data Mining) à des fins scientifiques.

Ce rejet n’est pas définitif : la loi prévoit de toute manière un décret (“Un décret fixe les conditions dans lesquelles l’exploration des textes et des données est mise en œuvre”). En attendant, cela limite considérablement l’application concrète de l’exception.

Que peut-on faire en attendant ?

Le principe de base demeure : il n’est pas illégal, au regard du code de la propriété intellectuelle, de constituer des “copies ou reproductions numériques réalisées à partir d’une source licite, en vue de l’exploration de textes et de données incluses ou associées aux écrits scientifiques pour les besoins de la recherche publique, à l’exclusion de toute finalité commerciale.”

Par exemple, j’ai extrait automatiquement plusieurs centaines articles de presse pour un projet de recherche sur le débat européen autour de la Liberté de panorama (notamment à partir de la base de données Europresse, à laquelle mon université est abonnée). J’étais alors potentiellement dans l’illégalité si je n’en faisais pas un usage strictement privé (par exemple en communiquant les copies à des collaborateurs). Aujourd’hui ce ne serait a priori plus le cas.

Par contre, en l’absence de décret d’application, les propriétaires des contenus ne sont tenus en rien de fournir ces corpus aux chercheurs ; ils ont même toute latitude de bloquer les extractions automatiques (en invoquant la nécessité de “protéger” le site des requêtes excessives). En somme, l’exception lève le risque juridique lié à l’utilisation de copies licites pour la fouille de donnée ; elle ne permet pas de récupérer ces copies (qui requièrent des arrangements contractuels au cas par cas).

Que prévoyait le décret ?

Le décret d’application visait à corriger cette déficience. La dernière version en date (republiée pour l’occasion sur Sciences Communes) correspond à un texte de compromis. La préservation de la “sécurité” des infrastructures face à des requêtes multiples ne peut servir d’argument pour entraver excessivement l’extraction : les détenteurs des droits (généralement des éditeurs) peuvent “appliquer des mesures destinées à assurer la sécurité, la stabilité et l’intégrité des réseaux et bases de données, dès lors qu’elles n’excèdent pas ce qui est nécessaire pour atteindre ces objectifs”.

Les établissements de recherche sont de plus habilités à conserver “sans limitation de durée les copies techniques produites dans le cadre de l’exploration de textes et de données”. L’objectif est d’éviter de mener d’effectuer des extractions multiples (alors que des corpus peuvent avoir déjà été constitués).

Qu’est-ce qui va suivre ?

Pour l’instant, l’argumentaire du Conseil d’État n’a pas encore été publié. Il sera intéressant de voir quelles dispositions du décret ont motivé le rejet (et, par contraste, quelles dispositions sont appelées à être reprises dans un futur décret).

Il semblerait également qu’une voie intermédiaire entre arrangement contractuel et cadre général soit également envisagée, sous la forme de “protocoles d’accords” intégrés dans les contrats entre les institutions de recherche et les éditeurs. Tout ceci risque de complexifier grandement la mise en œuvre de l’exception (rien ne garantit que les protocoles soient rendus publics, ni qu’ils soient systématiquement identique d’un contrat à l’autre…).

À plus long terme, une exception similaire est très sérieusement envisagée au niveau européen. Le principe d’un droit de fouille de textes et de données semble faire l’objet d’un relatif consensus : le débat porte davantage sur son extension au-delà du monde de la recherche (pour tous les usages non-commerciaux, voire pour des usages commerciaux). Le rapport Comodini, qui correspond déjà à un texte de compromis entre les différentes options retenues par le parlement européen, propose ainsi d’étendre le périmètre de l’exception à “l’innovation” (Amendement n°3) et non uniquement à la “recherche scientifique”.

Les bibliothèques numériques sont-elles représentatives ?

Au terme de 20 ans de programmes de numérisation, les bibliothèques numériques atteignent des dimensions colossales : il y a 4 millions de documents en libre accès sur Gallica et 5 millions sur son équivalent américain, Hathi Trust.

Et pourtant “colossal” ne veut pas dire “représentatif”. Certains référendums en ligne illustrent bien cette nuance : tout en récolant parfois beaucoup plus de réponses que les sondages classiques, ils sont notoirement moins fiables. Ils mesurent surtout la propension de certains groupes politiques à se mobiliser pour y répondre — quand ils ne sont pas complètement détournés par des votes multiples, avec ou sans robots…

Si elle n’est pas détournée par des groupes de pression, la numérisation n’est non plus une activité purement “aléatoire”.  Elle découle la conjonction de choix documentaires, déterminés par plusieurs contraintes ou opportunités externes : “prestige” ressenti du corpus, état de conservation, articulation avec des projets de recherche, intégration dans des dispositifs d’indexation antérieurs — sans compter les restrictions budgétaires qui amplifient tout le reste…

Cet enjeu méthodologique de la représentativité déborde complètement du cadre des humanités numériques. La recherche par mots-clés dans les bibliothèques numériques s’est généralisée, devenant pour de nombreuses études une porte d’entrée par défaut. Sans même tenter de quantifier les occurrences, la consultation prioritaire des documents qui “remontent” dans le moteur de recherche affecte notre perception de l’objet ou du corpus étudié — même si cela n’exclut en rien des des retours critiques ultérieurs.

Transformer le Catalogue de la BNF en une collection de fichiers csv

Dans le cas de Gallica, une excellente ressource permet de lever un coin de voile : Data BNF. Dans la continuité du mouvement d’ouverture des données culturelles, une grande partie des métadonnées de la BNF est aujourd’hui disponible sous une licence ouverte.

Le format utilisé (du web sémantique en RDF) se prête bien à l’indexation de relations complexes. Typiquement, un livre peut avoir plusieurs auteurs, qui peuvent avoir contribué à plusieurs livres — sachant qu’il existe tout un dégradé de “contributions”, de la rédaction de l’ensemble du livre, à celle de sa préface, en passant par la coordination d’un ensemble textes dans le même ouvrage.

Exemple d’entrée RDF d’une édition dans Data BNF

Ce format complexe ne se prête pas très bien à l’analyse de données sur un ordinateur personnel (raison pour laquelle, la BNF met à disposition un point SPARQL) Notamment, les fichiers sont très volumineux (20 gigaoctets pour l’ensemble des “éditions” : soit bien au-dessus des capacités standards de mémoire vive) et rangés de manière arbitraire (apparemment l’ordre dans lequel les documents ont été rentrés dans le catalogue de la BNF).

Avec un petit script en python, j’ai procédé à l’extraction des principales métadonnées de toutes les éditions antérieures à 1900. Chaque édition a été rangé dans un document en csv correspondant à une année. La collection complète peut être téléchargée par ici : elle compile les métadonnées de 1665095 éditions et “pèse” 400 mégaoctets (100 mégaoctets en version compressée). Chaque année peut être ouverte dans un tableur classique de type excel, même si l’application risque de tousser un peu à mesure que l’on se rapproche de l’année 1900.

Extrait de la collection de fichiers csv

À noter qu’il s’agit ici des éditions et non des œuvres : un même écrit peut figurer à plusieurs reprises. Il existe bien un recensement des œuvres en RDF mais il est pour l’instant très incomplet. Pour l’instant les auteurs ne sont pas mentionnés : c’est au programme d’une version future — il faudrait que je croise les documents csv avec le fichier RDF des “contributions” et celui des “auteurs”. Enfin, j’ai laissé les années telles qu’indiquées et les documents antérieurs à 1000 sont manipuler avec précaution : la BNF utilise apparemment des abréviations (19…) en cas d’imprécision.

Une couverture variable selon les époques

Il y aurait beaucoup d’enseignements à tirer de cette collection mais nous nous limiterons ici : quelle est la représentativité de Gallica au regard du catalogue de la BNF ? Toujours avec un petit script en python, nous pouvons extraire le nombre d’éditions du catalogue de la BNF disposant également d’un lien sur Gallica (qui correspond à la propriété rdarelationships:electronicReproduction en RDF).

Au total, 17,56% des éditions sont numérisées sur Gallica. C’est loin d’être négligeable : il ne s’agit que d’une seule bibliothèque.  En prenant en compte la totalité des publications disponibles sur l’ensemble des bibliothèques numériques, nous ne sommes peut-être plus très loin de cet objectif utopique : accéder à la totalité des documents imprimés dans le domaine public.

Cette proportion n’est pas uniforme dans le temps. Le graphe ci-dessous témoigne de variations substantielles : de 3% en 1530 (24 éditions numérisées sur 785) à… 31% en 1731 (813 éditions numérisées sur 2574) :

Editions du Catalogue de la BNF numérisées dans Gallica

Ces variations ne sont pas purement arbitraires. La tendance globale (représentée ici avec une courbe de régression en méthode Loess) témoigne de l’existence de trois “périodes” distinctes : des taux initialement bas en hausse constante pendant les XVe, XVIe et XVIIe siècles ; un palier élevé, supérieur à 20%, pendant tout le XVIIIe siècle ; un déclin continu amorcé à partir de la Révolution française.

Il n’y a sans doute pas d’explication simple à ces tendances mais je serai tenté d’y voir la conjonction de deux phénomènes : les documents anciens sont probablement plus coûteux à numériser (notamment en raison de leur fragilité) ; à mesure que l’on se rapproche de 1900, la production documentaire s’accroît fortement (et l’on commence à voir poindre les incertitudes sur le droit d’auteur). Entre ces deux écueils, le XVIIIe siècle constituerait un optimum de représentativité.

Sauf que… Nous avons jusqu’ici considéré le Catalogue de la BNF comme une référence absolu (à laquelle se mesurait plus ou moins bien Gallica). Rien n’est si simple : le Catalogue hérite lui-même d’une longue histoire assez passionnante, qui se confond avec celle du dépôt légal. Bien que théoriquement établi au XVIe siècle, le dépôt légal est très mal appliqué en pratique jusqu’au début du XIXe siècle : le progrès des techniques d’indexation permet alors d’établir cette remarquable base de données périodique qu’est la Bibliographie de la France.

Nombre d’éditions dans le Catalogue de la BNF

Si le catalogue s’approche d’un niveau d’exhaustivité idéal pendant les XIXe et XXe siècle, rien n’est moins sûr en-deçà. Une rapide inspection de l’année la plus représentative, 1731, instille le doute. Parmi les documents numérisés, nous trouvons beaucoup de cartes et d’arrêts du conseil d’État. Ils n’est pas totalement exclu que ces éditions n’ont été intégrées au Catalogue de la BNF qu’à l’occasion de leur inclusion dans Gallica…

Titre des éditions numérisées sur Gallica en 1731
Titre des éditions numérisées sur Gallica en 1731

Dans la mesure où elle entraîne une redéfinition des notions de “texte” ou d’éditions, la numérisation concourt peut-être à “créer” (ou du moins “instaurer”) des documents. Dans une bibliothèque, un arrêt n’est qu’une feuille volante qui ne va pas nécessairement être signalé dans les catalogues. Dans un système informatique, il devient un document comme un autre.

Gallica préfère les textes longs

Il existe une autre manière de mesurer la représentativité avec les données dont nous disposons : par le nombre moyen de page. Cette donnée figure souvent (mais pas toujours)  dans champ “description” et peut être extraite systématiquement à l’aide d’une expression régulière (ici avec R) :

scan_years %>%
 mutate(page_number = str_match(description, "(\\d+) ?p\\.")[,2]) %>%
 filter(!is.na(page_number)) %>%
 mutate(page_number = as.numeric(page_number))

Sur la période 1815-1870, le nombre moyen de pages des éditions numérisées est presque systématiquement plus élevé. Le différentiel avec les éditions non numérisées atteint même 30-40 pages pendant le Second Empire.

Les documents numérisés sur Gallica ont une pagination plus élevée

Cette préférence structurelle pour le texte long pourrait découler d’une préférence pour les grandes monographies. D’expérience, je retrouve bien plus souvent des textes romanesques, des traités scientifiques ou des annuaires que de petits opuscules ou pamphlets.

Comment “construire” la représentativité ?

Je pourrai poursuivre cet exercice avec d’autres données (notamment les éditeurs ou les lieux de publication, en attendant les auteurs), mais il deviendrait vite un peu frustrant. Deux informations essentielles manquent toujours à l’appel : les “genres” et les “sujets” abordés. La BNF dispose certes d’un référentiel prévu à cet effet, le RAMEAU. Il reste très peu employé pour les documents antérieurs à 1900 : dans le point SPARQL de Data BNF, quasiment aucun “roman” n’apparaît avant 1850. Or, manifestement, les variations constatées dans le temps ou sur le nombre de pages découlent au moins pour partie de prédilections plus ou moins explicites en faveur de tels ou tels corpus.

La représentativité reste encore aujourd’hui à “construire”. Elle ne peut uniquement s’adosser à des outils documentaires préexistants (qui sont eux même faillibles et incomplets) : il faut également repartir des textes eux-mêmes.

C’est là l’intuition fondamentale de la lecture distante. Chaque texte porte en quelque sorte sa “carte d’identité” : le lexique employé constitue une série d’indices stylistiques ou sémantiques permettant de classer et d’indexer le document. Une équipe de recherche américaine, coordonnée notamment par Ted Underwood, est ainsi parvenue à “cataloguer” automatiquement 13 millions d’ouvrages (dans le domaine public et sous droit d’auteur) d’Hathi Trust à partir du décompte du lexique. À partir de ces corpus libre accès, il devient envisageable, par exemple, d’observer la sédimentation sur le temps d’un genre littéraire comme la science fiction :

Probabilité d'attribution à la science fiction (Underwood, The Life Cycle of Genres)
Probabilité d’attribution à la science fiction (Underwood, The Life Cycle of Genres)

Ces nouvelles approches ne nécessitent pas seulement de lever des barrières techniques mais aussi légales. La revendication de droits de propriété intellectuelle sur des textes dans le domaine public (ou copyfraud) s’accompagnent bien souvent de restrictions contre le téléchargement.

Gallica restreint ainsi l’usage commercial des documents numérisés. Il n’existe pas d’API ou de dumps (soit de collections textuelles complètes) de Gallica : l’application Pyllica que j’avais développé avec Julien Schuh contourne cette difficulté en extrayant directement les pages web1 . À contrario, les métadonnées sont disponibles sous licence ouverte sur data BNF (et peuvent être téléchargées en une seule fois).

Néanmoins les bibliothèques numériques réduisent graduellement ces restrictions indues, en partie pour tenir compte de ces nouveaux enjeux. Alors que le copyfraud tend à s’insinuer dans la loi (notamment au travers de la Loi Valter), les bibliothèques passent graduellement à “une libre diffusion du domaine public numérisé” (ce qu’illustre notamment la conversion récente de la Bibliothèque de l’INHA à la Licence ouverte). Pour mes projets de recherche sur la presse quotidienne nationale, j’ai la chance de disposer du corpus Europeana Newspaper (disponible sous forme de dumps complets sous licence CC0).

Dans ce contexte, la levée de ces barrières et enclosures devient un enjeu scientifique majeur. La plupart des publications du domaine public sont peut-être aujourd’hui disponibles en ligne mais nous ne le savons pas. Pour être visibles et correctement indexés, ces immenses corpus doivent devenir mobiles : circuler librement d’un projet de recherche à l’autre, d’une infrastructure à l’autre et être continuellement enrichis au gré de ces passages.

  1. Pyllica va d’ailleurs bientôt recevoir une mise à jour substantielle : stay tuned

Les nouveaux modes d’éditorialisation du libre accès : l’étude critique de 2016 est là !

Je diffuse aujourd’hui mon principal projet de ces derniers mois, qui marque également l’aboutissement d’une réflexion engagée depuis plusieurs années sur Sciences communes : une étude critique sur les nouveaux modes d’éditorialisation des revues scientifiques en accès ouvert réalisée pour BSN — et très opportunément, cela tombe en pleine Open Access Week

couverture_rapport
Cliquez sur l’image pour accéder au rapport (hébergé sur scoms en attendant HAL)

L’étude n’est que la version « synthétique » d’une quarantaine de pages d’un ouvrage qui paraîtra dans quelques mois. On peut retrouver également certains éléments propres à l’ouvrage (non repris dans l’étude) dans la présentation que j’en ai tirée pour la BSN et que j’ai ressorti la semaine dernière pour le séminaire PragmaTIC :

Support de présentation de l’étude pour BSN

Le libre accès connaît aujourd’hui un tournant majeur. Il entre dans la loi : la Loi pour une République numérique prévoit un droit de republication des versions auteur ainsi qu’une exception au droit d’auteur pour faire de l’extraction automatisée de textes et de données (text & data mining, encore connu sous le sigle TDM). Au-delà de cette officialisation, le libre accès, sous toutes ses formes (archives ouvertes, revues, bases de données) est devenu un phénomène massif et incontournable, toutes disciplines, communautés et pays confondus.

De quel libre accès parle-t-on ?

La mise à disposition gratuite, voire sous licence libre, dissimule des choix éditoriaux, économiques et même politiques, radicalement distincts. Une partie du mouvement du libre accès est ainsi tentée par une mutation a minima : le journal flipping, soit une reconversion (to flip) des budgets consacrés aux abonnements en achats de « droits à publier » en libre accès, sans rien changer aux montants.

Cette reconversion maintient en l’état l’oligopole des géants de l’édition scientifique (bien présenté dans le dernier Datagueule), voire en étend la portée. Car un acteur comme Elsevier n’attend pas la généralisation du libre accès pour amorcer sa reconversion. Les acquisitions successives de Mendeley ou de l’archive ouverte SSRN (en attendant, peut-être, celles de ResearchGate ou Academia) témoignent de l’avènement de formes de contrôle et de captation inédites de l’activité scientifique : les interactions des chercheurs autour de leur publication alimentant un vaste recueil de métriques, revendues entre autres aux institutions universitaires. Nous assistons à l’émergence d’un nouveau modèle économique de l’édition scientifique assez largement inspiré de celui des grandes industries du web comme Facebook ou Google.

Une autre édition est possible

D’autres modèles existent : de par son ampleur-même, la conversion au libre accès autorise une réforme plus globale des conditions de diffusion de l’écrit scientifique. Les évolutions sont déjà engagées. C’est ce que rend visible la « cartographie » des pratiques et des initiatives émergentes qui se décline sur les quatre parties du rapport : outils d’édition, formes d’écritures, dispositifs d’évaluations et modèles économiques connaissent des transformations parfois radicales — et parfois convergentes. L’article n’est plus seulement ce un objet fixe et immuable une fois le processus de publication achevé mais connaît une multitude d’incarnation ultérieures (par exemple en se métamorphosant en données grâce aux techniques de text & data mining). L’évaluation ne s’arrête pas davantage au seuil de la revue : en s’ouvrant (open peer review), elle prend la forme d’une réception continue.

capture-decran-2016-10-27-a-16-18-45
Analyse de correspondance réalisée à partir des données d’une étude sur les pratiques d’écriture de 20 000 chercheurs : l’utilisation d’outils libre est étroitement liée à la pratique en libre accès (orange) tandis que des pratiques émergentes mettent davantage l’accent sur la réplication (bleu).

En 2016, la question n’est plus tant de susciter ou de développer des innovations, mais de les intégrer et de les combiner dans des infrastructures cohérentes. L’architecture du web permet de faire cohabiter et « dialoguer » des modèles très différents par le biais de standards communs. Pour soutenir cette « bibliodiversité », il est nécessaire de la donner à lire, de faciliter la circulation d’une forme à l’autre et d’une plateforme à l’autre. J’ai ainsi proposé une petite projection (connus par les initiés de BSN sous le nom de code de « slide 63 ») du rôle déterminant que pourraient désormais jouer les archives ouvertes au-delà du simple recueil de l’article en recensant la pluralité de ces incarnations : évaluations, réplications, extraction de données…

Projection d'une archive ouverte augmentée
Projection d’une archive ouverte augmentée (à partir d’un article déjà déposé dans HAL)

L’élaboration des infrastructures ne soulève pas des enjeux que « techniques ». Finalement un acteur comme Elsevier pourrait très bien jouer ce rôle (et commence à le faire). La différenciation s’opère sur un autre plan : celui, « politique », de la gouvernance. L’enjeu double est aussi bien d’empêcher le détournement de l’open access au profit de nouvelles enclosures que de développer des processus de prise décision plus efficaces et mieux adaptés à un contexte fortement évolutif. Le futur de l’édition scientifique passe ainsi peut-être par l’avènement de grandes plateformes auto-gérées. Celles-ci s’inscriraient la lignée de communs numériques comme Wikipédia ou OpenStreetMap, mais avec des modèles forcément différents, qui restent encore à inventer.

Bien qu’il m’ait été officiellement confié en janvier dernier, le rapport a été « préparé » depuis trois ans sur Sciences Communes. Le présent carnet a été créé en 2013 dans la perspective d’étudier et de référencer les « les nouvelles pratiques de réutilisation des publications et des données scientifiques ». Le rapport va aujourd’hui beaucoup plus loin que ce que j’imaginais alors : j’étais alors plutôt focalisé sur les questions de licences, tout en ayant en tête la perspective d’un écosystème élargi, né de la mobilité inédite des textes et données de la recherche (mon rapport particulier à l’open access, découvert alors que j’étais un simple contributeur sur Wikipédia dans l’incapacité d’accéder aux grandes bases d’articles sous paywall, n’y est pas étranger). Les dimensions de la « cartographie » du rapport sont en partie apparues dans le fil de ce carnet : la possibilité d’une captation de l’open access par des industries académiques 2.0, la nécessité d’une réponse politique, la longue « préhistoire » du libre accès…

Il y a une autre forme de continuité. Dans le rapport comme dans Sciences communes, les opportunités ouvertes par les nouvelles méthodes et formes d’écriture scientifique ne sont pas juste signalées mais mises en pratiques et exploitées. J’ai ainsi repris des données déposées sur Figshare ou Zenodo et j’ai développé des programmes d’extractions automatisés d’articles scientifiques (notamment pour situer le débat académique sur le terme d’open peer review) — tout comme, j’ai pu, par le passé, publier ici des « expériences » (1, 2, 3) qui démontraient, par l’exemple, l’opportunité de penser la publication scientifique comme une production croisée de textes, de données, de codes et de visualisations.

Réseau de similarité entre termes dans les blogs référencés dans l'Open Access Directory
Essai de text mining sur les blogs référencés dans l’Open Access Directory. Le réseau de similarité entre les termes met en évidence l’importance croissante des thématiques éditoriales (données, évaluation…) dans le mouvement sur libre accès

Et puis, ce travail est une forme de production collaborative par procuration. Si j’en suis techniquement le rédacteur, je ne peux pas laisser de côté toutes les influences, déterminantes, qu’il laisse percevoir : celles de mes « encadrants » (Serge Bauin, Emmanuelle Corne, Jacques Lafait et Pierre Mounier), celle de ma collaboratrice sur Sciences Communes Rayna Stamboliyska (qui a directement contribué à l’écriture de ce présent billet), celle de mes collègues de SavoirsCom1 (Lionel Maurel, Thelonious Moon, Mélanie Dulong de Rosnay — également contributrice sur Sciences Communes) et de tant d’autres, théoriciens ou acteurs du libre accès (Marin Dacos, Daniel Bourrion, Guillaume Cabanac, Marie Farge…)

Le deep learning est-il le futur du text mining ?

Deep learning : le terme symbolise la grande espérance technologique du moment (et, dans les milieux spécialisés, commence à reléguer le « big data » à l’arrière-plan, même si l’un se conçoit très souvent avec l’autre). Tout semble destiné à être révolutionné par les réseaux de neurone artificiels « profonds ». Depuis peu, les robots savent reconnaître les images, maîtrisent le jeu de go à la perfection, rédigent plus vite qu’un secrétaire… Ils commencent même à rêver. L’application Deep Dream a fait fureur l’année dernière avec ses étranges compositions oniriques.

Une création des "rêves profonds" : des oiseaux-arbres…
Une création des « rêves profonds » : des oiseaux-arbres…

Sons, images, règles de jeu : rien n’échappe à la déferlante. Et quid du texte ?

Alors que la pratique du text mining prend de l’ampleur, notamment grâce la disponibilité d’immenses corpus numérisés et un contexte légal un peu plus arrangeant, l’apprentissage profond n’a pas encore intégré la boîte à outil des lecteurs distants. Les techniques courantes utilisés pour classer et arpenter les textes recourent pour l’essentiel à des modèles élaborés dans les années 1970-1990 : analyse de correspondance, analyse sémantique latente, SVM… Dans le champ des humanités numériques, l’innovation est plutôt d’ordre « documentaire » : comment appliquer des algorithmes éprouvés à de grands ensembles de textes ? Et comment en tirer des enseignements pertinents pour l’étude stylistique, littéraire, sociologique… des textes ?

Par exemple, l’étude remarquable de Ted Underwood et Jordan Sellers sur les « standards littéraires » dans les revues anglaises du XIXe siècle repose sur un détournement : le classement automatisé ne permet pas seulement de déléguer à la machine un travail d’étiquetage ; il contribue à reconstituer ce qui « fait genre » en identifiant des marqueurs lexicaux porteurs d’une intention de discours.

Une nouvelle application introduite en 2013 par Tomas Mikolov et al. augure peut-être de l’arrivée prochaine du deep learning dans les études textuelles et littéraires : Word2Vec. Word2Vec est très loin d’être parfait (et ne constitue pas, à strictement parler du « deep » learning). Tout en ouvrant manifestement des perspectives inédites et prometteuses, il reste encore très difficile d’en tirer un usage concret. Plusieurs projets de recherches en humanité numériques ont commencé à élaborer des implémentations (par exemple, en traçant l’usage des termes spécialisés de matériaux textiles dans le magazine féminin Vogue).

Pour cette petite présentation, je vais tenter d’aller au-delà (je ne serai pas le premier : Ben Schmidt ou Ryan Heuser ont déjà publié de bons essais en ce sens…). Je précise d’emblée que j’apporterai plus d’interrogations que de solutions — mais bon, c’est le lot de l’expérimentation à l’état brut…

Mes tests porteront exclusivement sur un corpus contenant la totalité des chroniques du compositeur Hector Berlioz dans le Journal des débats entre 1834 et 1861 (au total près de 400 articles, un peu plus d’un millions de mots). Ce n’est pas un choix au hasard : c’est en faisant un peu d’exploration libre autour de ce corpus que j’ai été amené à prendre conscience d’une propriété très intéressante de Word2Vec. Toutes les manipulations ont été effectuées à partir de l’extension de Word2Vec pour le langage python, Gensim (qui contient également de nombreuses autres fonctions très intéressantes pour la pratique du text mining). Contrairement à d’autres essais similaires publiés sur Sciences communes, je n’ai pas publié le code même si on en retrouvera des bouts qui traînent de-ci de-là : je suis encore loin d’être parvenu à un programme un tantinet cohérent et structuré… Pour ceux qui souhaiteraient quand même jouer un peu avec les données d’origine, j’ai déposé le fichier généré par Word2Vec sur Github.

L’art de traduire les mots en vecteurs…

Comme son nom l’indique, Word2Vec transforme les mots en vecteurs (ou, en français courant, en listes de nombres). Dans mon corpus, « Beethoven » est devenu :

-0.073912 -0.077942 0.244746 -0.235633 -0.052089 -0.228696 -0.294700 0.224995 -0.220984 0.009802 0.113246 0.172214 0.116851 -0.014701 0.272866 0.256256 -0.181295 0.167663 0.384452 -0.357031 -0.232429 -0.185704 0.063136 -0.235764 -0.394459 -0.024006 0.294152 -0.244346 -0.175500 -0.030211 0.102827 -0.067870 -0.329649 -0.267827 -0.239693 0.300108 -0.242601 -0.005308 0.234772 0.148167 0.041641 0.205686 -0.006405 -0.153118 0.245944 -0.101422 -0.204146 -0.215763 0.219858 -0.365411 -0.269319 -0.161473 -0.270557 -0.066371 -0.090772 0.207627 -0.064222 0.384351 -0.049304 -0.003502 0.046460 -0.241773 0.252691 0.135745 0.183757 0.064836 0.234710 0.246344 0.049769 -0.353813 0.024466 0.359923 0.254209 0.256462 0.199013 -0.058624 -0.214481 -0.117650 -0.043015 -0.347653 -0.029410 0.026260 -0.309258 -0.162839 -0.114093 0.382022 0.356538 0.352163 0.031176 0.186652 0.002508 -0.074699 -0.424376 -0.240450 0.065470 0.064408 -0.104289 -0.097309 0.265224 -0.248547

En apparence cette liste ne veut rien dire. Il s’agit d’une « réduction » des relations contextuelles qui relie ce mot entre eux. À mon avis le meilleur analogue se trouve du côté des techniques de réduction de la taille des fichiers1 . Lorsqu’on convertit un texte en fichier ZIP on parvient à le rendre beaucoup moins volumineux. Par contre, le contenu ne veut plus rien dire (tout en étant manifestement bien là : il suffit de « dézipper » le fichier pour le retrouver).

Les vecteurs constituent en quelque sorte des fichiers super-ZIP : la situation initiale du terme a disparu (ce qui fait qu’on ne peut pas reconstituer le texte) ; par contre, elle porte potentiellement de nombreuses informations sur les relations que ce terme entretient avec d’autre terme. On parle alors de word embedding. Il n’y a pas vraiment de traduction officiel de cette expression apparue en 2003 (on peut à la rigueur parler d’intégration de mot). La principale distinction avec les méthodes usuelles de text mining et de traitement automatisé sur langage naturel se joue en effet sur la connexion entre le mot et l’ensemble du texte : par contraste avec les tableaux classiques mots vs. documents, le mot se trouve « relocalisé » et inscrit dans le prolongement immédiat de ses « voisins », et non dans le continuum d’un document entier. Aux dernières nouvelles, ces words embedding font fureur dans les conférences américaines de linguistique computationnelle — et ont complètement relégué les techniques plus classiques à l’arrière-plan.

Il est ainsi possible de retrouver les termes les plus proches de Beethoven :

listBeethoven = model.most_similar(positive=['beethoven'])
print listBeethoven

>>>>>> [('mozart', 0.7579751014709473), ('weber', 0.7569864988327026), ('haydn', 0.7024569511413574)]

Il n’y a que des noms de compositeurs. Nous entrons ici de plain-pied dans une spécificité de Word2Vec : les liens ne sont pas entre des éléments de discours proches (ce qui amènerait par exemple à rapprocher Beethoven de « Fidelio » ou de « symphonie ») mais entre des éléments qui sont employés de la même manière. Il y a une certaine manière de présenter Beethoven dans les chroniques de Berlioz qui fait écho plus généralement à une certaine manière de présenter des noms de musiciens, voir des noms tout court, dans la langue française du XIXe siècle. Les words embedding conservent, sous une forme opaque, une sorte de contexte idéel, de moyenne des interactions locales entre un mot et les autres mots du corpus. Il faut se représenter l’action du réseau de neurone comme celle d’un sculpteur qui à partir d’un bloc de marbre indistinct (tous les vecteurs correspondent en effet à des séries de nombres aléatoires) parviendrait à modeler la morphologie relative de chaque terme, en les confrontant successivement avec tous ses voisins2 .

Word2Vec permet d’aller plus loin : retrouver des relations d’analogie entre les différentes entités. Nous pouvons ainsi indiquer au programme que les termes « Beethoven » et « Fidelio » entretiennent une certaine relation (celle d’auteur à œuvre mais j’insiste sur le fait que nous ne précisons pas laquelle) et que nous souhaiterions avoir une liste de terme qui sont liés de la même manière à « Weber » :

listBeethoven = model.most_similar(positive=['beethoven', 'fidelio'], negative=['weber'])
print listBeethoven

>>>>> ['freyschütz', 0.6202365159988403), ('symphonie', 0.584333062171936)]

Ce que « Fidelio » est à « Beethoven », « Freischütz » l’est à « Weber » : leur opéra le plus connu3 . La combinaison que je présente ici est une variante personnalisée de l’exemple classique du roi et de la reine. Dans n’importe quel texte suffisamment étendu (généralement la totalité de la version anglophone de Wikipédia), Word2vec parviendra à résoudre l’équation suivante :

Man – King = Woman – ?
? = « Queen »

J’ai intentionnellement maintenu les termes en anglais car je ne suis pas certain que la même combinaison marcherait en français, où « homme » reste encore parfois employé dans un sens générique (et, au fond, assez sexiste) comprenant les deux sexes.

L’équation est plus « facile » à comprendre si on se rappelle que chaque mot constitue un « contexte d’apparition ». « Beethoven – Fidelio » représente en quelque sorte la situation du terme « Beethoven » une fois qu’on lui a retiré son affinité (ou ses relations) avec « Fidelio » :4. Par conséquent, lorsqu’on retire du contexte moyen d’apparition de « Beethoven » les configurations qui impliquent également l’apparition de l’opéra Fidelio (ce qui nous limiterait plutôt, par exemple, aux phrases où l’on discuterait des sonates de Beethoven) on effectue une opération analogue au retrait des phrases ayant trait à Freyschütz dans le contexte moyen d’apparition de « Weber ». Dans les deux cas, le retrait se traduit apparemment par l’occultation de cooccurrences prédites liées à l’évocation d’un opéra.

Il est aussi possible de se la représenter dans un graphique (en réduisant les nombreuses dimensions de la liste de nombre à deux dimensions permettant d’établir des coordonnées). L’image ci-dessous représente plusieurs projections « géographiques » dans l’article original de Mikolov et al. : les capitales sont reliées à leurs pays.

Mikolov

Vers une exploration de l’espace sémantique du texte ?

Pour produire un tel résultat, Word2Vec emploie une machinerie compliquée, qui repose notamment sur un réseau de neurone artificiel en partie aménagé pour traiter du texte. À chaque mot est associé une série de mots voisins (généralement de 5 à 10) qui forment le « contexte ». Dès qu’un mot apparaît, le réseau tente de prédire les mots voisins ; selon l’étendue de l’erreur, il met à jour la représentation condensée du mot (la liste de nombres) et les réglages internes (les « biais » propres à chaque neurone et les « poids » propres à chaque relation entre neurone)5 .

Word2Vec n’utilise qu’une version légère (ou « shallow ») des réseaux de neurone artificiel : concrètement il utilise peu de couches successives de neurones se transmettant l’information. Cette limitation technique lui permet de fonctionner très rapidement (l’entraînement sur le corpus Berlioz a pris à peine dix secondes). Par contre, la montée en abstraction est bridée : Word2Vec ne cherche pas vraiment à dégager de grands principes ou de grandes notions structurant ce qu’il lit (comme le ferait spontanément un lecteur humain). L’objectif principal reste d’aboutir à une représentation des contextes d’apparition des mots aussi correcte que possible sans vraiment s’attacher à faire émerger des méta-relations abstraites (même si, comme nous le verrons après, elles émergent quand même un peu).

Depuis 2013, Word2Vec a suscité un grand nombre de publications (l’article d’origine a été cité plus de 2000 fois…). Certaines ont démontré qu’il n’était pas nécessaire d’utiliser des réseaux de neurones artificiels au fonctionnement opaque pour trouver à peu près le même résultat. Le programme GLOVE développé par Stanford repose ainsi sur l’utilisation de cooccurrences entre les termes (le nombre de fois qu’un terme apparaît en concomitance avec un autre). En croisant les probabilités de cooccurrence, il devient possible de reproduire exactement le fonctionnement de Word2Vec — et ce manière bien plus lisible.

Présentant une approche similaire, un excellent article d’Omer Levy et Yoav Goldberg conclut que Word2Vec constitue avant tout « une excellente manière de préserver des motifs inhérents à une matrice de cooccurrence ». Sous l’effet de cette opacité ressentie, le champ de recherche des « words embedding » tend aujourd’hui à s’éloigner des réseaux de neurone. La dernière création du concepteur de Word2Vec pour Facebook, FastText (divulgué pas plus tard qu’il y a deux semaines) semble ainsi évacuer totalement cette piste6 .

Pour l’heure, à l’exception de FastText (que je n’ai pas encore testé : il faudrait que je mette à jour ma version de C++), les alternatives actuelles à Word2Vec présentent l’inconvénient d’être coûteuses en infrastructures et/ou en temps de traitement. Pour construire les matrices de cooccurrences géantes de GLOVE, il est nécessaire de disposer de beaucoup de mémoire vive. C’est jouable à l’échelle de grands projets disposant d’infrastructures distribuées — mais comme la plupart des digital humanists, je n’ai que mon petit portable.

Je vais donc tenter une autre approche : tenter de faire la même chose pour Word2Vec que ce qu’Underwood ont fait pour les régressions logistiques. Alors que l’outil est explicitement conçu dans une optique « moteur de recherche », je vais essayer de lui soutirer autre chose : faire émerger les principaux groupes d’entités et les liens qui les caractérisent, soit les tensions sous-jacentes à l’espace « sémantique » du texte.

J’insiste ici sur cet aspect sémantique : l’enjeu n’est pas de tracer un certain régime de discours ou un certain ensemble stylistique mais des classements ou des ontologies sous-jacentes d’une certaine production textuelle. Ainsi, dans le cas du corpus des critiques de Berlioz, il y aurait de toute évidence une famille des compositeurs et peut-être une famille des dénominations musicales spécialisées (ou peut-être pas…) et ces différentes familles seraient liées ou non entre elles.

Bref, nous utilisons ici Word2Vec à l’envers : il ne s’agit pas de retrouver des termes en fournissant des analogies mais de dégager les principales séries d’analogies inhérentes au texte, sans les soupçonner à priori. Par ce biais, il deviendrait possible d’identifier les classements et les ordres jugés implicitement important par le texte lui-même. Alors que l’analyse des entités nommées reste focalisée sur les groupements qui intéressent directement les industries de l’information (personne, lieu, organisation), nous pouvons très bien imaginer de retrouver des groupements beaucoup plus précis et/ou exotiques (les idéologies, les émotions, les termes économiques ou médicaux spécialisés, les ingrédients de cuisine ou, pourquoi pas, les positions sexuelles…) sans émettre de préjugés a priori sur ce qu’ils peuvent bien être. Dans une synthèse détaillée de l’utilisation des Words Embeddings pour les humanités (qui présente également au passage une extension de Word2Vec pour R) Ben Schmidt parvient aux même conclusions :

Less flexible data models like topic models lock you into one particular idea of what Catholicism, or food, or any other topic, might be. WEMs, on the other hand, explicitly enable searching for relations embedded in words. If there’s a binary, it’s open for exploration.

En ce qui me concerne, l’idée m’est venue par hasard. J’utilise depuis quelque temps Word2Vec pour reconstituer des « réseaux de discours » : je relie chaque couple de terme présentant une affinité positive supérieure à 0,7 (enfin, selon les cas, ça flotte entre 0,6 et 0,8). Au sens large, ils tendent à se regrouper par type de discours (ce qui est assez logique vu que le « contexte » ne s’étend pas au-delà de dix mots) et nous parvenons à générer des réseaux de termes qui correspondent assez bien à ce que trouvent par ailleurs les bons vieux algorithmes de topic modeling. Dans ma thèse, j’ai ainsi utilisé cette méthode pour présenter visuellement la distinction entre les deux principaux sous-genres de la chronique boursière française à ses débuts : une chronique d’économie politique fortement influencée par le saint-simonisme et une série d’énoncés très formalisés sur l’évolution des cours (les actions de X sont à Y, et ainsi de suite).

Réseau de discours à partir du corpus de chroniques boursières du Journal des débats de 1838 (en vert, le discours "saint-simonien", en rouge le discours "procédural")
Réseau de discours à partir du corpus de chroniques boursières du Journal des débats de 1838 (en vert, le discours « saint-simonien », en rouge le discours « procédural »)

Lorsque j’ai appliqué le même traitement au corpus Berlioz en janvier dernier, j’ai été soudainement frappé par un ensemble surprenant :

CompositeursÀ l’exception de l’anomalie « l’école » (mais qui est cependant instructive…) tous les compositeurs se retrouvent hébergés dans le même réseau qui est coupé du reste. J’ai ainsi pris conscience que mon réseau ne représentait des types de discours que par accident (au niveau méta où les familles de termes tendent elle-même à s’agréger dans des systèmes de discours où elles s’illustrent préférentiellement). Le véritable échelon est sémantique : celui des groupements d’entités qui fait pour un texte comme une critique musicale, l’ensemble « compositeur » forme une distinction pertinente (alors que ce ne serait clairement pas le cas pour la chronique boursière formée à la même époque).

Essai de dégagement des ensembles sémantiques

Depuis lors, j’ai été en partie obsédé par l’idée de dégager spontanément ces ensembles sémantiques. La principale difficulté vient de la multiplicité des relations « encodées » par Word2Vec. Le terme « roi » peut ainsi correspondre au versant masculin de reine, mais aussi au supérieur du duc ou du comte… Il est difficile d’être certain de dégager a priori les ensembles sémantiques les plus pertinents — soit reflètent le mieux les classifications/ontologies sous-jacentes du texte.

J’ai utilisé ici plusieurs « trucs » :

(1) Un contexte suffisamment élevé (de l’ordre de 10 mots). Plus le contexte est faible, plus le réseau de neurone va se focaliser sur des relations syntaxiques (singulier/pluriel, masculin/féminin, passé/présent) qui se concentrent généralement dans le voisinage immédiat du mot (articles, verbe, préposition) ; plus il est élevé, plus les relations sémantiques vont prendre le dessus. Pour notre workflow, les relations syntaxiques présentent assez peu d’intérêt : Word2Vec n’est pas très bon à ce jeu là et nous utilisons déjà un outil plus efficace en (2).

(2) Un étiquetage syntaxique en amont. À chaque terme nous associons un type grammatical (nom commun, adjectif, verbe, nom propre). Pour ce faire, nous avons employé l’application Talismane développée par Assaf Urielli qui obtient de bon résultats pour le français. Nous obtenons un très long tableau répertoriant pour chaque occurrence du mot, son lemme, son type grammatical et tout un tas d’information (personne, genre, temps, etc.).

(3) Découper Word2Vec. L’étiquetage syntaxique permet déjà d’opérer une meilleur lemmatisation que celle présente par défaut dans les extensions de R ou de python : au lieu d’avoir des bouts de mots parfois mal coupés qui génèrent des ambiguïtés, nous obtenons directement les formes « de référence » (verbes à l’infinitif par exemple). Surtout, une fois que nous avons fait tourné Word2Vec sur le corpus lemmatisés, nous pouvons sélectionner les termes en amont afin de limiter les croisements non désirés. Nous avons ainsi exclusivement travaillé sur les noms communs et les noms propres en excluant d’emblée tout le reste.

(4) Élaborer une matrice des « affinités » sur l’ensemble des termes sélectionnés. Pour pouvoir calculer les affinités entre deux listes de nombres correspondant à chaque mot, Word2Vec fait appel à la mesure de la « distance cosine » (en gros à 1, les listes sont totalement identiques et à -1 elles sont totalement différentes). Comme je voulais faire les calculs en masse sur l’ensemble des noms communs, j’ai préféré faire appel à R plutôt que Gensim : il y a une charmante fonction « cosine » dans l’extension « lsa » qui établit d’un coup la matrice des affinités croisées entre chaque mot. Pour les noms propres, nous obtenons à terme, un gros tableau réciproque avec 1805 entrées et autant de colonnes. Afin de diminuer la taille de cette grosse matrice, nous nous sommes limités aux termes apparaissant plus de cinq fois (de toute manière, en-deçà de cette limite, Word2Vec commence à peiner à raccrocher le terme à un contexte pérenne).

Matrice des affinités croisées
Matrice des affinités croisées

(5) Projeter les principales relations dans un réseau. Nous utilisons un autre truc de R : la fonction « melt » de l’extension « reshape2 » qui permet de faire « fondre » une matrice. Toutes les colonnes deviennent des noms de variable ; toutes les valeurs migrent dans une colonne unique. Bref, nous avons l’architecture de base d’un graphe de réseau avec une source, une cible et une valeur indicative de la relation.

Matrice_MeltIl suffit de rouvrir le document dans Gephi pour obtenir rapidement un réseau de bonne taille. Nous activons la reconnaissance des « clusters » et procédons au rapprochement des ensembles de nœuds liés… et voilà :ReseauBerlioz

Le graphe des noms communs comprend au total une petite dizaine de grands ensembles sémantiques. Nous allons successivement zoomer sur les principaux. Le gros ensemble du haut correspond clairement aux compte-rendu d’opéra (ce qui corrobore mon intuition que les ensembles sémantiques tendent à se recouper en ensembles stylistiques). Il se découpe en deux sous-ensembles : les personnages (en orange) et un magma plus indistinct comprenant les lieux les objets et, plus vaguement, des éléments d’intrigues (en rose). Même si on peut considérer que cette classification recoupe en partie les subdivisions classiques des analyses des entités nommées entre personnes et lieux, la tournure qu’elle prend est définitivement spécifique au corpus étudié : la nature des intrigues d’opéra est déterminante dans l’articulation entre les entités.ReseauBerliozOpera

Un peu plus loin, nous glissons sur un groupement plus inhabituel (que je qualifierai de « sentiments »). À nouveau il ne s’agit pas de sentiments en général, mais bien de « sentiments dans la perspective d’une description de la réception musicale vers le milieu du XIXe siècle ». D’où le primat accordé à des qualificatifs ayant une connotation musicale intrinsèque (même si elle peut dériver vers le « sentimental ») : « harmonique », « accentuation », « lenteur », « intonation », « hardiesse »…ReseauBerliozSentiment

Un dernier ensemble intéressant a trait à la description musicale. Il se subdivise à son tour en des sous-ensembles plus nettement sémantiques : l’un, en bleu, est axé sur la description musicale formelle (d’où les notes et les qualificatifs spécialisés), l’autre (en gris) s’oriente vers la performance musicale. Il tend d’ailleurs à s’éfiler vers un autre mini-réseau (non représenté ici) où se concentrent les formes d’institutions (philharmonies, etc.).ReseauBerliozMusique

Il est également possible de faire des « zooms » (même si ma méthode est pour l’instant un peu tortueuse : j’extrais la liste des mots intégrés dans les clusters de Gephi qui m’intéressent ; puis histoire d’approfondir un peu le réseau je reviens chercher des termes proches via Gensim). Pour les sentiments cela donne ceci :ReseauBerliozSentimentZoom

On voit que le groupe peut être à son tour subdivisé en plusieurs sous-groupe selon que le sentiment vise à rendre directement compte d’une idée musicale (c’est très net en violet, en haut) ou qu’il s’inscrit dans la cadre d’une phraséologie romantique plus générale (le groupe en bleu plus foncé autour de « mélancolie » viendrait bien dans ce cadre).

Quelques perspectives

Au terme de cette petite exploration, je suis assez convaincu que les vecteurs de mots vont s’imposer parmi l’une des mesures privilégiées pour qualifier et documenter les textes. Même s’ils apparaissent opaques, ces réductions présentent les mêmes avantages que les fichiers ZIP : ils permettent de transmettre en prenant une place très réduite un grand nombre d’informations sur un corpus. Certains digital humanists ont déjà commencé à envisager ce tournant : Ryan Heuser (du Literary Lab de Stanford) vient de publier un fichier référençant les vecteurs correspondant à 150 000 ouvrages anglais du XVIIIe siècle ; il pèse 40 mo (alors que l’étalon du corpus d’origine doit être de l’ordre de la centaine de gigaoctet).

Je serai prêt à parier que dans les dix prochaines années, les langages de références d’éditorialisation scientifique des textes (comme TEI) intègreront des balises spécialisés pour relier des termes aux vecteurs de mots correspondants.

D’ici là, plusieurs problèmes (qui sont autant de défis) restent à résoudre :

1) Pouvoir comparer des vecteurs de mots distincts. C’est évidemment sympathique de pouvoir distribuer des représentations légères de corpus volumineux mais ce serait bien mieux d’arriver à les croiser. Si jamais je déportais mon attention sur la presse anglaise du XVIIIe siècle (cela m’est déjà arrivé ponctuellement par le passé…) je serai sans doute très heureux de confronter mes résultats avec ceux obtenus par Ryan Heuser sur la littérature de la même époque (ce qui permettrait notamment de différencier les ensembles sémantiques privilégiés par des productions textuelles différentes). Et c’est envisageable… depuis un mois (quand on vous dit que la recherche sur le sujet avance vite). Depuis le 8 août, un nouvelle recherche sur l’évolution du vocabulaire dans les corpus de Google Books présente une méthode pour recroiser des word embeddings issues de corpus distinct (apparemment ça marche même lorsque la méthode est différente). La manipulation porte le doux nom de Procruste Orthogonal et n’a pas l’air très compliquée à implémenter. Les programmes du projet ont été publiés sur Github (et incluent notamment une version en Python à destination de corpus de plus petite taille).

Exemples de dérives sémantiques avec des word embeddings.
Exemples de dérives sémantiques avec des word embeddings.

Il y a un corollaire à cette difficulté : résoudre l’ambiguïté des termes. Comme les applications utilisées travaillent à partir de mots bruts, il n’y a pas de ressources externes pour résoudre les homonymies et, plus largement, les polysémies. L’information est néanmoins vraisemblablement présente dans les word embeddings : l’extension de Ben Schmidt pour R inclut ainsi une fonction pour effectuer un « rejet du vecteur » ; ainsi pour le mot anglais « bank » qui indique aussi bien une rive qu’une banque, il est possible de corriger les données du vecteurs qui s’oriente vers la finance, et vice versa, pour aboutir à terme à deux vecteurs distincts. Schmidt présente une application très intéressante de cette fonction : évaluer l’influence du genre sur la signification de qualificatifs. L’image ci-dessous, un ensemble d’adjectifs similaires à bossy selon que les contextes « féminins » (marqués par l’utilisation de « her » ou « she ») sont conservés ou non.unnamed-chunk-10-12) Automatiser autant que possible l’ensemble du processus. L’essai de méthode que j’ai tenté de développer est problématique à cet égard : on passe par plusieurs couches d’évaluation probabiliste avec le risque de détériorer à chaque fois davantage les résultats (soit sucessivement : Word2Vec —> Talismane (pour la sélection, pas toujours parfaite des catégories grammaticales) —> Gephi (pour la détection des clusters de mots). Et le jugement humain est toujours nécessaire en sortie pour identifier à quelle « famille » les groupes d’entités correspondent. Pour cette dernière étape, je réfléchis actuellement à deux pistes :

  • S’agissant des noms communs : confronter les termes à des ontologies comme Wordnet. Il devrait être possible d’indiquer a minima le champ lexical global des termes même si l’on perdra sans doute de l’information au passage (peu de chance de la dimension opéraique des clusters de lieu et de personne chez Berlioz soit réellement conservée).
  • Pour les noms de personne, sous réserve qu’ils soient suffisamment connus, Wikidata pourrait faire l’affaire. Avec suffisamment de termes, il devrait être possible de contourner les homonymies (s’il existe clairement plusieurs Weber, le Weber entouré de Beethoven, Liszt et Haydn est très probablement le musicien).

Si j’insiste autant sur l’automatisation, c’est que je pressens que les words embeddings vont surtout trouver leur utilité dans les corpus peu étudiés. Leur apport pour comprendre l’écriture musicale de Berlioz (déjà bien connue) reste assez limitée. Par contre, ils peuvent constituer des outils d’exploration déterminants pour des collections méconnues. Or, c’est ce type de texte qui va graduellement irriguer le web à grande échelle : les journaux et les périodiques commencent tout juste à rentrer en masse ; dès que la reconnaissance des caractères sera au point (et, à nouveau, on attend les réseaux de neurones au tournant) on pourra s’attaquer peut-être aux archives manuscrites.

3) Ouvrir les réseaux de neurones et lever une partie de l’opacité entourant leurs méthodes de sélection. S’agissant de Word2Vec plusieurs initiatives ont commencé à s’y employer (j’avais un moment mis la main sur une amusante visualisation interactive en Javascript mais je n’arrive plus à la retrouver…). Dans le fil de mes analyses du réseau Berlioz, je me suis amusé à tenter d’évaluer les « affinités » entre les dimensions (arbitraires) du vecteur. Je soupçonne que, en accord avec l’architecture classique d’un réseau de neurones, chaque dimension pourrait être rattachée à un plus grand ensemble. L’illustration ci-dessous représente le résultat d’une matrice d’affinité non pas entre les mots mais entre les dimensions : même si l’ensemble paraît assez désordonné les affinités tendent à se grouper en « régions » de plus grande ampleur (pour clarifier ces clusters, les classes ont été ordonnées selon une mesure d’ordered dissimilarity image (ODI) inclue dans l’extension factorExtra de R).

DistClasseNNOrderedPour approfondir la question, j’ai entrepris de sélectionner les mots qui avaient le plus haut coefficient au sein de certaines dimensions. Sans trop de surprise, on retrouve des thèmes cohérents (mais pas systématiquement). La dimension 8 stocke ainsi (en positif), une bonne partie du vocabulaire lié au champ lexical de « l’intrigue d’opéra » : main, amour, cœur, esprit, mort, ami, père, âme, fils, bruit, tour, côté, mariage, génie, frère… Par contre, l’axe positif/négatif de chaque dimension ne semble pas renvoyer à des sens concrets ou alors à la rigueur, selon une méthode parfois employée dans le topic modeling il fait allusion à des termes « repoussoirs » qui exclut l’activation de cette dimension. Au revers de la dimension 8, nous trouvons ainsi : mais, an, personne, en_outre, mois, dix, neuf, extrêmement, admirablement, rubini…

Si le réseau pouvait également nous envoyer directement des signaux de bas niveau, l’automatisation du processus deviendrait sans doute plus fiable : au lieu de reconstituer des « clusters » a posteriori sur Gephi on pourrait simplement récupérer ceux qui étaient déjà là a priori.

4) Et le deep learning ? Comme je le précisais déjà plus haut, Word2Vec ne représente que du shallow learning (de l’apprentissage léger avec peu d’étapes intermédiaires). Le deep learning appliqué au texte reste pour l’instant de l’ordre de la perspective inaboutie. le véritable défi consisterait à développer des interfaces adaptés. Pour les images, l’architecture actuellement utilisée (et initialement développée par Yann Le Cun) est très spécifique : l’unité de départ est un carré de x sur y pixels, soit littéralement un morceau d’image.

Word2Vec ne pioche pas véritablement de morceau de textes : s’il y a des bouts de contexte (les séries de 5 à 10 mots), l’ordre dans lequel les mots apparaissent n’a aucune importance. Une partie des recherches actuellement en cours visent à intégrer au moins la dimension du « paragraphe » comme entité signifiante ; FastText intègre de son côté un système parallèle de reconnaissance syntaxique (en conservant des subdivisions du mot de plus bas niveau, de 3 à 6 lettres).

Il serait sans doute souhaitable d’intégrer encore d’autres dimensions du texte, telles que la syntaxe (vu que les réseaux de neurone ne brillent pas spécialement dans ce domaine), les entités nommées (lorsqu’elles sont correctement étiquetées, comme le permet le langage TEI), les structures éditoriales (titre, page, chapitre, section…), le voisinages des images (avec, pourquoi pas, des systèmes de reconnaissance d’image et de texte fonctionnant en synergie), voire le vaste monde des métadonnées (ce qui prendrait tout son sens pour étudier des corpus composites comme la presse où cohabitent auteurs, sociabilités et régimes de discours éminemment distincts…).

Évidemment l’intégration de tous ces éléments requerrait des architectures bien plus complexes reposant par exemple sur l’articulation de plusieurs couches distinctes de neurones en entrer,. Et pour de ce texte « riche » des enseignements suffisamment cohérent, nous n’avons sans doute pas trop le choix que de gagner en « profondeur », de faire circuler l’information au travers d’un grand nombre de couches de neurones et, par généralisations successives, aboutir à des vecteurs de mots sans doute beaucoup plus riches et pertinents que ceux dont nous disposons aujourd’hui.

  1. En fait il s’agit d’un peu plus qu’un analogue : l’une des techniques fondamentales de réduction, le codage de Huffman, se retrouve dans Word2Vec afin de diminuer les temps de traitement pour les termes les plus courants
  2. Je ne vais pas rentrer dans ces détails, mais il convient de signaler que pour mener à bien ce processus de sculpture, Word2Vec peut utiliser deux modèles différents : le « sac de mots » (où un mot est prédit à partir de ses voisins) et le skip-gram (qui marche à l’inverse : un mot doit prédire ses voisins).
  3. En toute honnêteté, la liaison ne marche à tous les coups : ici j’ai utilisé un modèle avec un « contexte » de 5 mots (sur cette histoire de contexte, voir plus loin…) ; avec 10 mots, cela ne marchait plus. Cette variabilité des résultats est l’une des principales faiblesses de Word2Vec
  4. Je simplifie volontairement : il ne s’agit pas d’une soustraction simple
  5. Pour une description très détaillée du fonctionnement des réseaux de neurones artificiels je recommande l’excellent Neural Network and Deep Learning de Michael Nielsen. À noter que, le ratio de mot activés/mots passifs étant très faible pour chaque série contextuelle, Word2Vec emploie un modèle probabiliste : les 5 à 10 mots vont être confrontés à une série de mots prise au hasard. Comme l’opération est renouvelée à plusieurs reprises (on parle alors d’epochs), cette sélection aléatoire en vient à constituer une représentation valable du corpus en général…
  6. Ce n’est pas dit clairement mais dans le corps de l’article la nouvelle méthode est contrastée avec les réseaux de neurones
❌