Blog d'un jeune (chercheur) entrepreneur en TAL

Aller au contenu | Aller au menu | Aller à la recherche

08mai

Piloter Gnumeric depuis Python

Gnumeric est le tableur de l'environnement GNOME. Il a l'avantage d'être beaucoup plus léger que LibreOffice Calc ce qui le rend particulièrement agréable d'utilisation pour travailler sur des tableaux de taille raisonnable.

Habituellement, je travaille dans un premier temps mes données sous Gnumeric, Calc ou Open Refine selon leur complexité et bien sûr lorsqu'elles peuvent tenir en mémoire. Une fois les données nettoyées, j'exporte le tout en CSV pour les analyser avec R ou directement en Python. Cependant je me suis récemment aperçu que Gnumeric offrait une console Python... j'ai donc essayé.

Lire la suite

23déc.

Extraction de données d'OpenStreetMap hors ligne

Dans ces différents billets, j'avais expliqué comment extraire des données depuis OpenStreetMap en interrogeant directement les serveurs. Dans ce billet, je propose une approche plus classique qui consiste à directement traiter les fichiers OSM à l'aide d'Osmosis.

Pour l'exercice, je propose de réitérer le travail d'extraction des arrêts de bus et de tramway mais sur la ville d'Angers. Pourquoi ? Parce qu'on me l'a demandé et que l'exercice est intéressant :)

Lire la suite

22nov.

Ouverture des données publiques à Nantes

Ça y est c'est officiel, Nantes a lancée sa plateforme OpenData. Ça s'est passé ce lundi 21 novembre 2011 à la Cantine --- comme tous les évènements cools qui ont lieu sur Nantes, et je ne dis pas ça que parce que je suis fan de la Cantine Nantaise, d'Atlantic 2 et du quatuor de choc Adrien/Magali/Florent/Lucie !

Le nombre de jeu de données est pour l'instant restreint, mais un jeu en particulier a attiré les contributeurs OSM.

Lire la suite

21nov.

Travaux Pratique TALN - Contexte syntaxique

Les séances précédentes ont été consacrées à l'analyse lexicale et morphologique. Il est temps de se détacher de la dimension lexicale des textes pour tendre vers la dimension syntaxique.

Lire la suite

14nov.

Travaux Pratique TALN - Morphologie et contexte syntaxique

Dans le TP précédent nous nous sommes limité à l'analyse des mots en-dehors de tout contexte. Il s'est alors agi de découper un texte en mots puis de compter ces derniers.

Dans ce second TP, nous allons nous intéresser à la morphologie des mots (leur forme textuelle). Nous explorerons notamment deux procédés de normalisation morphologique : la racinisation et la lemmatisation. Nous découvrirons ensuite que le contexte des mots, combiné à leur morphologie, peut nous apprendre bien des choses.

Lire la suite

24oct.

Travaux Pratique TALN - Le lexique

Malgré notre projet de création d'entreprise, je tenais à continuer à enseigner le TALN à l'Université. Outre l'intérêt pragmatique du chef d'entreprise qui souhaite ainsi repérer les éléments prometteurs à recruter, l'enseignement est une des meilleures manières de prendre du recul sur un domaine.

Cette année je compte mettre de côté UIMA pour me concentrer sur l'expérimentation. J'ai donc décidé de me tourner vers Python, mon langage de cœur, et les bibliothèques NLTK et scikit-learn.

Pour ce premier TP, je compte faire réfléchir les étudiants sur l'analyse lexicale : découpage d'un texte en mots, calculer une distribution sur un document, puis un corpus, filtrer les mots qui participent peu à l'expression du sens et visualiser un texte à partir de son lexique.

Lire la suite

17mar.

Visualiser un espace à plusieurs dimensions en 3D

L'analyse en composantes principales (ACP) permet de calculer les hyperplans d'un espace vectoriel tel qu'une projection sur ces plans conserve un maximum d'entropie. Cette approche permet entre autres choses de projeter des espaces ayant un très grand nombre de dimensions dans des espaces de dimensions réduites tout en limitant la perte d'information.

L'utilisation combinée de scikit-learn et de matplotlib permet de produire très rapidement des réductions de dimension et de les visualiser. J'utilise ces bibliothèques pour visualiser dans un espace à 2 ou 3 dimensions des espaces vectoriels correspondant à des représentations de documents à l'aide de traits particuliers.

Lire la suite

26janv.

Interroger OpenStreetMap en Python avec OsmApi

Le projet OpenStreetMap permet de générer de très jolies cartes qui illustreront prochainement Wikipédia. Mais l'intérêt du projet ne s'arrête pas à la création des cartes. Il s'agit bel et bien, à l'instar de Wikipédia, de créer une base de données géographique libre de droit.

Ces données sont accessibles au travers d'une API à qui sait où chercher. Je présente dans ce billet l'utilisation d'une bibliothèque Python permettant d'interroger cette API développer par un collègue Nantais.

Lire la suite

12janv.

Cours de TALN (3) : n-grammes

Voilà le troisième et dernier opus du cours dont je parlais ici. J'avais présenté le premier opus ici et le second ici.

Lire la suite

09janv.

Cours de TALN (2) : morphologie et étiquetage des rôles grammaticaux

Voilà le second opus du cours dont je parlais ici. J'avais présenté le premier opus ici.

Lire la suite

09janv.

Python et Tree Tagger

Tree Tagger est un outil d'étiquetage des rôles grammaticaux disponible pour plusieurs plateformes et pour plusieurs langues. Si sa licence n'est pas libre, il peut être utilisé dans un cadre de recherche ou bien pour l'éducation.

Il existe un projet de wrapper Python pour cet outil qui pourrait m'être utile pour mon cours de TALN.

Lire la suite

04janv.

Petit script pour découvrir les expressions rationnelles

Comme j'en discutais dans mon billet précédent, mon premier cours cette année a principalement porté sur les expressions rationnelles. J'ai tiré deux bilans de ce cours :

  • il faut que les étudiants manipulent au maximum
  • il faut qu'ils comprennent mieux ce qui se passe dans les moteurs d'expressions rationnelles pour corriger leurs erreurs

J'ai donc écrit un script Python pour les accompagner dans leur découverte des expressions rationnelles.

Lire la suite

03janv.

Cours de TALN (1) : expressions rationnelles

Voilà, suite à mon précédent billet, je me suis décidé à me lancer dans l'écriture du cours que je dois donner demain.

Lire la suite

03janv.

Un cours de TALN parfait ?

Depuis le début de mon doctorat j'ai eu la chance de pouvoir dispenser plusieurs enseignements autour du TALN. Malheureusement je n'ai jamais été responsable du module et je n'ai jamais tellement eu la liberté d'enseigner comme je le souhaitais. Personnellement je n'ai pas aimé la façon dont le TALN m'a été enseigné et par conséquent je n'aime pas l'enseigner de la même façon qu'il me l'a été.

Quelle aurait été le cours de TALN que j'aurais aimé avoir ? Certainement quelque chose mieux ancré dans le TALN d'aujourd'hui et orienté vers les méthodes et les applications !

Lire la suite

26août

Calculer le recouvrement de deux textes avec NLTK

Mon travail de thèse, sobrement intitulée Détection de dérivations de texte, consiste à évaluer la probabilité qu'un texte dérive d'un autre. Une des applications, que je déteste mais qui a l'avantage de parler à la plupart des gens, est la détection de plagiat.

Une approche, naïve mais simple à mettre en œuvre, consiste à calculer le nombre de mots que deux textes partagent. Voici une proposition d'implémentation d'une telle technique tirant partie de la bibliothèque NLTK.

Lire la suite

29déc.

Qtopia : sauvegarder les contacts au format VCF

J'ai fait l'acquisition d'un OpenMoko il y a quelques mois ... plutôt par conviction et pour "participer". Je ne pensais pas réellement utiliser le téléphone comme tel, mais plutôt comme une plateforme de tests. Malheureusement (ou heureusement) le téléphone portable que j'utilisais est mort peu de temps après mon acquisition... j'utilise donc l'OpenMoko tous les jours, avec plus ou moins de "plaisir". Afin de profiter des améliorations, bien souvent nécessaires, je flash et test de nouvelles images régulièrement ... et régulièrement je perds mon carnet d'adresses, mes sms, ...

Lassé, j'ai écrit un script python permettant de générer un fichier vcard contenant tous les contacts enregistrés dans le répertoire Qtopia (Qtextended ou Om2009.xx) à partir des informations du wiki.

Le fonctionnement est assez simple, le script prend deux paramètre :

  • le chemin vers le fichier sqlite de la base de données Qtopia
  • un nom de fichier de sortie (extension vcf pour la future importation)
shell$ ./dbtovcf.py Applications/Qtopia/qtopia_db.sqlite addressbook.vcf

Il suffit alors de charger le dit fichier à l'aide de l'application addressbook sur l'OpenMoko et suivre les indications sur son écran :

root@om-gta02:~# export DISPLAY=:0
root@om-gta02:~# export LD_LIBRARY_PATH=/opt/Trolltech/Qtopia/lib
root@om-gta02:~# /opt/Trolltech/Qtopia/bin/addressbook addressbook.vcf

Pour obtenir le script, cliquer ici !

05mar.

Tokenisation en mots avec NLTK

Le toolkit NLTK intègre plusieurs algorithmes permettant de découper un texte en mots. Ce billet présente plusieurs d'entre eux.

Lire la suite

10fév.

NLTK et la loi de Zipf (Traduction et Reprise de ACM Crossroads)

Ce billet reprend partiellement l'article du journal ACM Crossroads sur NLTK. Il illustre le potentiel du toolkit NLTK (Natural Language Toolkit) pour Python en montrant l'application de la loi de Zipf sur le corpus Gutenberg.

Lire la suite

22fév.

Utiliser tkinter sous Gentoo

Utilisation de l'interface tk pour Python sous Gentoo.

Lire la suite