• Aucun résultat trouvé

Chapitre 6. Les éléments de conception du LICI

6.3. Réalisation technique du LICI

Une fois le cahier des charges et les contraintes connues et avant de me lancer dans la réalisation du logiciel, j'ai dû déterminer les outils techniques de programmation que j'allais utiliser. J'ai opté pour le langage de programmation Python, avec lequel j'avais déjà développé des programmes de TAL lors de mes stages de Master et pour lequel j'avais connaissance de projets de programmation et de regroupement de fonctions qui me seraient utiles.

6.3.1. Le langage Python

Le LICI est programmé en langage Python. Python est un langage orienté objet qui est parfaitement adapté aux usages du domaine du TAL. De plus, de nombreuses bibliothèques

Les éléments de conception du LICI

de fonctions Python (appelées modules) écrites par la communauté des chercheurs et développeurs en TAL ont été utiles pour le développement de l’outil LICI, comme je vais l’expliquer par la suite.

6.3.1.1. Caractéristiques du langage

Python est un langage de programmation qui présente plusieurs caractéristiques particulières. C’est un langage interprété, c’est-à-dire que les instructions inscrites dans le programme sont traitées au fur et à mesure de leur lecture par la machine. Au contraire, la majorité des langages de programmation utilisés sont dits « compilés », ce qui implique une étape intermédiaire de traduction du code écrit par le programmeur vers le langage machine, interprétable par l’ordinateur. De part cette absence de compilation Python est plus souple à utiliser mais aussi plus portable, c’est-à-dire que le code en Python peut facilement être repris sous différents systèmes d’exploitation, et même inclus à l’intérieur d’un programme codé dans un langage différent. C’est le cas pour la barre d’outils Médialexie, codée en langage C, dans laquelle le code du LICI pouvait donc être intégré facilement. D’un autre côté, un programme écrit dans un langage compilé s’exécute beaucoup plus rapidement que dans un langage interprété. Dans le cas du LICI, le temps d’exécution reste très court si le texte traité est court (moins d’une seconde pour le type de texte ciblé par le programme tels que les textes de manuels scolaires et les articles informatifs ou explicatifs).

6.3.1.2. Version

Le LICI a été développé sous la version 2.6.6 de Python. Cette version est désormais obsolète mais on peut encore la télécharger depuis le site officiel. Ce choix de version est dû à l’utilisation du module de fonctions NLTK, que je présenterai dans le point suivant. Ce module n'avait pas encore été adapté pour la version 3.0 de Python à la date de commencement du projet. L'usage de la bonne version est indispensable car à partir de Python 3.0 la compatibilité ascendante n’est plus respectée, ce qui veut dire qu'un programme développé sous Python 2.6.6 ne fonctionnera pas nécessairement sous Python 3.0, sans effectuer des modifications. J’ai donc continué le développement durant tout le projet avec la version choisie au départ afin d’éviter les problèmes de compatibilités qui surviennent, par exemple, lorsqu’une fonction générique change de nom entre deux versions ou alors qu’elle ne fonctionne plus exactement de la même manière (par exemple si elle fait appel à d’autres fonctions qui ont changées de nom ou qu’elle ne renvoie plus le même type de données en sortie). De plus, la documentation sur les fonctions de NLTK, qui m’a été utile pour gagner du temps lors du développement, se référait à la version 2.6 de Python.

6.3.2. Les bibliothèques

6.3.2.1. NLTK

NLTK (Natural Language Tool Kit) est une bibliothèque de modules pour la programmation en Python développée par Steven Bird, elle contient un grand nombre de fonctions spécifiques au domaine du TAL. Celles-ci sont présentées dans le livre "Natural Language Processing with Python" (Bird, Klein & Loper, 2009). De plus, le projet NLTK ne se limite pas aux modules en Python, puisque le site internet propose également des données langagières (tels des livres de grands auteurs de la littérature anglo-saxonne), accompagnés de métadonnées, de documentation concernant la recherche déjà effectuée sur ces données et enfin des pistes d’analyses, c’est-à-dire tous les éléments d’un corpus prêt à l’usage pour un chercheur en linguistique.

Les fonctions développées pour le projet NLTK sont regroupées en modules. Ces modules sont cohérents et contiennent les fonctions dédiées au traitement d’un problème précis. De plus, d’autres fonctions permettant de traiter des problèmes connexes sont parfois ajoutées aux modules. Pour utiliser n’importe quelle fonction comprise dans un module NLTK, une fois la bibliothèque installée, il suffit de l’appeler dans le programme avec la commande : import nltk

Afin de bénéficier de toutes les fonctions contenues dans cette bibliothèque, et notamment pour celles que j’ai utilisées pour le développement du LICI, il est également nécessaire d'installer YALM et Numpy, qui sont d’autres bibliothèques de fonctions, avant d'installer NLTK.

La version de NLTK que j’ai utilisée pour le développement du LICI est la version 2.0.1 (Bird, 2012). Il a aussi été nécessaire d’utiliser la version 32 bits (x86 et pas x86-64), même sur un ordinateur 64 bits, car la version de Numpy qui est compatible avec NLTK n'existait pas en 64 bits. Ces précisions sont essentielles car il sera nécessaire de respecter ces choix de versions pour toute reprise ou modification avenir du code du LICI.

En plus de ces recommandations, lors de la première utilisation de NLTK, il est aussi nécessaire de télécharger les ressources de bases dont certaines sont appelées par le programme LICI. La commande pour ce faire est la suivante :

nltk.download()

6.3.2.2. YALM

YALM (Simonov, 2012) est une bibliothèque de segmentation de texte, indispensable pour exécuter NLTK, il faut l'installer en préalable. Il faut choisir la version adaptée à Python 2.6, en 32bits.

Les éléments de conception du LICI

6.3.2.3. Numpy

Numpy (Charris208, Jarrodmillman, Kern, Rgommers & Teoliphant, 2014) est une bibliothèque de fonctions de calculs permettant de manipuler des matrices et des tableaux, elle est indispensable à l’exécution de certaines fonctions de NLTK. La version de Numpy utilisée par le LICI est la version 1.8.2 pour Python 2.6.

6.3.3. Génération de l'exécutable

La version exécutable du programme, une fois celui-ci terminé a été générée avec le logiciel Py2exe (Jretz, Mhammond, & Theller, 2008). Il est là aussi indispensable d’utiliser la version de ce programme compatible avec Python 2.6 et toujours de choisir la version 32 bits.