Python a été écrit en 1990 par Guido Van Rossum à l’Université d’Amsterdam. Il est revendiqué comme libre de droit. La licence Python l’expose compatible GPL et l’article wikipédia le dit proche de la BSD. Il s’inscrit ainsi dans la philosophie du logiciel libre, consistant à ouvrir le code source pour laisser toute possibilité d’adaptation, d’amélioration et dans une certaine mesure d’appropriation. Il sert à de nombreux types d'applications, comme le logiciel libre de 3D, Blender, et le site officiel met en avant son utilisation dans des réalisations par la Nasa ou Google.
Il est généralement comparé à d’autres langages comme Java ou Perl. Des sites dédiés et des articles font état du classement des langages, (most popular programming languages), et situent Python dans les dix plus utilisés. Les hébergeurs de site les plus connus le proposent aux côtés de Perl et de PHP pour l’exécution de script côté serveur (pour la version 2.x). Ce dernier n’est pas nécessairement en concurrence, notamment parce que Python est plus généraliste qu’un PHP plus spécifique à Internet. Même si Python est moins à l’aise avec Internet, avec moins de fonctions natives consacrées à cet environnement que PHP, il permet de développer un même programme pour en faire un logiciel instalable et une application en ligne. En prenant en compte quelques éléments (les versions de Python, l’entête d’identification et l’affichage HTML du programme, et les ressources de la machine sollicitée), un même code en .py s’exécute sur Linux, sur Windows, avec une interface graphique, se compile en un exécutable Windows .exe ou tourne en tâche de fond sur un serveur distant Linux.
Des documentations bien conçues et en français existent format PDF, pour l’initiation, en synthèse, et pour des approches plus approfondies. C’est cette documentation qui a servi pour la création de notre programme de catégorisation. Son installation et son lancement sont simples, et, comme les langages Basic équipant les micro-ordinateurs des années 80 ou le DOS, une saisie peut s’opérer dans une console, ce qui permet de tester des lignes de commandes sans avoir à sauvegarder et lancer un programme.
Ses points faibles sont sa lenteur, qui concerne malheureusement tous les langages non compilés, c'est-à-dire à l'inverse de C++ ou Java, qui se chargent eux-même de la compilation, encore que ce dernier soit loin d'être une référence en la matière. L'on pourrait évoquer la difficulté d’installation et d’exploitation de certains modules (Gadfly pour les bases de données, PyExe pour en faire un exécutable sous Windows) à l'opposé de la facilité d'autres librairies (Re pour les expressions régulières, TKinter pour le graphisme), les quelques ratés de compatibilité d'une version à l'autre, problème récurrent de tout langage de programmation, que cependant l'accès libre permet parfois de résoudre. Question encore d'actualité, avec les ratés entre PHP version 4 et 5, ou la dernière version de Python, la 3.x. (actuellement la 3.2.) qui est remaniement des fondements du langage. Il faut espérer une transition sans trop de difficulté pour les applications déjà existantes afin d’éviter la coexistence de deux Python. Les évolutions de la version 2.x paraissent avoir cessé avec la 2.7.2. de juin 2011.
Sa syntaxe apparaît simple, ainsi à vocation pédagogique, et n’est pas sans rappeler le Basic, dont le prototype de Python, le langage ABC, se concevait d’ailleurs comme son successeur. L’écriture du code est indentée et offre donc une clarté dans la mise en page, facilitant la recherche d’informations et la compréhension du programme par un tiers. Ce qui se révèle particulièrement intéressant pour améliorer un système qui est expérimental et qui nécessite d’être constamment mis à l'épreuve. Si elle est aussi source de certaines erreurs et de peu d'amplitude, elle est à l’usage simple et pratique, et s’assortit assez bien avec l’esprit de la programmation objet, suggérant l’écriture de procédures courtes.
Python est orienté objet, c’est-à-dire facilitant la réutilisation de morceaux du programme aux fonctions similaires, évitant la réécriture permanente, une architecture trop linéaire, et donc la surcharge dans la rédaction. Elle permet d’envisager une programmation modulaire et la fabrication de logiciels importants par la taille. Les versions récentes de langages comme PHP (5) ou Perl l'ont intégrée ou développée. Si l’orientation objet est native en Python, à savoir inhérente au langage, elle n’est pas un handicap à la rédaction de programmes, contrairement par exemple à JavaScript qui implique de se familiariser assez rapidement avec le concept d'association des méthodes à leur objet. Il s'agit d'une caractéristique de ce langage : la programmation multi-paradigme, qui laisse une liberté de stratégie pour la rédaction du code.
Le principe des chaînes de caractères et des listes est décrit afin d’illustrer les phases de catégorisation, comme le découpage du texte en mot. L'écriture repose entièrement sur les crochets. Cette convention est plus souple que C++ ou PHP, qui supposent de définir l'équivalent des listes : les tableaux, en array.
Les chaînes (§ 2.1.) traitent la forme de caractère en caractère, où la notion de mot est absente, puisque le texte est considéré comme un bloc de lettres. Les expressions (§ 2.2.) sont des chaînes à multiples paradigmes, permettant d'effectuer des manipulations complexes de lettres et de groupes de lettres (et donc atteindre le niveau du mot). Les listes (§ 2.3.) traitent une forme comme un bloc de caractères, forme par forme, autrement dit en mots ou en syntagmes. Les chaînes et les listes peuvent être imbriquées, pour gérer autant le détail d’une forme que la forme elle-même par rapport à d’autres. Les listes imbriquées sont aussi appelées tableau multi-dimensionnel.
Ce sont ces niveaux de manipulations qui vont permettre de matérialiser tous les morceaux d’opérations pour un traitement global du texte. L’important pour la linguistique est de retenir les concepts de métaplasme (modification de la chaîne) de niveau syntagmatique (liste) d'arborescence (liste imbriquée) et de basculement (passage de la liste à la chaîne), et retrouver ainsi les différents niveaux d’analyse du texte, du morphème (chaîne) à la phrase (liste).
| |
|
L’extraction d’information nous permet par exemple de demander les trois derniers caractères de la dernière forme, un suffixe : l’instruction b[3][-3:] affiche « age ». La première information est son rang dans la liste, à partir de zéro et la seconde est son rang dans la chaîne en partant de la fin. Il s'agit d'une apocope, mais comme la suppression des graphèmes ne tient pas compte de la phonétique, la tranche peut-être arbitraire.
Exemple rare de compatibilité entre instructions de base d’un langage de programmation, une expression régulière est identique ou s’adapte facilement en Perl, en PHP ou en Python.
| |
|
La première ligne est l'importation du module des expressions régulières. La ligne suivante demande de chercher n'importe quel décimal à deux chiffres suivi d'un « h » puis de deux autres décimaux. Si cela est le cas, il est affiche « trouvé ! ». Le u (pour unicode) après l'instruction search spécifie que la chaîne peut contenir des accents.
| |
|
Pour traiter par exemple les sigles : la ligne 5 demande de repérer n’importe quel caractère précédé d'un espace suivi d’un point, puis la suivante de reprendre ce caractère et ce point pour en changer juste le point en dièse. L’intérêt est de ne pas simplement remplacer tous les points mais seulement un caractère plus un point.
| |
|
|
|
|
Nous entrons à la ligne 1 une variable a possédant les valeurs « python » et « 2.4 », qui correspondront respectivement aux positions 0 et 1. La ligne 2 inclut a dans b pour les valeurs « python » « 2.5 » en position 0, et « est », « un », « langage » respectivement en postion 1, 2 et 3. À la ligne 3, la demande d'affichage de b nous donne donc les valeurs avec une liste imbriquée. À la ligne 6, l'affichage de b pour la seule position zéro donne les deux valeurs. À la ligne suivante est demandée à l'intérieur de cette liste une autre position, celle à 1, et affiche donc « 2.5 » à la ligne 8.
| |
|
La ligne 1 contient le format d'une étiquette pour notre programme de catégorisation. En première position se trouve la forme, puis la nature, c'est-à-dire le lemme et sa classe, ensuite, en troisième, son marqueur, et enfin une éventuelle information, ici par défaut neutre. La ligne 2 appelle la position de la forme, et la 4, celle de la classe. C'est à partir de cette étiquette que vont s’appliquer les règles et que vont être éliminées les autres natures (ou choisie la bonne).
|
|
|
Un basculement s’effectue entre le niveau chaîne et le niveau liste pour par exemple transformer « python », « est », « un », « langage » en « python est un langage », et vice versa, disponible dans le module string. Le point de repère pour le découpage ou la soudure est par défaut l’espace, et peut être défini, par exemple le point-virgule : string.split(c,";").
|
|
|
Une fois l’énoncé découpé en liste, il est possible de manipuler celle-ci, puis de revenir à une chaîne. La première instruction insère une chaîne numérique dans la liste, la deuxième ajoute les points de suspension en fin de liste, puis la troisième ligne la ramène à une chaîne. Les lignes 2 et 3 montrent aussi une syntaxe un peu différente, correspondant respectivement à d[len(d):]=["..."] et à d=string.join(d).
|
|
|
La manipulation de listes a aussi lieu avec son parcours. C’est cette phase qui nécessite le plus de temps et qui doit retenir l’attention pour pallier la difficulté, différenciant vraisemblablement une programmation de moindre qualité qui déroule systématiquement le corpus, d’une rédaction plus fine qui se rend là où l’information est la plus pertinente, évitant ainsi que la boucle ne passe par de nombreuses phases de vides.
L’instruction va afficher chaque valeur de g, c’est-à-dire chaque forme de la variable b. La virgule accrochant simplement la forme précédente.
Installation, détaillée, (Calogero Gigante) « Gigante »
http://www.gigante.be/index.php/site/art/3/installation_de_python_sous_vista
Installation, synthétique, (Guillaume Duriaud) « Développez.com »
http://guigui.developpez.com/Tutoriel/Python/PythonWindows/
Cours débutant, (Gérard Swinnen) « Inforef »
http://inforef.be/swi/python.htm
Cours pédagogique, (6pri1 et prolixe) « Site du Zéro »
http://www.siteduzero.com/tutoriel-3-223267-apprendre-python.html
Cours synthétique, (Jérôme Tschanz) « Ceramiko »
http://python.50webs.com/
Cours approfondi, (Mark Pilgrim & Alexandre Drahon) « Plongez au coeur de Python »
http://diveintopython.adrahon.org/
Documentation officielle traduite, (Olivier Berger) « olivierberger »
http://olivierberger.org/python/
Liens, « Python-eggs »
http://www.python-eggs.org/links.html
Tutoriels, « Développez.com »
http://python.developpez.com/
Officiel, en anglais « Python.org »
http://www.python.org
Association Francophone PYthon, « AFPY »
http://afpy.org/
FAQ, « Développez.com »
http://python.developpez.com/faq/?page=sommaire/
IAQ, Infrequently Answered Questions, en anglais « Peter Norvig »
http://www.norvig.com/python-iaq.html
Astuces et divers codes, « Wikipython »
http://wikipython.flibuste.net/
Initiation et réalisations en vidéo, « Pythonneries »
http://www.dailymotion.com/user/pythonneries/1
Description détaillée, en anglais « Regular expression operations »
http://docs.python.org/library/re.html
Description synthétique, en anglais « Regular expressions »
http://www.regular-expressions.info/python.html
Approfondi, (A.M. Kuchling) en anglais « Regular Expression HOWTO »
http://docs.python.org/howto/regex.html
Exemples détaillés de « Plongez au coeur de Python »
http://diveintopython.adrahon.org/regular_expressions/index.html
Chiffres romains, de « Plongez au coeur de Python »
http://diveintopython.adrahon.org/unit_testing/index.html
Boîte à outils et corpus, en anglais « Natural language Toolkit »
http://www.nltk.org/
| Des ressources de codes de programmation, listes de mots, textes catégorisés et liens [...] Un recueil de liens (textes, mots et langage Python) Adresses pour le langage Python [...] Un spicilège de codes de programmation Le programme des verbes fléchis pour le corse, en Python Le programme du découpage lexical en Python L’utilisation et le code de la catégorisation grammaticale pour le français, en Python |
|
La page d’accueil Le sommaire des pages |
| Imprimer |
|
| Rédaction
: 01.04.2004 Publication : 10.02.2006
Révision : 01.12.2011
http://cadrat.saynete.net2003 - 2012 |
|