Outils pour utilisateurs

Outils du site


public:specs_production_projet_oriflamms

Ceci est une ancienne révision du document !


Préparation d'un projet Oriflamms

Objectif

Produire un projet Oriflamms (un ensemble de dossiers contenant des fichiers au format XML-TEI-Oriflamms pour l'importation dans le logiciel Oriflamms et dans TXM) :

  • à partir d'un fichier XML-TEI Oriflamms-raw, produire les dossiers :
    • texts : 2 versions :
      • -w (tokenisé par mot)
      • -c (tokenisé par caractère)
    • zones : créer le canevas pour le logiciel Oriflamms (on peut remplacer ces fichiers par le résultat de l'alignement produit par A2IA)
    • img_links : créer le canevas pour le logiciel Oriflamms
    • (img)
    • (ontologies)
    • (ontologies_links)

Méthode

Une macro permettant d'appliquer une série de transformations XSLT et rechercher/remplacer en expressions régulières.

Liens aux spécifications et pages wiki connexes

État de la plateforme

Avancement dans l'élaboration de la solution

Solution

État de l'art

avec corpus.xml le fichier XML-TEI en entrée avec "/" la racine du projet Oriflamms, créé

  1. créer le dossier du projet à coté de corpus.xml nommé "corpus"
  2. Faire une copie du fichier en entrée (Groovy) → /corpus.xml
  3. (Optionnel) Transformation XSL customisée pour un corpus spécifique (paramétrable depuis le formulaire de la macro) (XSLT patch : par ex. oriflamms-convert-inscriptions-oriflammsxml.xsl) → /corpus.xml
  4. Insertion des milestones manquants (milestone[@unit=“surface”] pour chaque image, cb et lb systématiques) (XSLT patch : oriflamms-patch-milestones.xsl) → /texts/corpus-w.xml
  5. Tokenisation par mot (XSLT simple : oriflamms-tokenize-words.xsl) → /texts/corpus-w.xml
  6. Re-tokenisation avec regexp (Groovy patch) → /texts/corpus-w.xml
    </w><w[^>]*> --> (rien)
    </w>\s*(<milestone[^>]*>)?\s*(<pb[^>]*>)?\s*(<cb[^>]*>)?\s*(<lb[^>]*break="no"[^>]*>)\s*<w[^>]*>  --> $1$2$3$4
  7. Balisage des parties de mots coupés par des sauts de ligne, etc. (XSLT patch : oriflamms-patch-words-with-lb.xsl)
  8. Identification et numérotation des milestones et des mots (milestone[@unit=“surface”], pb, lb, lb, w, pc, seg[@type=“wp”])
    • XSLT patch : oriflamms-addxmlid.xsl → /texts/corpus-w.xml
    • Groovy patch
      • milestestone[@unit=“surface”]
        • si absent, ajouter @xml:id=surf_$corpusID_$imgID où
          • corpusID = nom du fichier de transcription sans suffixes et extension
          • imgID = valeur de @facs sans extension (i.e. nom du fichier image)
        • si absent, ajouter @n (comptage de 1 à n sur tout le document)
      • pb
        • si absent, ajouter @xml:id=page_$corpusID_$N où
          • N = compteur de 1 à n sur tout le document
        • si absent, ajouter @n (comptage de 1 à n sur tout le document)
      • cb
        • si absent, ajouter @xml:id="col_$pageID_$N" où
          • pageID = identifiant du pb précédent sans le préfixe “page_”
          • N = compteur de 1 à n à partir du pb précédent
        • si absent, ajouter @n (comptage de 1 à n à partir du pb précédent)
      • lb
        • si absent, ajouter @xml:id="line_$colID_$Nlb" où
          • colID = identifiant du cb précédent sans le préfixe “col_”
          • Nlb = compteur de 1 à n à partir du cb précédent (avec et sans @type=“rejet”)
        • si not(@type=“rejet”)
          • si absent, ajouter @n="$NCurentLine" où
            • NCurentLine se remet à 1 à chaque cb
            • si un lb[not([type=“rejet”)] a un @n, NCurentLine prend sa valeur et est incrémenté à chaque nouveau lb[not(@type=“rejet”)]
        • si @type=“rejet”
          • si pas de @n –> on met un warning “no n attribute provided for 'rejet' line break” et on prend le @n du premier lb suivant
          • si absent, ajouter @corresp="#$correspLineID" où
          • correspLineID = @xml:id="line_$colID_$(Nlb+1)"
      • w
        • si absent, ajouter @xml:id="w_$corpusID_$N" où
          • corpusID = identifiant du corpus
          • N = compteur de 1 à N pour tous les w et pc mélangés dans tout le document
      • pc
        • si absent, ajouter @xml:id="pc_$corpusID_$N" où
          • corpusID = identifiant du corpus
          • N = compteur de 1 à N pour tous les w et pc mélangés dans tout le document
      • seg[@type=“wp”]
        • si absent, ajouter @xml:id="wp_$wordID_$N" où
          • wordID = identifiant du mot “parent” sans le préfixe w_
          • N = compteur de 1 à N, se remet à 1 dans chaque mot
  9. Tokenisation par caractère (XSLT simple : oriflamms-tokenize-chars-1-tag.xsl) → /texts/corpus-c.xml (w tjs présents)
  10. Identification des caractères (XSLT patch : oriflamms-tokenize-chars-2-identify.xsl) → /texts/corpus-c.xml (w tjs présents)
  11. Création de fichiers zones et de liens (un fichier par surface) (XSLT split : oriflamms-convert-transcriptions-orizones.xsl) /texts/corpus-w.xml → /zones/* et /img_links/*

Prototypes

Version finale

Documentation

Utilisateur

Développeur

Recette

Protocole de test

Alpha

Beta

État courant

Qui Quand Quoi

public/specs_production_projet_oriflamms.1450173683.txt.gz · Dernière modification: 2015/12/15 11:01 par alexei.lavrentev@ens-lyon.fr