Outils pour utilisateurs

Outils du site


public:umr_larhra_projet_bhe

Ceci est une ancienne révision du document !


UMR LARHRA

Cette page sert au suivi du projet associant l'UMR LARHRA et l'UMR IHRIM pour développer des relations entre la plateforme SyMoGIH (Système Modulaire de Gestion de l’Information Historique, site web http://symogih.org, site wiki https://groupes.renater.fr/wiki/symogih) et la plateforme TXM. Le projet BHE est un cadre d'expérimentation sur le corpus BAIP de livraisons mensuelles du “Bulletin administratif de l’Instruction publique”.

Dans la mesure où cette page est pour l'instant accessible publiquement, il est recommandé de maintenir un minimum d'anonymat.

Pour éditer cette page, il suffit d'être abonné à la liste de diffusion 'txm-users'.

Projet BHE

Le projet Bibliothèque historique de l'éducation (BHE) dispose d'un espace dédié (accès restreint).

Le PHN du LARHRA a son propre wiki de suivi (accès restreint). Il mobilise potentiellement FB, SG, VA et SB.

L'équipe Cactus de l'IHRIM utilise cette page de suivi et mobilise potentiellement SH, BP, MD?, AL.

Descriptif du corpus

Le corpus d'un peu plus de 2 millions d'occurrences s'étend sur 11 années de parution. Il est numérisé par Persée et produit sous deux formes XML-TEI propres à Persée :

  • A) une version complète du corpus BAIP où chaque mois correspond à un tei:text :
    • archive : baip.zip
    • commentaire : un fichier TEI par numéro
  • B) une version segmentée partielle du BAIP où les rubriques situées à l'intérieur d'un mensuel correspondent à un tei:text (cette version est en cours de production, et sera finalisée au début de l'été 2015) :
    • archive : baip_1854_59-60_gen2015-02-20.zip
    • commmentaire : fichiers TEI (et METS) générés pour les numéros 59 et 60 du BAIP (Numéros 1854, 59 et 60 segmentés). Ces deux fascicules ont subi l'intégralité de la chaîne Persée avec une documentation fine.

Les deux versions du corpus ont été déposées dans le répertoire partagé de projets Cactus : '///Projets/Textométrie/SpUV/BHE'.

Le corpus numérisé est par ailleurs accessible à partir d'une connexion avec l'application jGalith de Persée.

Les images de pages sont en ligne

Import du corpus dans TXM

Livraison de la version 1 - compte-rendu du premier import

Une première version du corpus est disponible dans '///Projets/Textométrie/SpUV/Projet BHE' :

  • baip-bin.txm : le corpus binaire à charger
  • baip-src.zip : les sources à importer avec XML/w+CSV

fichiers sources XML-TEI

Les sources contiennent des césures non résolues : j'ai remplacé tous les '¬ ' par rien (~30 000).

Les pages ont en général un titre courant codé comme paragraphe du corps du texte. On peut distinguer 5 types de pattern de titre courant immédiatement après un '<pb/>' (c'est sur plusieurs lignes dans la source XML) :

  1. 342
    OCTOBRE 1850.
  2. OCTOBRE 1850.
    341
  3. OCTOBRE 1850. 341
  4. 341 OCTOBRE 1850.
  5. OCTOBRE 1850.

Comme le XML encode déjà ces informations et qu'il n'est a priori pas très intéressant de laisser cela dans le corps du texte (au pire on peut le re-synthétiser à partir de l'encodage XML), je les ai supprimées des sources.

Pour cela, j'ai appliqué 5 chercher/remplacer de regexp multilignes suivantes par $1

(<tei:pb [^>]+>\n)   <tei:p>[0-9]+</tei:p>\n   <tei:p>[^ ]+ 18[5-6][0-9]\.</tei:p>\n
(<tei:pb [^>]+>\n)   <tei:p>[^ ]+ 18[5-6][0-9]\.</tei:p>\n   <tei:p>[0-9]+</tei:p>\n
(<tei:pb [^>]+>\n)   <tei:p>[^ ]+ 18[5-6][0-9]\. [0-9]+</tei:p>\n
(<tei:pb [^>]+>\n)   <tei:p>[0-9]+ [^ ]+ 18[5-6][0-9]\.</tei:p>\n
(<tei:pb [^>]+>\n)   <tei:p>[^ ]+ 18[5-6][0-9]\.</tei:p>\n

Pour pouvoir faire ces C/R multilignes par script (sur tous les fichiers sources), j'ai écrit la nouvelle macro 'MultiLineSearchReplaceInDirectoryMacro.groovy'.

Pour régler les regexp, j'ai développé une nouvelle macro pour chercher des regexp multilignes 'FindMultiLineRegExpMacro.groovy'.

Remarque : ce traitement n'a résolu que quelques cas de titres courants. En particulier il n'a pas traité les cas où l'OCR a produit des résultats incorrects. Les cas traités sont listés dans le journal de recherche de regexp de titres courants.

Métadonnées

J'ai produit un tableau de métadonnées à partir des informations se trouvant dans les entêtes teiHeader des sources.

Pour cela j'ai utilisé la nouvelle macro prototype 'XMLText2MetadataCSVMacro.groovy'.

Cette macro s'est appuyée sur les déclarations de métadonnées suivantes :

titre=tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@type='main']/text()
volume=tei:TEI/tei:teiHeader/tei:fileDesc/tei:sourceDesc/tei:biblStruct/tei:monogr/tei:imprint/tei:biblScope[@type='volume']/text()
numero=tei:TEI/tei:teiHeader/tei:fileDesc/tei:sourceDesc/tei:biblStruct/tei:monogr/tei:imprint/tei:biblScope[@type='issue']/text()
pages=tei:TEI/tei:teiHeader/tei:fileDesc/tei:sourceDesc/tei:biblStruct/tei:monogr/tei:imprint/tei:biblScope[@type='pages']/text()
annee=tei:TEI/tei:teiHeader/tei:fileDesc/tei:sourceDesc/tei:biblStruct/tei:monogr/tei:imprint/tei:date/text()

Pour régler les XPaths ci-dessus, j'ai développé une nouvelle macro 'GetXPathMacro.groovy'.

Le fichier 'metadata.csv' résultant a la structure suivante (après édition de métadonnées supplémentaires) :

id,titre,mois,annee,titrelong,numero,moisparannee,moisnum,volume,pages
article_baip_1254-0714_1850_num_1_1_970_tei,N° 1,Janvier,1850,N° 1 — Janvier 1850,01,1850-01,1,1,1-26
article_baip_1254-0714_1850_num_1_2_971_tei,N° 2,Février,1850,N° 2 — Février 1850,02,1850-02,2,1,29-47
...
  • id : nom fichier
  • titre : le titre extrait de teiHeader simplifié
  • mois : mois alphabétique
  • annee : année numérique
  • titrelong : le titre extrait de teiHeader
  • numero : numéro numérique pouvant être trié alphabétiquement
  • moisparannee : numéros numériques de mois et d'années concaténés
  • moisnum : mois numérique
  • volume : volume numérique
  • pages : pages de début et de fin dans le volume

Les métadonnées extraites automatiquement sont : mois, annee, titrelong, moisnum, volume, pages.

J'ai respecté la datation et l'ordre des tables chronologiques et alphabétiques de fin d'année, en différenciant leur numérotation de celle du bulletin (numero) pour pouvoir facilement faire un sous-corpus sans ces tables ainsi que l'avis (unique). [l'AFC montre clairement trois paquets : bulletins, tables chrono, tables alpha]

Paramètres d'import additionnels

Les paramètres supplémentaires suivants de l'import XML/w+CSV ont été utilisés (import.properties) :

ignoredelements=note|teiHeader
editionpage=pb
  • ignoredelements : les notes et les teiHeader sont ignorés des sources
  • pb est la balise de pagination (le nombre de mots pas page par défaut n'a pas été changé → certaines pages sont sur-paginées par rapport à l'édition d'origine (à améliorer dans la version 2)

Livraison de la version 2 - compte-rendu de recette de l'import 1

Retours de BP sur la v1

Point A

J'ai observé que les textes étaient dans l'ordre chronologique au niveau des années, mais pour les mois à l'intérieur des années il y a qq inversions pour 1850 et 1858 (ce sont les années qui comportent les numéros 10 et 100, le tri sur les noms de fichiers est sur la chaîne de caractères et le pb est que le numéro n'est pas codé avec une longueur constante sur 3 caractères avec des zéros initiaux).

Initialement, j'ai créé la métadonnée 'moisparannee' pour encoder l'ordre des textes. Or je me suis aperçu que les commandes Progression et Édition (texte suivant) n'avaient pas le même avis sur cet ordre (créé par le module d'import XML/w+CSV ici). Du coup je me suis retranché sur les noms de fichiers de textes, pour que tous les outils offrent une même relation d'ordre sur la séquence de textes, en y recodant les préfixes des numéros à deux chiffres : j'avais oublié qu'il pouvait y avoir 3 chiffres.

Après discussion avec MD, il est confirmé que le paramètre d'import 'sortmetadata' n'est pas pris en compte pour créer l'ordre des éditions de textes (dans le module d'import XML/w+CSV) [ticket TBX ?]. Du coup :

  1. j'ai recodé les noms de fichiers en tenant compte des 3 chiffres (le script de renommage est documenté ici) : j'espère que c'est la bonne cette fois ;
  2. il faut INTERDIRE l'utilisation du paramètre 'sortmetadata' tant que les différentes commandes n'auront pas un avis homogène sur cet ordre [ticket DOC ?].

Point B

Si j'ai bien compris, Persée se prépare à coder les articles au sein de chaque numéro, mais de façon éclatée (autant de fichiers), et cette unité de travail plus précise semble intéresser les historiens (Francesco, Emmanuelle). Est-ce que cela pourrait être pertinent de discuter avec Persée d'un codage plutôt de type div (qu'ils ont évoqué aussi comme une de leurs pratiques me semble-t-il), avec malgré tout les informations correspondantes ? (portées donc plutôt par un attribut plutôt que dans un entête, par ex. pagination)

On peut demander à Persée une version 2 où un bulletin est encodé par un fichier, avec des div pour marquer des limites internes. Mais :

  • je n'ai pas souvenir qu'ils proposent cela (je m'apprétais à construire cette représentation mono-fichier nous-mêmes)
  • ce sera un corpus expérimental incomplet jusqu'à l'été. Qui en seraient les destinataires ? Quelle serait la fréquence de mise à jour ?

En fait je me demande s'il ne serait pas plus intéressant de thématiser les délimitations de sections internes du côté d'annotations faites par nous, plutôt que du côté de Persée (ce qui supposerait que notre environnement d'annotation soit disponible pour le vacataire préssenti).

Point supplémentaire

Point C

J'ai profité de cette nouvelle version pour affiner la pagination des éditions : désormais, les sauts de page correspondent exactement aux <pb/> des sources TEI de Persée (il n'y a plus de sur-pagination pour limiter le nombre de mots par page). On est donc prêts pour l'édition synoptique avec les facsimilés (dans une prochaine étape).

Nouvelle version : v2

La version 2 a été déposée dans le répertoire partagé.

Planification

Étape 0

Un premier objectif est de réaliser une première version d'import du corpus complet, pour la faire circuler auprès des partenaires utilisant TXM en local ou à distance en l'hébergeant temporairement sous contrôle d'accès dans le portail TXM de l'équipe Cactus.

Étapes ultérieures possibles :

  • ajouter les éditions synoptiques en utilisant des images en ligne (voir avec Persée où seraient les images)
  • ajouter les métadonnées extraites des teiHeader

Étape 1

Un deuxième objectif consiste à développer dans TXM la possibilité d'annoter des séquences de mots par des catégories sémantiques de SyMoGIH.

Étape 2

Un troisième objectif consiste à développer dans TXM la possibilité d'exporter le corpus annoté d'après les spécifications pour un encodage TEI propre à la sémantique SyMoGIH.

Moyens

Il serait intéressant de se mettre en relation avec le géographe qui a déjà manipulé des sources TEI de Persée pour importer des articles de revues de géographie dans TXM, et qui a en particulier calculé des tableaux de métadonnées à partir des teiHeader en Groovy et XPath.

Étape 1.1

Un premier binaire a été réalisé → voir la section ci-dessus “Compte-rendu du premier import”.

Étape 2.1

Un premier prototype de TXM 0.7.7 permettant l'annotation d'entités SyMoGIH par concordance est en cours de définition :

Réunions


Recettes

Cette section concerne les recettes des différents chantiers du projet de liaison.

Recette étape 0

La recette valide en utilisant et vérifiant les versions successives du corpus BHE importé dans TXM.

Les versions 1 et 2 ont été diffusées et testées.

Recette étape 1

La recette valide le premier prototype de TXM permettant l'annotation SyMoGIH : Recette BETA de l'étape 1 du chantier annotation SyMoGIH avec TXM, 7 Juillet 2016

Recette étape 2

La recette valide la capacité à exporter les annotations SyMoGIH depuis TXM vers la plateforme XML du PHN.

  • il faut être connecté à Internet pour toute la durée de la recette
  • il faut avoir un compte SyMoGIH
  • télécharger le corpus du roman « Voyage en 80 jours » de Jules Vernes (TDM80JS.txm) préparé pour la recette : https://sourceforge.net/projects/txm/files/corpora/tdm80j/TDM80JS.txm/download
  • lancer TXM 0.7.7
  • passer le niveau de mise à jour à « BETA »
    • menu « Outils / Préférences »
      • rubrique « TXM / Avancé »
      • Mettre le champ « Niveau de mise à jour » à la valeur « BETA »
  • lancer la mise à jour 0.7.8 BETA
    • menu « Fichier / Vérifier les mises à jour »
    • installer la mise à jour « TXM 0.7.8 BETA » (avec redémarrage)
  • charger le corpus TDM80JS.txm dans TXM
  • activer le mode d'annotation 'Avancé' dans les préférences TXM > Utilisateur > Annotation
  • annoter le lieu Paris
    • faire la concordance du mot “Paris”
    • lancer l'annotation en cliquant sur le bouton crayon
      • lors du premier accès, le site du référentiel SyMoGIH vous demande de vous connecter :
        → renseigner votre login et mot de passe SyMoGIH
        ACTUELLEMENT JE NE DÉPASSE PAS CE STADE SUR MON PORTABLE : le clic sur le bouton crayon provoque ces messages dans la console
    • dans la barre d'outils d'annotation
      • choisir le type 'Lieux'
      • choisir la valeur 'NaPl2085' (d'après http://symogih.org/?q=named-places-list)
      • remplacer 'lignes sélectionnées' par 'toutes les lignes'
      • cliquer sur 'OK'
        ACTUELLEMENT JE NE DÉPASSE PAS CE STADE SUR MON PC DE BUREAU : le clic sur 'OK' provoque cette stacktrace
  • annoter la personne “James Forster”
    • faire la concordance de la séquence “James” “Forster”
    • lancer l'annotation en cliquant sur le bouton crayon
    • dans la barre d'outils d'annotation
  • exporter les annotations
    • sélectionner le corpus TDM80J
    • lancer la commande 'Fichier > Exporter les annotations' (l'enregistrement est inclus dans l'export, si nécessaire)
      • choisir le dossier (à créer ou déjà crée) dans lequel on exporte
  • les fichiers résultants se trouvent dans le répertoire choisi précédemment
    • le fichier 'tdm80j_<identifiant-utilisateur>_annotation.xml' contient les annotations en standoff :
<?xml version="1.0" ?>
<TEI>
    <teiHeader>
        <fileDesc>
            <titleStmt>
                <title>tdm80j</title>
            </titleStmt>
            <publicationStmt>
                <p>PUBLICATION INFO à renseigner</p>
            </publicationStmt>
            <sourceDesc>
                <p>Ce document permet l'annotation sémantique de tous les textes</p>
            </sourceDesc>
        </fileDesc>
        <encodingDesc>
            <projectDesc>
                <p>Annotations created by gazelledess, for the use in Symogih XML platform</p>
            </projectDesc>
        </encodingDesc>
    </teiHeader>
    <text>
        <body>
            <div>
                <div>
                    <head>
                        <date type="annotation_date" when="2016-10-03"/>
                    </head>
                    <span type="named_entities_identifications" ana="NaPl2085"
                        target="#w_tdm80j_2464"><!--type=NaPl--></span>
               
              	 </div>
             </div>
	 </body>
     </text>
 </TEI>
  • le fichier 'tdm80j.xml' contient le texte avec les mots encodés pour l'ancrage des annotations
<?xml version="1.0" ?>
<TEI>
 <teiHeader>...</teiHeader>
 <text>
   <div type="chapter" id="div1" part="N" org="uniform" sample="complete">
     <head/>
     <p part="N">
       <w id="w_tdm80j_2460">
           <txm:form>un</txm:form>
           <txm:ana resp="none" type="#n">2460</txm:ana>
           <txm:ana resp="#txm" type="#frpos">DET:ART</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">un</txm:ana>
       </w>
       <w id="w_tdm80j_2461">
           <txm:form>vrai</txm:form>
           <txm:ana resp="none" type="#n">2461</txm:ana>
           <txm:ana resp="#txm" type="#frpos">ADJ</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">vrai</txm:ana>
       </w>
       <w id="w_tdm80j_2462">
           <txm:form>Parisien</txm:form>
           <txm:ana resp="none" type="#n">2462</txm:ana>
           <txm:ana resp="#txm" type="#frpos">NOM</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">parisien</txm:ana>
       </w>
       <w id="w_tdm80j_2463">
           <txm:form>de</txm:form>
           <txm:ana resp="none" type="#n">2463</txm:ana>
           <txm:ana resp="#txm" type="#frpos">PRP</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">de</txm:ana>
       </w>
       <w id="w_tdm80j_2464">
           <txm:form>Paris</txm:form>
           <txm:ana resp="none" type="#n">2464</txm:ana>
           <txm:ana resp="#txm" type="#frpos">NAM</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">Paris</txm:ana>
       </w>
       <w id="w_tdm80j_2465">
           <txm:form>,</txm:form>
           <txm:ana resp="none" type="#n">2465</txm:ana>
           <txm:ana resp="#txm" type="#frpos">PUN</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">,</txm:ana>
       </w>
       <w id="w_tdm80j_2466">
           <txm:form>depuis</txm:form>
           <txm:ana resp="none" type="#n">2466</txm:ana>
           <txm:ana resp="#txm" type="#frpos">PRP</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">depuis</txm:ana>
       </w>
       <w id="w_tdm80j_2467">
           <txm:form>cinq</txm:form>
           <txm:ana resp="none" type="#n">2467</txm:ana>
           <txm:ana resp="#txm" type="#frpos">NUM</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">cinq</txm:ana>
       </w>
       <w id="w_tdm80j_2468">
           <txm:form>ans</txm:form>
           <txm:ana resp="none" type="#n">2468</txm:ana>
           <txm:ana resp="#txm" type="#frpos">NOM</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">an</txm:ana>
       </w>
       <w id="w_tdm80j_2469">
           <txm:form>qu’</txm:form>
           <txm:ana resp="none" type="#n">2469</txm:ana>
           <txm:ana resp="#txm" type="#frpos">PRO:REL</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">que</txm:ana>
       </w>
       <w id="w_tdm80j_2470">
           <txm:form>il</txm:form>
           <txm:ana resp="none" type="#n">2470</txm:ana>
           <txm:ana resp="#txm" type="#frpos">PRO:PER</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">il</txm:ana>
       </w>
       <w id="w_tdm80j_2471">
           <txm:form>habitait</txm:form>
           <txm:ana resp="none" type="#n">2471</txm:ana>
           <txm:ana resp="#txm" type="#frpos">VER:impf</txm:ana>
           <txm:ana resp="#txm" type="#frlemma">habiter</txm:ana>
       </w>
      </p>
     </div>
     </text>
 </TEI>

Retour à la liste des projets.

public/umr_larhra_projet_bhe.1476718215.txt.gz · Dernière modification: 2016/10/17 17:30 par severine.gedzelman@ens-lyon.fr