mardi 13 décembre 2011
mardi 29 novembre 2011
Descripteur XML de composant (Component Descriptors)
Les composants UIMA sont composés de deux parties distinctes :
- une partie déclarative (le descripteur de composant)
- un code (en Java par exemple)
La partie déclarative est représentée dans un fichier XML et est appelée descripteur de composant (Component Descriptor). Le descripteur de composant contient des méta-données qui décrivent le composant. C'est le moyen qu'UIMA utilise pour mettre en œuvre les mécanismes de découverte, de réutilisation et de composition de composants.
Le descripteur de composant permet de renseigner, entre autres, les informations suivantes :
- nom, version, auteur, description et surtout le nom de la classe implémentant le composant (onglet Overview)
- Système de types utilisé (onglet Type System)
- Types utilisés (i.e. requis) dans le CAS par le composant (onglet Capabilities)
- Types renseignés dans le CAS par le composant (onglet Capabilities)
Sous Eclipse, un tel descripteur peut être édité avec le Component Descriptor Editor.
UIMA : Le système de types (Type System ou TS)
Pour composer un CAS, UIMA propose quelques types de base et permet de les étendre grâce au concept de système de types (Type System ou TS). Un système de types est une hiérarchie de types qui défini l'ensemble des types qu'il est possible d'utiliser dans le CAS.
Chaque composant UIMA (i.e. chaque Analysis Engines) défini son propre système de types. Pour assurer la cohérence d'une chaîne d'annotation UIMA, il est préférable que chacun des systèmes de types des composants de la chaîne soit un sous-ensemble d'un système de types plus général décrivant tous les types d'annotations que la chaîne peut produire.
Un système de types est décrit dans un fichier XML qui peut être édité sous Eclipse par le Component Descriptor Editor :
mercredi 23 novembre 2011
UIMA : Le schéma d’annotation commun (Common Analysis Structure ou CAS)
- Le documents, appelé Sofa pour Subject of Analysis dans UIMA.
- Des annotations générées par des composants d'annotation.
Le CAS est une structure orientée objets permettant aux différents composants d'une chaîne d'annotation UIMA de représenter et d'échanger leurs annotations respectives. UIMA propose quelques types de base et permet de les étendre grâce au concept de système de types (Type System).
L'interface Java permettant de manipuler le CAS depuis du code Java se nomme JCas.
UIMA : La chaîne de traitement
- Le Collection Reader : généralement le premier élément de la chaîne, il permet de créer des CAS autour de chaque ressource.
- Les Analysis Engines : raison d'être de la chaîne, ils effectuent les traitements en utilisant les annotations contenues dans le CAS et en produisant de nouvelles annotations dans le CAS.
- Le Workflow Controller : c'est lui qui orchestre l'exécution des Analysis Engines.
On peut distinguer deux types de Workflow Controller :
- le CPM (Collection Processing Manager) et les service Vinci (Vinci Services) ;
- et le tout nouveau AS (Asynchronous Scaleout) bien plus flexible.
L'interface graphique Collection Processing Managment, instancie un Workflow Controller du type CPM appelé FixedFlow qui consiste simplement à enchaîner séquentiellement un Collection Reader, puis un certain nombre d'Analysis Engine et enfin un CAS Consumer. Un CAS Consumer n'étant rien d'autre qu'un Analysis Engine particulier qui n'est pas destiné à enrichir un CAS mais qui génère une sortie (généralement un fichier) à partir des annotations contenues dans le CAS.
jeudi 17 novembre 2011
Imprimer depuis une machine virtuelle VirtualBox
Free méprise et ses clients
L'assistance téléphonique m'a envoyé un technicien en me certifiant que ce serait gratuit pour résoudre le problème. Le technicien n'a rien pu ou su faire, mais ce mois ci, Free me facture 49€ la venu du dit technicien. L'assistance contactée me demande d'envoyer un courrier avec accusé de réception pour porter réclamation (encore du temps et de l'argent). J'ai maintenant reçu la réponse ou plutôt la non réponse puisqu'il s'agit manifestement d'une réponse stéréotypé. Il faut maintenant avoir recours au Service National du Consommateur.
vendredi 5 novembre 2010
Traitement Automatique du Langage Naturel (TALN) : Outils d’analyse de données textuelles
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 :
- Introduction au Traitement Automatique du Langage Naturel
- Niveaux de traitements et principaux outils
- Plateformes d'annotations linguistiques
- Apache UIMA
vendredi 30 juillet 2010
Manipulation par lots du nom de fichier de photos avec métadonnées exif
- Copier la date/heure des métadonnées exif vers la date/heure des fichiers :
> jhead -ft *.JPG - Ajouter 1h30mn à l'heure des métadonnées exif des fichiers :
> jhead -ta+1:30 *.JPG - Ajouter la date/heure des métadonnées exif au début des noms de fichier :
> exiv2 -r '%Y-%m-%d-(%H-%M-%S)_:basename:' *.JPG - Supprimer la date/heure ajoutée ci-dessus au début des noms de fichier :
> rename 's/.*\)_//' *.JPG
jeudi 29 juillet 2010
Rendre silencieux un Synology (ventilateur et fan check)
Modèle : EC7025L12ER (Evercool)
Dimensions : 70mm x 70mm x 25mm
Alimentation : 12 V
Niveau sonore : 24 dB
Consommation : 1.68 W
Vitesse de rotation : 3000 rpm
Débit : 25.2 CFM
Durée de vie : 40000 heures
Le problème de ce ventilateur est son niveau sonore. Il n'est pas très important, mais dans une pièce silencieuse, je le trouve gênant. J'ai donc décidé de le remplacer par un modèle plus silencieux. Les ventilateurs dans ces dimensions ne sont pas légion, mon choix s'est porté sur un ventilateur Nexus dont les spécifications sont décrites ci-dessous.
Modèle : SP702512M (Nexus)
Dimensions : 70mm x 70mm x 25mm
Alimentation : 12 V
Niveau sonore : 19 dB
Consommation : 3.96 W
Vitesse de rotation : 2400 rpm
Débit : 21.1 CFM
Connecteur : Molex 3 broches
Ce ventilateur est totalement compatible avec l'original au niveau dimensions et visserie. Cependant, il consomme un peu plus (2.28 W) brasse légèrement moins d'air et n'est pas compatible au niveau connecteur (il faut sortir son fer à souder pour placer un connecteur compatible sur le câble du ventilateur). Par contre, il est nettement plus silencieux et mes oreilles l'en remercient ! Je garde au chaud le ventilateur original comme pièce de rechange.
Comme rien n'est jamais simple en informatique, il reste un problème : le Synology bip régulièrement probablement en raison de la vitesse de rotation du ventilateur qui n'est plus la même. La solution radicale consiste à taper la commande suivante dans un shell ouvert sur le NAS :
DS209xII> echo 0 > /sys/module/ds508_synobios/parameters/check_fan
Plus de bip, mais probablement plus d'avertissement non plus en cas de défaillance du ventilateur... Comme cette manipulation est à faire après chaque reboot, il est possible de mettre la commande dans un script nommé, par exemple, S99zz_fan_check_disable.sh dans le répertoire /usr/syno/etc.defaults/rc.d pour automatiser la procédure.
Remarque : avec le DSM 3.0-1137, le fichier check_fan est maintenant dans le répertoire /sys/module/ppc85xx_synobios/parameters. Pour trouver l'emplacement de ce fichier, le plus simple est de taper la commande updatedb, puis la commande locate check_fan.
lundi 26 juillet 2010
Dual boot Windows NT/2k/XP/Vista/Seven et Linux
J'ai déjà écrit un billet sur le sujet, mais la méthode décrite ne fonctionne plus depuis Windows Vista. Il existe cependant maintenant un logiciel magique pour ça : EasyBCD.
lundi 17 mai 2010
Gestion des utilisateurs en ligne de commande
- Afficher l'uid et le gid d'un utilisateur :
> id utilisateur - Ajouter un groupe :
> groupadd -gGID nom_groupe - Ajouter un utilisateur :
> useradd -uUID -gGID -s/bin/bash -d/home/utilisateur -pxxx -m utilisateur - Changer l'uid d'un utilisateur :
> usermod -u UID utilisateur - Changer le gid d'un utilisateur :
> usermod -g GID utilisateur - Changer le mot de passe d'un utilisateur :
> passwd utilisateur
samedi 8 mai 2010
Paquets indispensables sous Ubuntu
- non-free-codecs et libdvdcss2 : lire les formats audio et vidéo non libres (mp3, wmv, dcd...)
- numlockx : activer automatiquement la touche Verr Num du pavé numérique au démarrage (cf. http://doc.ubuntu-fr.org/numlockx)
Ajouter dans /etc/gdm/Init/Default avec les droits d'administration les lignes suivantes :
if [ -x /usr/bin/numlockx ]; then
exec /usr/bin/numlockx on
fi - nfs-common : pour les montages NFS
- ia32-libs et util-linux : utiliser des programmes 32 bits sous Ubuntu 64 bits
- flashplugin64-installer : Flash Version 64 bits
> sudo add-apt-repository ppa:sevenmachines/flash
> sudo apt-get update
> sudo apt-get install flashplugin64-installer
vendredi 7 mai 2010
Message "Aucun fichier ou dossier de ce type" lors de la tentative d'exécution d'un programme
La meilleure solution est de recompiler l'application en 64 bits ou de trouver une version 64 bits. Sinon, il reste possible d'utiliser des programmes 32 bits sous Ubuntu 64 bits en installant les paquets ia32-libs et util-linux.
dimanche 13 décembre 2009
Thunderbird sur un disque externe ou une clef usb
- Télecharger Mozilla Thunderbird et decompresser le fichier dans le répertoire de son choix (thunderbird pour la suite du billet) sur le disque externe
- Sur le même disque, copier le répertoire qui contient les mails (thunderbird_mail pour la suite du billet). Il s'agit du répertoire qui contient, entre autres, les dossiers Mail et ImapMail ainsi que le fichier pref.js. Dans le cas d'une première utilisation de Thunderbird, ce répertoire peut être vide.
- Vous pouvez maintenant exécuter Thunderbird depuis le disque externe en tapant la commande suivante dans un terminal :
> /home/.../thunderbird/thunderbird -profile /home/.../thunderbird_mail/ - Avec gnome, vous pouvez ajouter un Lanceur d'application personnalisé à votre tableau de bord. Choisir Application pour le Type et dans la zone d'édition Commande saisir :
/home/.../thunderbird/thunderbird -profile /home/.../thunderbird_mail/ - Enfin, pour pouvoir envoyer un mail par un simple click dans une page Internet, il faut configurer le gestionnaire de mail par défaut. Sous Ubuntu, aller dans Système>Préférences>Applications préférées. Dans la liste de choix Logiciel de messagerie, choisir Personnalisé. Enfin, dans la zone d'édition Commande saisir :
/home/.../thunderbird/thunderbird -profile /home/.../thunderbird_mail/ "%s"
lundi 7 décembre 2009
TreeTagger pour l'étiquetage morpho-syntaxique et la lemmatisation
TreeTagger permet d'effectuer les opérations décrites ci-dessus et peut également être utilisé comme un « chunker » pour identifier des parties du discours et délimiter des groupes syntaxiques.
Installation de TreeTagger
La procédure est décrite sur le site de TreeTagger. Pour l'installer sous Linux pour l'anglais et le français, il suffit de :
- Télécharger le paquetage tree-tagger à l'endroit définitif de son choix
- Télécharger le script d'étiquetage dans le même répertoire
- Télécharger le script d'installation dans le même répertoire
- Télécharger les fichiers de paramétrage pour l'anglais, le français encodé en Latin1 et le français encodé en utf8 toujours dans le même répertoire
- Exécuter le script d'installation depuis le dit répertoire
> sh install-tagger.sh - Si vous voulez que les autres utilisateurs du système puissent utiliser TreeTagger, il faut probablement résoudre des problèmes de droits
> chmod -R a+rX repInstallTreeTagger - Reste enfin à tester l'installation
> echo 'Hello world!' |repInstallTreeTagger /cmd/tree-tagger-english
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
Le livre chez Amazon ou à la FNAC
YaTeA : un extracteur de candidats terme
Installation de YaTeA (en étant root) :
- Configurer le module CPAN / Invoquer le shell :
> perl -MCPAN -we 'shell' - Installer les modules dont YaTeA dépend (quit pour quitter le shell CPAN)
cpan> install YAML
cpan> install Config::General
cpan> install Parse::Yapp
cpan> install Module::Build
cpan> quit - Télécharger Lingua-YaTeA-0.5.tar.gz :
http://search.cpan.org/~thhamon/Lingua-YaTeA-0.5/ - Le décompresser
> tar -xvzf Lingua-YaTeA-0.5.tar.gz - Installer YaTeA
> perl Makefile.PL
> make
> make test
> make install - Vérifier que l'installation à bien copié les répertoires etc/yatea/, share/doc/ et share/YaTeA. Sinon, c'est à vous de le faire :
> cp -r etc/yatea /usr/local/etc/.
> cp -r share/doc /usr/local/share/.
> cp -r share/YaTeA /usr/local/share/.
> yatea -rcfile yatea.rc corpus.ttg
yatea.rc est le fichier de paramétrage du traitement. Un exemple se trouve dans /usr/local/etc/yatea/yatea.rc. En fonction de votre installation, ce fichier doit contenir les lignes suivantes :
CONFIG_DIR = /usr/local/share/YaTeA/config
LOCALE_DIR = /usr/local/share/YaTeA/locale
language = EN
Si le corpus est en français plutôt qu'en anglais, il suffit de remplacer EN par FR.
YaTeA créer un répertoire portant le même nom que le corpus spécifié pour y stocker les résultats du traitement.
Nouvelles du cours d'UML 2
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.
jeudi 8 octobre 2009
Manipuler des pdf
- Fusionner des pdf :
pdftk fichier1.pdf fichier2.pdf output resultat.pdf - Extraire une page (la 15 dans l'exemple) d'un fichier pdf :
pdftk A=source.pdf cat A15 output destination.pdf - Extraire plusieurs pages (de la 2 à la 5 dans l'exemple) d'un fichier pdf :
pdftk A=source.pdf cat A2-5 output destination.pdf - Chiffrer un document pdf et retirer tous les droits :
pdftk source.pdf output destination.pdf owner_pw motDePasse - Rotation de 180° de l'ensemble des pages d'un pdf :
pdftk source.pdf cat 1-endS output destination.pdf - Concevoir un nouveau pdf à partir d'autres pdf :
Créer un fichier LaTeX et inclure les pdf avec la commande \includepdf (\usepackage{pdfpages}) permet de réaliser un nouveau pdf à partir de nombreux pdf, tout en autorisant une grande souplesse de paramétrage (ex : réaliser les actes d'une conférence à partir des fichiers pdf des articles). - Réduire la taille d' un pdf :
gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOUTPUTFILE=destination.pdf -f source.pdf
Remarque : /screen pour un document destiné à l’écran ; /ebook pour une qualité entre screen et printer ; /printer pour un document destiné à l’impression ; /prepress pour un document destiné à l’impression professionnelle - Transformer un pdf en jpeg compressées :
convert -density 130x130 -quality 10 source.pdf image.jpg
Remarque : cette compression dégrade fortement le résultat, augmenter la densité et la qualité (comprise entre 0 pour la compression la plus forte et 100 pour la qualité la meilleure) pour améliorer le résultat - Division ou assemblage de documents PDF sans utiliser la ligne de commande :
Utiliser PDF Split and Merge en installant le paquet pdfsam.

