Perl pour les linguistes

Introduction

Cet ouvrage de programmation en Perl s'adresse aux linguistes et à tous ceux qui ont besoin d'explorer et d'exploiter des données langagières volumineuses. Il a pour objectif de leur proposer des méthodes et des techniques informatisées permettant de réaliser ces tâches avec plus d'efficacité, plus de systématicité et sur des quantités de données plus grandes. Ils y apprendront les règles d'utilisation et de construction de programmes informatiques dédiés à la manipulation de textes, de lexiques, et de toute ressource langagière qu'ils souhaitent utiliser dans le cadre de leur activité scientifique.

Ce livre est accessible à tous, y compris à ceux qui n'ont aucune formation en informatique ou en programmation. Le lecteur y est guidé pas à pas, notamment dans la première partie consacrée aux aspects techniques de base.

A quel linguiste s'adresse cet ouvrage ?

Ce livre est destiné au linguiste qui souhaite travailler sur des données avec un ordinateur plutôt que manuellement. Le linguiste visé ici est avant tout celui qui est déjà convaincu que l'étude du langage nécessite un recours à des attestations ou à des ressources extensives. Il trouvera dans cet ouvrage un tour d'horizon des ressources disponibles, des traitements fondamentaux qui permettent de les manipuler, et des techniques informatiques de base qui en facilitent l'exploitation.

Le livre peut également être utile aux linguistes qui s'intéressent aux aspects plus formels de l'étude du langage. Les spécialistes de linguistique formelle et de statistique lexicale ou textuelle ont en effet besoin d'alimenter leurs modèles avec des données et de les confronter à ces dernières. L'ouvrage propose des techniques directement utilisables pour gérer ces données, voire automatiser certains calculs complexes.

Les informaticiens linguistes qui travaillent sur le traitement automatique des langues et en ingénierie linguistique peuvent pour leur part être intéressés par les avantages que possède Perl sur d'autres langages de programmation pour la manipulation des données langagières. Le livre présente notamment les techniques qui font la spécificité de Perl et qui permettent de développer très rapidement des prototypes d'applications, mais aussi d'écrire ces petits traitements de données qu'un logiciel plus complexe nécessite bien souvent en amont.

Plus généralement, les linguistes peuvent découvrir dans ce livre les différentes façons d'envisager un travail sur des données, la richesse des ressources et des techniques disponibles, et tout ce que peut leur apporter l'utilisation des outils informatiques.

Pourquoi apprendre la programmation quand on est linguiste ?

Il peut paraître superflu pour un linguiste d'acquérir une compétence aussi pointue que la connaissance d'un langage de programmation. Cette activité, réputée aride, dévoreuse de temps et génératrice de frustrations, paraît en effet faire double emploi avec l'utilisation des nombreux outils informatiques disponibles qui permettent d'analyser, de fouiller, de calculer et de produire des données langagières.

La première réponse est simple : l'étendue des besoins est telle qu'aucun outil préconçu ne peut prétendre y répondre. Nombre d'études linguistiques font de fait souvent appel à plusieurs outils (Benoît Habert parle d'instruments dans [Habert05]), qu'il est alors nécessaire de maîtriser et de savoir articuler pour arriver à ses fins. Alors que dans bien des cas, un programme conçu spécifiquement peut simplifier le travail. De même, l'utilisation de deux applications préconçues nécessite systématiquement d'adapter les productions de l'une aux exigences de l'autre. Ceci entraîne le développement de ces petits programmes rapidement écrits et encore plus vite oubliés que le jargon nomme affectueusement moulinettes.

La deuxième réponse concerne les données elles-mêmes, et la multiplicité de leurs formats (c'est-à-dire des types d'informations qu'ils contiennent et de leurs organisations) que la disponibilité via le Web ne fait qu'accroître. Il devient rapidement nécessaire d'adapter à chaque nouveau corpus ou nouveau texte au moins une partie d'un traitement automatisé. Il faut, en plus d'une connaissance des différents formats et des problèmes liés à chacun, disposer de moyens rapides de s'y adapter.

La troisième réponse ne se formule pas en termes d'utilité directe, mais revendique que l'apprentissage de la programmation est en soi une ouverture sur de nouvelles façons d'aborder et de résoudre un problème, qui peut se révéler fructueuse dans l'étude du langage.

Pourquoi choisir le langage Perl ?

Le choix d'un langage de programmation a toujours été une opération délicate qui doit être guidée par les besoins de l'utilisateur.

Le linguiste a tout d'abord besoin de manipuler des données textuelles. Ces traitements sont assez ciblés : il s'agit essentiellement d'exploiter des fichiers de données, d'en extraire des séquences de caractères, de les manipuler, de les comparer, de les trier, de les compter, etc. Il faut donc disposer de méthodes performantes et efficaces permettant d'aborder facilement différents types de situations, et de gérer des volumes de données parfois très importants.

Dans de nombreux cas, par exemple lorsqu'il s'agit d'adapter un traitement à un type de données spécifique, les opérations effectuées par un programme ne sont exécutées qu'une fois ou deux : il est alors important de pouvoir réaliser rapidement un programme donné, même si celui-ci pourrait être amélioré, pourvu qu'il réponde aux besoins exprimés.

Enfin, le type de programmation dont un linguiste a besoin doit être économe en moyens techniques et ne pas nécessiter un environnement informatique sophistiqué : un langage dont les outils de développements sont gratuits et disponibles sous tous les types de plate-forme aura ici un avantage.

Ces trois exigences font de Perl le candidat retenu : initialement conçu pour la gestion de la documentation électronique, il dispose de toutes les fonctionnalités nécessaires à la manipulation de données linguistiques, notamment grâce à la puissance de ses expressions régulières (voir chapitre 4). Langage de script (voir chapitre 3), il ne nécessite pas de phase de compilation préalable et dispose de plus d'une syntaxe très souple et concise. Proposé gratuitement et pour tous les systèmes d'exploitation (voir chapitre 2), il ne nécessite aucun investissement en termes d'équipement ou de logiciels autre qu'un ordinateur PC ou Mac.

Que va-t-on apprendre à faire avec Perl ?

Si le champ d'application des techniques présentées dans cet ouvrage se veut le plus large possible, nous nous concentrerons sur des opérations fondamentales.

Les premières manipulations concernent des opérations de flexion automatique, de recherche dans les textes de mots ou de séquences de mots, et de calculs de fréquence. Toutes ces opérations permettent, en réappliquant leurs mécanismes, d'aborder nombre d'études d'un corpus de textes écrits comme l'analyse du vocabulaire ou l'étude de certaines constructions syntaxiques. L'outil informatique a alors comme rôle principal de permettre un examen rapide et exhaustif d'un ensemble de phénomènes linguistiques.

L'accent est également mis sur les manipulations de ressources lexicales, que ce soit pour des approches morphologiques comme l'étude d'un suffixe, ou pour l'acquisition de ressources (comme une liste de néologismes) à partir d'un corpus.

Nous aborderons à plusieurs reprises la prise en compte de différents formats de données, notamment pour tirer partie (et produire) des textes annotés, et aborder l'utilisation du Web comme source de données.

Tous les exemples développés portent sur le français, mais ils sont applicables sans modifications majeures à d'autres langues (les limites étant ici la disponibilité des ressources et les difficultés techniques liées à la manipulation d'écritures non alphabétiques).

Des applications plus complexes (pouvant se rapprocher des techniques plus sophistiquées relevant du traitement automatique des langues) peuvent tout à fait être envisagées sur la base des savoir-faire fondamentaux présentés ici.

Mise en route et utilisation de l'ouvrage

La lecture de cet ouvrage doit être perçue comme un accompagnement à une découverte pratique des différentes méthodes présentées. L'ensemble des programmes et des exemples de données qu'ils permettent de manipuler sont mis à disposition sur ce site. Le chapitre 2 détaille les différentes étapes complémentaires afin d'obtenir un environnement de travail complet. Le lecteur néophyte en programmation est bien sûr invité à lire cet ouvrage dans l'ordre prévu. Ceux qui souhaitent simplement résoudre un problème spécifique sans acquérir au préalable un savoir-faire en programmation peuvent se rendre directement au chapitre correspondant à la problématique qui les intéresse. Une liste des différents programmes détaillés dans l'ouvrage est disponible ici.

Remerciements

Merci à Fiammetta Namer pour l'énergie qu'elle a insufflée dans le démarrage de ce travail, et pour son enthousiasme dans nos nombreuses collaborations. Merci aux membres de l'équipe de recherche CLLE-ERSS pour leurs relectures, commentaires et encouragements, et plus particulièrement à Didier Bourigault, Gilles Boyé, Cécile Fabre, Edith Galy, Aurélie Picton et Franck Sajous.