Affichage des articles dont le libellé est Cours. Afficher tous les articles
Affichage des articles dont le libellé est Cours. Afficher tous les articles

vendredi 5 novembre 2010

Traitement Automatique du Langage Naturel (TALN) : Outils d’analyse de données textuelles

Le Traitement automatique du langage naturel (TALN) ou Traitement automatique des langues (TAL) est une discipline à la frontière de la linguistique, de l'informatique et de l'intelligence artificielle, qui concerne l'application de programmes et techniques informatiques à tous les aspects du langage humain [Wikipedia].
Dans le cadre du Master Informatique 2ème année, spécialité Modélisation Informatique des Connaissances et du Raisonnement (MICR), de L’École Doctorale Galilée, je dispense un cours sur les Outils d'analyse de données textuelles.
Le plan du support de cours de la première séance est :
  1. Introduction au Traitement Automatique du Langage Naturel
  2. Niveaux de traitements et principaux outils
  3. Plateformes d'annotations linguistiques
  4. Apache UIMA
Voici quelques sites rassemblant ou inventoriant des outils pour le TALN :
Pour compléter cette liste, voici quelques réservoirs de composants UIMA :

dimanche 22 novembre 2009

Livre : UML 2 - de l'apprentissage à la pratique

Enseignant à l'institut universitaire de technologie de l'Université de Paris 13, lorsque le cours d'UML m'a été confié, j'ai dû rechercher dans la volumineuse bibliographie UML un support de cours adéquat. Les ouvrages pédagogiques concernant le langage UML sont nombreux et de qualité très inégale, mais je n'ai pas eu à chercher bien loin puisque mon collègue et ami Aomar Osmani avait coécrit un support de cours d'une grande qualité (UML2, Charroux, Osmani et Thierry-Mieg, 2005). Cependant, cet ouvrage ne me convenait pas parfaitement. Il ne couvrait pas l'ensemble de la matière que je voulais enseigner et ne répondait pas à toutes mes interrogations. C'est pourquoi j'ai entrepris la rédaction de ce support, qui, de révision en révision est est devenu cet ouvrage édité dans la collection Info+ des éditions Ellipses sous le titre UML 2 - de l'apprentissage à la pratique.
L'objectif de ce livre est d'offrir une approche progressive, rigoureuse et pédagogique du langage de modélisation UML, et d'aborder des problématiques connexes comme celle des patrons de conception (design patterns en anglais) et des processus de développement logiciel mettant en œuvre le langage UML. Cet ouvrage propose également une analyse critique et pointue de certains choix de modélisation. Vous trouverez enfin dans ce livre une série de travaux dirigés accompagnés de corrigés complets et détaillés, élaborés pour permettre un apprentissage progressif et méthodologique des principales notions du langage UML.
Ce livre de 298 pages est composé de 10 chapitres décrits ci-dessous.
  1. Introduction à la modélisation objet – Ce chapitre introductif aborde la problématique du génie logiciel et de la modélisation, les différents cycles de vie d'un logiciel, les différences qui opposent la programmation structurée à l'approche orientée objet, puis les concepts fondamentaux de la pensée objet avant de présenter brièvement le langage de modélisation UML et ses différents diagrammes.
  2. Diagramme de cas d'utilisation et notions transversales d'UML – Ce chapitre commence par aborder des notions transversales du langage UML, avant de détailler les éléments constitutifs d'un diagramme de cas d'utilisation. Ces diagrammes permettent la modélisation des besoins des utilisateurs. La dernière section propose des conseils concernant leur élaboration.
  3. Diagramme de classes – Le diagramme de classes est considéré comme le plus important de la modélisation orientée objet. Ce chapitre présente, dans un premier temps, les notions fondamentales qui régissent les diagrammes de classes, puis détaille les classes et les relations, avant d'aborder les interfaces. Le chapitre traite ensuite de la problématique des diagrammes d'objets avant d'aborder l'implémentation d'un diagramme de classes, et plus précisément sa traduction en Java ou en SQL.
  4. Langage de contraintes OCL – L'objectif de ce chapitre est de permettre la spécification de contraintes sur des éléments de modèle. Ce chapitre présente tout d'abord comment les contraintes s'expriment en UML, puis détaille le langage OCL (Object Constraint Language en anglais) qui permet d'exprimer des contraintes complexes dans les diagrammes UML en général, mais plus particulièrement dans les diagrammes de classes.
  5. Diagramme d'états-transitions – Un diagramme d'états-transitions permet de spécifier de manière exhaustive et non ambigüe, à l'aide d'un automate à états finis, l'ensemble des comportements d'une instance d'un classeur. Cette modélisation est utilisée pour représenter et mettre en forme la dynamique du système.
  6. Diagramme d'activités – Un diagramme d'activités permet de mettre l'accent sur les traitements et est particulièrement adapté à la modélisation du cheminement de flots de contrôle et de flots de données.
  7. Diagramme de structures composites et diagrammes d'interaction – Les diagrammes d'interaction permettent d'établir un lien entre les diagrammes de cas d'utilisation et les diagrammes de classes en montrant comment les objets collaborent pour réaliser une certaine fonctionnalité. Le diagramme de structures composites permet de modéliser le contexte particulier d'exécution dont les diagrammes d'interaction cherchent à modéliser la dynamique.
  8. Diagrammes de composants et diagrammes de déploiement – Ces diagrammes, qui constituent les deux derniers types de vues statiques en UML, permettent respectivement de décrire le système modélisé sous forme de composants réutilisables en mettant en évidence leurs relations de dépendance, et d'identifier les éléments matériels et leur disposition physique.
  9. Patrons de conception (Design Patterns) – Un patron de conception est une solution de conception commune à des problèmes récurrents dans un contexte donné. Les patrons de conception sont désormais inévitables dès qu'il est question de technologie orientée objet. L'objectif de ce chapitre est de montrer leut intérêt à travers la présentation de quelques patrons incontournables (5 patrons GRASP, 6 patrons du GoF puis 4 autre patrons incontournables).
  10. Mise en œuvre d'UML – UML n'est qu'un langage de modélisation, ce n'est pas une méthode. La première section de ce chapitre est justement consacrée à la présentation des principales méthodes issues des meilleures pratiques de l'ingénierie logicielle : le Processus Unifié (UP, RUP), Scrum et XP. Les sections suivantes détaillent une méthode simple et générique, située à mi-chemin entre UP et XP.
Cet ouvrage est naturellement destiné aux étudiants en informatique qui suivent un cursus comportant du génie logiciel, de la modélisation UML ou de la programmation objet, aux professeurs désirant s'appuyer sur un support de cours précis et complet, ou encore aux professionnels informaticiens utilisant UML dans leurs projets.

Nouvelles du cours d'UML 2

Ce billet est l'alter ego de celui déjà publié concernant le cours de Bases de Données et langage SQL. Le cours d'UML hébergé chez Developpez.com se porte très bien. Depuis sa mise en ligne en janvier 2007, il totalise plus 1 085 000 pages consultées au jour de l'écriture de ce billet. Le flux moyen sur 2009 est de 1500 pages par jour. Cet intérêt m'a donné la motivation nécessaire pour continuer mon effort afin d'améliorer significativement ce support de cours. Cette nouvelle version est éditée ce mois-ci dans la collection Info+ des éditions Ellipses. J'en parlerai prochainement dans un nouveau billet.
Je tiens à remercier les éditions Ellipses pour m'avoir autorisé à conserver la première ébauche en ligne sur le site Developpez.com.
Voici ce que la version publié apporte par rapport à la version en ligne chez Developpez.com :
  • De nombreuses améliorations (corrections, illustrations, exemples...). En fait, seulement 20% de la version éditée se retrouve à l'identique dans la version en ligne.
  • De nouvelles notions (Design Patterns, introduction aux principales méthodes de développement, diagramme de structures composites...). La version éditée est pratiquement 2 fois plus volumineuse que la version en ligne (en nombre de phrases et en nombre de figures).
  • Des séances de travaux dirigés et de travaux pratiques accompagnées de corrigés complets et détaillés.
  • Une présentation bien plus agréable sous la forme d'un vrai livre.

mercredi 23 septembre 2009

Livre : Bases de données - de la modélisation au SQL

Enseignant à l'institut universitaire de technologie de l'Université de Paris 13, lorsque le cours de Bases de données m'a été confié, j'ai dû rechercher dans la volumineuse bibliographie sur les Bases de données un support de cours adéquat. Les ouvrages traitant correctement de la conception des bases de données, en utilisant le modèle entités-associations, ne sont pas si nombreux et datent souvent de l'époque Merise. En plus de la conception, je souhaitais aborder l'algèbre relationnelle, puis le langage SQL et enfin les déclencheurs. Chacune de ces parties devait être ponctuée de séances d'exercices sous forme de travaux dirigés ou de travaux pratiques. J'ai donc entrepris la rédaction d'un support de cours sur mesure, qui, de révision en révision, est devenu cet ouvrage édité dans la collection Info+ des éditions Ellipses sous le titre Bases de données - de la modélisation au SQL. Ce livre de 255 pages est composé de 5 chapitres décrits ci-dessous.
  1. Introduction aux bases de données – L'objectif de ce court chapitre est d'introduire la problématique des bases de données : définition de la notion de bases de données, principaux modèles de bases de données, systèmes de gestion de bases de données (SGBD).
  2. Conception des bases de données : le modèle entités-associations – Ce chapitre explique comment bien concevoir une base de données. Après une description des éléments constitutifs du modèle entités-associations, la notion de type-association est détaillée, puis un éventail méthodologique des règles qu'il est utile d'appliquer pour l'obtention d'un modèle bien formé est ensuite présenté. La problématique de la normalisation des type-entités et des type-associations est ensuite abordée avant de discuter de l'adéquation des type-associations n-aires.
  3. Modèle de données relationnel – Ce chapitre commence par une présentation du modèle relationnel, puis décrit le moyen de passer d'un modèle entités-associations à un modèle relationnel. La théorie de la normalisation, qui constitue un précieux outil pour débusquer la redondance dans les bases de données, est ensuite présentée en détail. Le chapitre aborde enfin l'algèbre relationnelle qui constitue le formalisme support du langage de requête de SQL.
  4. Langage SQL – Ce chapitre est entièrement consacré au langage SQL qui est considéré comme le langage d'accès normalisé aux bases de données relationnelles. La création et la manipulation de la structure de la base de données sont traitées en premier. Les commandes SQL d'insertion, de suppression et de modification des données sont ensuite abordées. Puis, deux sections sont entièrement consacrées à la commande d'interrogation d'une base de données. La dernière section s'intéresse à la description de quelques objets particuliers.
  5. Programmation SQL – L'objet de ce chapitre est de présenter comment combiner des commandes élémentaires SQL avec un langage de programmation. Le premier objectif est l'implémentation de fonctionnalités complexes au niveau du SGBD grâce aux fonctions utilisateur. Ces fonctions sont ensuite utilisées pour implémenter des comportements complexes et dynamiques en utilisant le mécanisme des déclencheurs, rendant ainsi la base de données active.
    Le second objectif est l'interaction entre un programme et un SGBD abordé en décrivant comment intégrer des commandes SQL à un programme écrit en langage C.
Ce livre, comportant de nombreux exercices corrigés, s'adresse à toute personne désirant se former à la problématique des bases de données.

vendredi 18 septembre 2009

Nouvelles du cours Bases de Données et langage SQL

Le cours Bases de Données et langage SQL hébergé chez Developpez.com se porte bien. Depuis sa mise en ligne en 2007, il totalise plus 441000 pages consultées, soit de l'ordre de 500 consultations par jour.
Cet intérêt m'a donné la motivation nécessaire pour continuer mon effort afin d'améliorer ce support de cours. Cette nouvelle version est éditée ce mois-ci dans la collection Info+ d'Ellipses. J'en parlerai prochainement dans un nouveau billet.
Je tiens à remercier les éditions Ellipses pour m'avoir autorisé à conserver la première ébauche en ligne sur le site Developpez.com.
Cette version en ligne est actuellement en cours de mise à jour. Je ne peux y apporter que peu de modifications pour ne pas faire ombrage à la version publiée. J'ai donc corrigé quelques erreurs, supprimé les sujets d'exercices (ils n'ont que peu d'intérêt sans la correction) et retaillé les images.
Voici ce que la version publié apporte par rapport à la version en ligne chez Developpez.com :
  • De nouvelles notions (spécialisation, lien identifiant, validité d'un type association n-aire, agrégat, fonctions et opérateurs SQL, fonctions utilisateur, langage PL/pgSQL, déclencheurs...). La version éditée est 2,5 fois plus volumineuse que la version en ligne (en nombre de phrases et en nombre de figures).
  • Des séances de travaux dirigés et de travaux pratiques accompagnées de corrigés complets et détaillés.
  • De nombreuses améliorations (corrections, illustrations, exemples...). En fait, seulement 10% de la version éditée se retrouve à l'identique dans la version en ligne.
  • Une présentation bien plus agréable sous la forme d'un vrai livre.

samedi 16 février 2008

Mise à jour du cours d'UML 2.0

Je viens de mettre à jour le cours d'UML 2.0. Le chapitre sur les diagrammes de classes a été substantiellement remanié avec, entre autres, la prise en compte de la notion de possession de terminaison d'association introduite dans la version 2.1.1 d'UML. Parmi les nouveautés, on peut également noter la présence de travaux dirigés, sans la correction, dans la version pdf du cours.

jeudi 24 janvier 2008

Tableaux à deux dimensions et passages de paramètres en langage C

Dans le langage C, les crochets que l'on utilise pour encadrer les index d'un tableau ne sont, en réalité, qu'une façon de déréférencer un pointeur.
Si ptr est un pointeur, et n un nombre entier, alors l'expression ptr[n] est strictement équivalente à *(ptr + n). Vous pourrez vérifier que ces deux notations sont équivalentes par vous-même.
Ces deux notations permettent de déréférencer un pointeur sur un tableau à une dimension. Intéressons-nous maintenant au cas d'un tableau à deux dimensions défini de la manière suivante :
int matrice[NB_LIGNES][NB_COLONNES]
Dans ce cas, l'expression matrice[ligne][colonne] est strictement équivalente à :
matrice[(NB_COLONNES * ligne) + colonne]
elle-même strictement équivalente à :
*(matrice + (NB_COLONNES * ligne) + colonne)
Ainsi, le compilateur a besoin du nombre de colonnes d'un tableau à deux dimensions pour pouvoir réinterpréter une notation du type matrice[ligne][colonne]. C'est pourquoi cette dimension doit être précisée lors du passage d'un tableau à deux dimensions comme paramètre d'une fonction.
En fait, lors de la transmission d'un vrai tableau à deux dimensions, le paramètre effectivement transmis est un pointeur sur le premier sous-tableau, et non un pointeur sur le premier élément.
Le passage du tableau matrice à une fonction devra donc se faire de la façon suivante :
void fonction(int (*matrice)[NB_COLONNES]) ;
Une autre notation possible, bien qu'elle masque la véritable nature du paramètre transmis (ce qui n'est pas bien), est :
void fonction(int matrice[][NB_COLONNES]) ;
L'inconvénient évident est que les fonctions ainsi définies ne sont absolument pas générales puisqu'elles ne peuvent manipuler qu'un tableau de NB_COLONNES. Le prix de la généricité est l'abandon du vrai tableau au profit de l'allocation dynamique.

mardi 30 octobre 2007

Cours en ligne : UML 2.0

UML (Unified Modeling Language, soit langage de modélisation objet unifié) est né de la fusion des trois méthodes qui s'imposaient dans le domaine de la modélisation objet au milieu des années 1990 : OMT, Booch et OOSE. D'important acteurs industriels (IBM, Microsoft, Oracle, DEC, HP, Rational, Unisys etc.) s'associent alors à l'effort et proposent UML 1.0 à l'OMG (Object Management Group) qui l'accepte en novembre 1997 dans sa version 1.1. La version d'UML en cours à la fin 2006 est UML 2.0 qui s'impose plus que jamais en tant que langage de modélisation standardisé pour la modélisation des logiciels.
Ce document constitue le support du cours d'UML 2.0 que je dispense aux étudiants du département d'informatique de l'institut universitaire de technologie (IUT) de Villetaneuse.

Table des matières du cours UML 2.0
  • Introduction à la modélisation objet
  • Diagramme de cas d'utilisation (Use Case Diagram)
  • Diagramme de classes (Class Diagram)
  • Object constraint langage (OCL)
  • Diagramme d'états-transitions (State machine diagram)
  • Diagramme d'activités (Activity diagram)
  • Diagrammes d'interaction (Interaction diagram)
  • Diagrammes de composants et de déploiement (Component diagram et Deployment diagram)
  • Mise en oeuvre d'UML

Cours en ligne : Base de Données et langage SQL

Ce cours commence par s'intéresser à la problématique de la conception des bases de données. La deuxième partie est consacré aux bases de données relationnelles, c'est-à-dire aux bases conçues suivant le modèle relationnel et manipulées en utilisant l'algèbre relationnelle. Il s'agit, à ce jour, de la méthode la plus courante pour organiser et accéder à des ensembles de données. La dernière partie constitue, enfin, une bonne introduction au langage SQL (Structured Query Language) qui peut être considéré comme le langage d'accès normalisé aux bases de données relationnel. Le langage SQL est supporté par la plupart des systèmes de gestion de bases de données commerciaux (comme Oracle) et du domaine libre (comme PostgreSQL).
Ce document constitue le support du cours Base de Données et langage SQL que je dispense aux étudiants du département d'informatique de l'institut universitaire de technologie de Villetaneuse.

Table des matières :
  • Introduction aux bases de données
  • Conception des bases de données (modèle E-A)
  • Bases de données relationnelles
  • Langage SQL

Cours : Informatique & linguistique

La linguistique informatique ou, suivant l'appellation anglo-saxonne, la linguistique computationnelle, est une discipline issue des développements de l'informatique dans le domaine des sciences du langage. Le domaine de la linguistique informatique recouvre toutes les applications informatiques qui ont trait au langage naturel. Par langage naturel on entend le langage tel qu'il est parlé spontanément par les êtres humains (le français, l'anglais, le russe, le wolof, etc.), par opposition aux langages formels utilisés en logique, en mathématique, en informatique, etc.
L'objet premier de la linguistique informatique est le traitement automatique du langage (TAL), c'est-à-dire l'analyse et la génération automatique du langage, et plus précisément, l'élaboration de modèles computationnels d'analyse et de génération à partir desquels on peut réaliser des logiciels capables de comprendre ou de produire des énoncés en langue naturelle.
Cette unité d'enseignement présente les bases de la théorie des automates et des langages formels : automates à états finis, expressions régulières, grammaires régulières, grammaires indépendantes du contexte, analyseurs syntaxiques ascendants et descendants.

Table des matières :
  • La linguistique informatique
  • Langages formels et leurs représentations
  • Langages réguliers (type 3)
  • Langages hors contexte (type 2)
  • Analyseurs (parser) syntaxiques

Cours : Introduction au monde d'Unix

Ce cours est une introduction au monde d'Unix dispensé (2002-2004) au Centre Informatique pour les Lettres et les Sciences Humaines (CILSH). Les objectifs de ce cours sont multiples. Il doit, tout d'abord, permettre aux étudiants d'avoir un premier contact réel avec le monde de Linux. D'autre part, certains étudiants seront amenés à poursuivre leurs études par un DESS informatique double compétence où ils seront certainement confrontés à des machines fonctionnant sous Unix. D'autres encore pourront être confrontés à Unix dans leur vie professionnelle. Ce cours devrait permettre à toutes ces personnes de ne pas se retrouver complètement déroutées et démunies face à cette situation possible à venir. Enfin, les utilitaires d'Unix, disponibles par la ligne de commande, permettent d'effectuer des opérations complexes et très utiles sur des fichiers, opérations qu'il est beaucoup plus fastidieux de réaliser dans le monde Windows. Ce cours devrait donc offrir une boîte à outils très utile pour des linguistes travaillant souvent avec de gros corpus écrits.

Table des matières :
  • Système d'exploitation
  • Introduction au monde d'Unix
  • Système de fichiers d'Unix
  • Opérations sur les fichiers et répertoires
  • Visualiser et éditer des fichiers
  • Installation de Linux et de Cygwin/XFree86
  • Redirections, tubes et filtres : principes
  • Filtres
  • Pratique des filtres, redirections et tubes

Cours : Logiques du raisonnement valide

Le but de la logique est de calculer des conclusions sûres. Le langage naturel s'avère trop imprécis et riche pour permettre des développements simples et rigoureux.
La logique est un outil pour parler et raisonner dans un domaine déterminé. Différents domaines ont différentes logiques. C'est un problème à la fois philosophique et mathématique que de savoir si une logique donnée est adéquate pour un domaine particulier.
Les logiques classiques (la logique des propositions et la logique des prédicats) ont été créées pour raisonner sur des objets mathématiques. Comme ces objets sont conceptuellement assez simple, ces logiques le sont aussi. Tout comme en mathématiques, les systèmes déductifs de la logique classique se limitent à la formalisation du raisonnement valide.

Table des matières :
  • Logique des propositions
  • Logique des prédicats
  • Programmation logique : PROLOG

jeudi 25 octobre 2007

Aérodynamique pour aéromodélisme

Dans ma jeunesse, je pratiquai l'aéromodélisme et dessinai des avions et des planeurs. Pour cela, il est préférable d'avoir des bases en aérodynamique. Je ne les avais pas, mais les ai acquises pendant mon temps libre lors de mon service militaire à la base aérienne 701 de Salon de Provence. J'en ai profité pour consigner tout cela par écrit. Cette synthèse est hélas totalement inachevée et laissée en plan, mais elle fait tout de même 200 pages et m'a permis de dessiner quelques avions.

Table des matières :
  • Aérodynamique et mécanique des fluides
    - Statique des fluides
    - Cinématique des fluides
    - Dynamique des fluides
    - Couche limite
    - Résultante générale
    - Corps géométriques simples
  • Aérodynamique et mécanique du vol
    - Aile d'envergure infinie
    - L'aile d'envergure limitée
    - L'avion complet
    - Problème de stabilité
  • Aéromodélisme
    - Considérations sur le choix du profil
    - Voilures pour aéronefs classiques
    - Considérations finales sur les aéronefs classiques
    - Aéronefs exotiques
    - Bien régler, bien volet