mercredi 12 mars 2008

Comment utiliser un séparateur décimal point à la place de la virgule sous OpenOffice.org en français ?

Pour pouvoir utiliser le point comme séparateur décimal sous OpenOffice.org en français, il suffit de spécifier dans Format → Cellules → Nombres l'option Anglais.

Autre solution sous Ubuntu : aller dans Système Préférences ClavierAgencement, et choisir le clavier "France" et supprimer le clavier "France - Autre" (clavier par défaut).

lundi 10 mars 2008

Tutoriel UIMA I : création d'un composant d'annotation (Analysis Engine)

Ce billet décrit comment créer un composant d'annotation (Analysis Engine) UIMA simple qui segmente un fichier texte en mots.
  1. Préparation du projet dans Eclipse
    Lancer Eclipse puis : File → New → Other... → Java → Java Project → Next. Saisir un nom dans le champs Project name: puis cliquer sur Finish.
    Il faut ensuite attacher la librairie UIMA au projet : Project → Properties → Java Build Path → LibrariesAdd External JARs... ; sélectionner le fichier uima-core.jar dans le répertoire apache-uima/lib.
  2. Définir un type dans le schéma d’annotation
    Le schéma d’annotation commun (Common Analysis Structure ou CAS dans UIMA) encapsule toutes les annotations concernant le document analysé ainsi que le document lui-même. Il nous aurons besoin du type Token dans cette structure, nous allons donc le déclarer dans un système de types : File → New → Others → UIMA → Type System Descriptor File ; préciser le nom dans le champs File name: puis Finish.
    Faire ensuite un clic droit sur le fichier .xml ainsi créé puis Open With → Component Descriptor Editor. Dans l'onglet Type System cliquer sur Add Type et saisir le nom dans le champs Type Name: (ex : Token) et préciser uima.tacs.Annotation dans le champs Supertype:.
    L'action d'enregistrer vos modifications doit générer automatiquement les fichiers associés (ex : Token_Type.java et Token.java).
  3. Développer le code de l'annotateur
    Il faut créer une classe héritant de la classe JTextAnnotator_ImplBase correspondant à l'implémentation par défaut d'un annotateur de données textuelles : File → New → Class ; saisir le nom de la classe dans le champs Name: TokenAnnotator ; préciser la classe org.apache.uima.analysis_component.JCasAnnotator_ImplBase dans le champs Superclass: ; puis cliquer sur Finish.
    Il ne reste plus qu'à écrire le code proprement dit :
    import org.apache.uima.analysis_component.JCasAnnotator_ImplBase;
    import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
    import org.apache.uima.jcas.JCas;
    import java.text.BreakIterator;
    public class TokenAnnotator extends JCasAnnotator_ImplBase {
    public void process(JCas aJCas) throws AnalysisEngineProcessException {
    BreakIterator iterToken = BreakIterator.getWordInstance();
    iterToken.setText(aJCas.getDocumentText());
    int deb = iterToken.first();
    int fin = iterToken.next();
    while (fin != BreakIterator.DONE) {
    Token token = new Token(aJCas);
    token.setBegin(deb);
    token.setEnd(fin);
    token.addToIndexes();
    deb = fin;
    fin = iterToken.next();
    }
    }
    }
  4. Descripteur du composant d'annotation (Analysis Engine Descriptor)
    L'architecture UIMA impose qu'un annotateur soit décrit par un fichier XML appelé Analysis Engine Descriptor : File → New → Others → UIMA → Analysis Engine Descriptor File ; préciser le nom dans le champs File name: puis Finish.
    Faire ensuite un clic droit sur le fichier .xml ainsi créé puis Open With → Component Descriptor Editor. Indiquer le fichier java implémentant l'annotateur dans le champs Name of the java class file de l'onglet Overview.
    Dans l'onglet Type System, il faut énumérer les types que l'annotateur utilise. Cliquer d'abord sur Set DataPath dans la colonne Imported Type Systems pour indiquer le chemin du fichier XML contenant schéma d’annotation commun (Type System Descriptor). Dans la même colonne, cliquer ensuite sur Add... pour sélectionner ce fichier.
    Enfin, dans l'onglet Capabilities, il faut préciser, parmi les types énumérés dans l'onglet Type System, lesquels sont utilisés et s'ils le sont en entrée ou en sortie. Cliquer sur Add Type, sélectionner la ligne correspondant à votre token et préciser que le type est utilisé en sortie uniquement (Out) puis valider (Ok).
  5. Tester le composant
    Il faut commencer par mettre à jour la variable d'environnement CLASSPATH pour y ajouter le chemin vers votre répertoire bin. Dans un shell, saisir :
    export CLASSPATH=$CLASSPATH:chemin/vers/votre/bin
    Vous pouvez alors exécuter le script documentAnalyzer.sh qui vous permettra de tester votre annotateur.
  6. Tester le composant sous Eclipse
    Commencer par importer le projet exemple d'UIMA : File → Import... → General → Exusting Project into Workspace → Next ; puis dans Select root directory sélectionner le répertoire racine d'UIMA ; puis Finish.
    Il est maintenant possible d'exécuter directement le CPE GUI pour tester le composant :
Tutoriel et guide du développeur UIMA (puis cliquer sur Tutorials and Users' Guides)
Sommaire UIMA sur ce blog

Les entités nommées : Installer TagEn sous Linux

Les entités nommées sont une appellation générique pour désigner les noms propres de personnes, de lieux, d'organismes, mais aussi des dates, des prix, etc.

TagEN est un outil de reconnaissance d'entités nommées développé par Jean-François Berroyer et Thierry Poibeau, au Laboratoire d'Informatique de Paris-Nord (LIPN). L'implémentation de TagEN est basée sur des automates à états-finis et utilise pour cela la plate-forme Unitex développée à l'Université de Marne-la-Vallée.

Pour installer TagEN, il faut commencer par le télécharger, puis :

  1. Décompresser l'archive TagEN.tar.gz à l'endroit définitif de son choix
  2. Exécuter le script compile dans le répertoire TagEN/src
Pour utiliser TagEN, il faut lui spécifier l'un des modes renseignés dans le fichier tagen.conf, comme :
  • mucfr : entités nommées MUC (français) ;
  • equer : domaine médical (français) ;
  • bio : genes, proteins and species names (english) ;
  • carnivore : carnivore plants (english) ;
Par exemple, pour exécuter TagEN sur le fichier ptprince.txt en utilisant le mode mucfr, il faut saisir la commande :
./tagen :mucfr ptprince.txt
Voici quelques extraits du fichier ptprince.tag.txt produit en sortie :

[...]Quand il est <timex><time>midi</time></timex> aux <enamex><location>Etats-Unis</location></enamex>, le soleil, tout le monde sait, se couche sur la <enamex><location>France</location></enamex>.[...]
[...]J'ai vu une maison de <numex><money>cent mille francs</money></numex>[...]
[...]le rayonnement du cadeau de <timex><date>Noël</date></timex> que je recevais[...]
[...]ce sera ce soir vers <timex><time>sept heures quarante</time></timex>[...]
Remarque : il existe une option -t (ex : ./tagen -t :mucfr ptprince.txt) qui ne semble pas documentée et qui produit un résultat plus synthétique contenant le type et les offsets des entités nommées identifiées :
enamex 31 36
person 31 36
enamex 367 372