Outils pour utilisateurs

Outils du site


public:upr_irht_oriflamms:specs_5

Spécifications TXM pour Oriflamms. Étape V5

Extension Oriflamms

Transférer toutes les fonctionnalités qui ne sont pas liées au tronc commun dans une extension et créer une commande par macro.

Ces commandes sont regroupées dans le menu principal “Oriflamms”.

Création d'un projet Oriflamms : commande TEI2Project

(Spécification pour les recettes 1 et 2)

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 avec teiCorpus, 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

Liens

Importation dans TXM

Préparation de l'import TXM pour le module XML-XTZ : commande Project2XTZ

  • résoudre les choices : produire la forme du mot/charactère (+/- abbr) et les propriétés “expan”, “letters-all”, “letters-alignable”, “characters”, “abbr-n”
  • calculer la taille des abréviations et sauver dans une propriété de mot (si > 0 le mot est abrévié) éventuellement prévoir une propriété “est abrévié”
  • calculer les distances aux milestones lb, cb et pb. Nouvelle option d'import XML-XTZ qui calcule les distance et projette l'identifiant des milestones indiqués
  • préparer une édition synoptique avec les images du projet oriflamms
Terminologie
        
    Linguistique :
    Une marque d'abréviation n'est pas une lettre.
    Un caractère est soit une lettre, soit une marque d'abréviation, soit une marque de ponctuation.
    Une lettre est alignable si elle occupe une position autonome sur l'axe horizontal de la chaîne d'écriture.
    Une lettre non alignable peut être suscrite ou représentée par une marque d'abréviation.
    
    Graphique :
    Un caractère alignable a une coordonnée autonome dans l'image.
    L'alignement de certains caractères (modifieurs) dépend de celui d'autres caractères. Ces 
    caractères, non alignables de manière autonome, appartiennent à la catégorie Unicode "combining 
    characters" (\p{M})
    
    Pour les dénombrements :
    - les proportions peuvent se baser sur
      - (a) le nombre total de lettres (expansions comprises)
      - (b) le nombre total de lettres (expansions comprises) et des ponctuations
      - (c) le nombre total de caractères (marques d'abréviations alignables comprises, mais pas les ponctuations)
      - (d) le nombre total de caractèrss (marques d'abréviations alignables et ponctuations comprises)
    
    (EN)CODAGE :
    L'attribut "caractere" est un caractère alignable.
    
     Total lettres : comparantur = 11 
     Total lettres alignables : pant = 4     
     Total caractères alignables : ꝯꝑant = 5
     Total "lettres supprimées"  = Total lettres - Total lettres alignables : 11 - 4 = 7
     Total "caractères alignables supprimés" = Total lettres - Total caractères alignables : 11 - 5 = 6
     Nombre d'abréviations (balises <abbr>) = 3
     
   Expansions : 
     9 -> (com)
     ꝑ -> p(ar)
     ant
     ᷑ -> (ur)
     

Option corpus tokénisé par mot

Source au format projet Oriflamms

       <w>
        <choice>
            <expan ana="ori:align-no"><ex>com</ex></expan>
            <abbr><am></am></abbr>
        </choice>
        <choice>
            <expan ana="ori:align-no">p<ex>ar</ex></expan>
            <abbr><am></am></abbr>
        </choice>ant<choice>
            <expan ana="ori:align-no"><ex>ur</ex></expan>
            <abbr><am></am></abbr>
        </choice>
    </w>

Source prête à l'import XTZ

<w expan="(com)p(ar)ant(ur)" letters-all="comparantur" letters-alignable="pant" characters="ꝯꝑant" abbr-n="3">ꝯꝑant᷑</w>
  • Total lettres = string-length(w/@letters-all)
  • Total lettres alignables = string-length(w/@letters-alignable)
  • Total caractères alignables = string-length(w/@characters)
  • Total caractères = string-length(w/text())
  • Nombre d'abréviations = w/@abbr-n as xs:integer

Option corpus tokénisé par caractère

Source au format projet Oriflamms

       <w>
        <choice>
            <expan ana="ori:align-no"><ex>com</ex></expan>
            <abbr>
                <c><g type="am"></g></c>
            </abbr>
        </choice>
        <choice>
            <expan ana="ori:align-no">p<ex>ar</ex></expan>
            <abbr>
                <c><g type="am"></g></c>
            </abbr>
        </choice>an<choice>
            <abbr>
                <c>t<g type="am"></g></c>
            </abbr>
            <expan ana="ori:align-no">t<ex>ur</ex></expan>
    </w>

Ontologies

préparation

On applique les feuilles XSL du corpus C :

  • 1-split-merge/1-oriflamms-split-surfaces.xsl : découper en page le corpus lettre
  • 2-front/txm-front-teioriflammsw-xtz.xsl : créer les attributs, résoudre des choices, etc.

injection

Lors de la préparation du corpus à l'import, on projette des données des ontologies dans les propriétés de caractères :

  • sign
    • si le fichier PROJET/ontologies_links/[identifiant du corpus]_[identifiant de l'image]-ontolinks.xml existe et si dans ce fichier on trouve une référence de l'identifiant du caractère associée à une référence vers l'ontologie globale (préfixe ggly), on projette la valeur de mapping[@type='standardized'] correspondant
    • sinon, si le fichier PROJET/ontologies_links/[identifiant du corpus]_[identifiant de l'image]-ontolinks.xml existe et si dans ce fichier on trouve une référence de l'identifiant du caractère associée à une référence vers l'ontologie locale (préfixe lgly) dont l'identifiant ne commence pas par “auto”, on projette la valeur de glyph/@xml:id le plus court correspondant
    • sinon, si le fichier ../charDecl.xml existe et qu'on y trouve le même caractère dans mapping[@type='Unicode'], on projette la valeur de mapping[@type='standardized'] correspondant
    • sinon, on copie la valeur de l'attribut “characters” en remplaçant les majuscules par des miniscules
  • allograph-exp
    • si le fichier PROJET/ontologies_links/[identifiant du corpus]_[identifiant de l'image]-ontolinks.xml existe et si dans ce fichier on trouve une référence de l'identifiant du caractère associée à une référence de l'ontologie globale (préfixe ggly), on projette la valeur de charProp[localName='entity']/value correspondant
    • sinon, si le fichier PROJET/ontologies_links/[identifiant du corpus]_[identifiant de l'image]-ontolinks.xml existe et si dans ce fichier on trouve une référence de l'identifiant du caractère associée à une référence de l'ontologie locale (préfixe lgly) dont l'identifiant ne commence pas par “auto”, on projette la valeur de glyph/@xml:id le plus long correspondant
    • sinon, on copie la valeur de l'attribut “characters”
  • allograph-auto
    • si le fichier PROJET/ontologies_links/[identifiant du corpus]_[identifiant de l'image]-ontolinks.xml existe et si dans ce fichier on trouve une référence de l'identifiant du caractère associée à une référence de l'ontologie locale (préfixe lgly) dont l'identifiant commence par “auto”, on projette la valeur de glyph/@xml:id le plus long correspondant en retirant le préfixe “auto_”
    • sinon, on copie la valeur de l'attribut “characters”

Import XTZ

On copie un certain nombre de feuilles XSL pour l'import XTZ :

  • Corpus W
    • 2-front/txm-front-teioriflammsc-xtz.xsl : créer les attributs, résoud des choices, etc.
    • 4-edition/1-default-html.xsl et 4-edition/2-default-pager.xsl : édition par défaut
    • 4-edition/3-facsimile-pager.xsl : édition facsimilé
  • Corpus C
    • 4-edition/1-default-html.xsl et 4-edition/2-default-pager.xsl : édition par défaut
    • 4-edition/3-facsimile-pager.xsl : édition facsimilé

Analyse du corpus

Terminologie

  • les proportions (ou pourcentages) sont calculés par rapport à différents contextes :
    • début, milieu ou fin de ligne
    • intérieur ou extérieur d'entités
    • début, milieu ou fin de mot (pour les caractères)
    • etc.

Commande AbbreviationsAndLines

(Spécification pour la recette 3)

  • On sélectionne l'un des corpus CQP : mot ou caractère
  • on indique la distance au début de ligne
  • on indique la distance à la fin de ligne
  • → GO

Écrit dans un fichier CSV :

  • plusieurs colonnes : corpus, text, page, colonne, partie de ligne et
  • dans 3 parties de ligne différentes : début, milieu et fin
  • pour chaque partie de ligne
    • Nombre d’abréviations de la partie (Nabbr)
    • Nombre de caractères supprimés par les abréviations (NsupAbbr)
      • = Nombre de lettres (résolutions comprises) - nombre de caractères alignables
    • Nombre de lettres total de la partie de la ligne, résolutions comprises
    • Pourcentage de lettres supprimées par les abréviations par rapport au texte développé

Exemple de résultat :

corpus text_id pb_id cb_id lb_id line_part Nabbr NcharAbbr Ntotal %=NcharAbbr/Ntotal
MSDATES T1 P1 C1 L1 s 5
MSDATES T1 P1 C1 L2 m 0
MSDATES T1 P1 C1 L3 e 2
MSDATES T2 P1 C1 L1 s 5
MSDATES T2 P1 C1 L2 m 2
MSDATES T2 P1 C2 L1 e 8
MSDATES T2 P1 C2 L2 s 10
MSDATES T2 P2 C1 L1 m 8
MSDATES T2 P2 C1 L2 e 10

Cas particulier :

  • un mot coupé par un saut de ligne

Ces mots sont découpés en 2 tokens et le mot entier est recodé en structure supérieure. Par exemple :

<w>
  <seg type="wp" part="I">sonorita</seg>
  <lb break="no"/>
  <seg type="wp" part="F">tare<abbr><am>̃</am></abbr></seg>
</w>

devient

<w-lb expan="sonoritatare(m)" letters-all="sonoritatarem" letters-alignable="sonoritatare" characters="sonoritatare" abbr-n="1">
  <w type="wp" part="I" expan="sonorita" letters-all="sonorita" letters-alignable="sonorita" characters="sonorita" abbr-n="0">sonorita</w>
  <lb break="no"/>
  <w type="wp" part="F" expan="tare(m)" letters-all="tarem" letters-alignable="tare" characters="tare" abbr-n="1">tare<abbr><am>̃</am></abbr>/w>
</w-lb>

Commande AbbreviationsAndSemantics

(Spécification pour la recette 4)

  • On sélectionne l'un des corpus CQP : mot ou caractère
  • On sélectionne une ou plusieurs structures dans une liste déroulantes des structures du corpus sélectionné de la vue Corpus:
  • → GO

Écrit dans un fichier CSV :

  • plusieurs colonnes : corpus, text, page, colonne, entité et
  • pour chaque entité d'une colonne de la source + ce qui est en dehors (#REST)
    • Nombre d’abréviations dans l'entité (Nabbr)
    • Nombre de caractères supprimés par les abréviations (NsupAbbr)
      • = Nombre de lettres (résolutions comprises) - nombre de caractères alignables
    • Nombre de lettres total dans l'entité, résolutions comprises
    • Pourcentage de lettres supprimées par les abréviations par rapport au texte développé

exemple, si on a coché : persName, orgName :

corpus         text      page      column    entity        Nabbr        NcharAbbr        Ntotal        %=NcharAbbr/Ntotal
MSDATES        T1        P1        C1        persName        5        ...        ...
MSDATES        T1        P1        C1        orgName        2        ...        ...
MSDATES        T1        P1        C1        #REST        8        ...        ...
MSDATES        T1        P1        C2        persName        10        ...        ...
MSDATES        T1        P1        C2        orgName        10        ...        ...
MSDATES        T1        P1        C2        #REST        10        ...        ...
...
MSDATES        T2        P2        C2        persName        10        ...        ...
MSDATES        T2        P2        C2        orgName        8        ...        ...
MSDATES        T2        P2        C2        #REST        10        ...        ...

Production de l'édition "par défaut" pour un corpus tokenisé par caractère

Cette édition doit appliquer des règles spécifiques pour l'insertion d'espaces blancs :

  • pas de blanc entre les caractères à l'intérieur d'un mot (<c>)
  • un blanc entre deux mots (<w>)
  • ponctuations (<pc>)
    • pas de blanc devant, un blanc après (si le suivant est un mot) : [.,\)'’]
    • un blanc insécable devant, un blanc après (si le suivant est un mot) : [:;!?]
    • un blanc devant, un blanc insécable après [«“]
  • un trait d'union (césure) après la première moitié d'un mot coupé en fin de ligne (w/seg[@type=“wp”][1])

Commande Allographes

(chantier B)

Spécification pour les recettes 5 et 6 (calcul sur les caractères)

  • On sélectionne un corpus ou un sous-corpus de type “caractère”
  • on choisit une liste de signe (expression régulière)
  • on choisit une liste d'allographes connus du signe (expression régulière)
  • on tape une requête CQL qui contient un @ pour indiquer la position du caractère à dénombrer
    • prévoir peut-être d'améliorer l'assistant de requête : ajouter les structures + mots clés expand to, within

Terminologie

Décryptage

  • Des menus déroulants = définition des contextes –> implémentation en contraintes CQL (la liste des matchs implémentant les contextes est construite par l'intersection de sous-corpus)
    • Abréviation (présence d’une abréviation dans le même mot)
      • [_.w_abbr=“true”]
    • Place dans le mot (un mot monocaractère n'a pas de milieu)
      • Début = premier caractère → <w> []
      • Milieu = pas le premier ni le dernier caractère →
        • [w.pos <_.pos+1 & w+1.pos > _.pos+1] within w
        • <w> [] []* @[] []* [] </w>
      • Fin = dernier caractère → [] </w>
    • Place dans le texte
      • Première lettre
        • De la page
          • [pb-start=“1”] (distance, en lettres, depuis le début de la page)
        • De la colonne
          • [cb-start=“1”]
        • De la ligne
          • [lb-start=“1”]
      • Dernière lettre
        • De la page
          • [pb-end=“1”] (distance, en lettres, depuis la fin de la page)
        • De la colonne
          • [cb-end=“1”]
        • De la ligne
          • [lb-end=“1”]
      • Première ligne (sauf en première place)
        • De la page
          • [lb-n=“1”]
        • De la colonne
          • [cb-n=“1”]
      • Dernière ligne (sauf en dernière place)
        • De la page
          • [lb-pb-end=“1”] (distance de la ligne depuis le bas de la page)
        • De la colonne
          • [lb-cb-end=“1”]
    • Éléments d’analyse sémantique :
      • occurrences à l’intérieur d’un
        • name
          • within name
        • placeName
        • persName
        • roleName
      • occurrences à l’intérieur d’un élément <w> contenant un attribut (générer la liste des attributs et de leurs contenus)
        • [_.w_attribut=“valeur”]
    • Éléments d’analyse syntaxique
      • Avant / après
        • Ponctuation
          • [type=“punct”] @[] (après)
      • Présent dans <w> en première position dans <s> ou <p>
        • <s> []
    • Éléments d’analyse graphique
      • Immédiatement avant
        • Liste des signes
          • Liste des allographes
            • @[] [sign=“rrot”|allograph=“slong”]
      • Immédiatement après
        • Liste des signes
          • Liste des allographes
      • Dans un texte où se trouve également :
        • Liste des signes
          • Liste des allographes
            • [sign=“rrot”] expand to text
exemple 1
  • avec une CQL + target sur un caractère
  • avec le signe sélectionné = s
  • avec l'allographe sélectionné = ſ
  • précalculer le nombre du “signe” du target (“s”) du corpus

On liste les requêtes CQL exprimant les différentes contraintes de sélection de contextes.

Tableau résultant :

corpus    texte    page    colonne    signe    allographe    %/signe
MSDATES    T1    P1    C1    s    ſ    5    1
MSDATES    T1    P1    C2    s    ſ    0    0
...
MSDATES    T1    P2    C3    s    ſ    10    2
exemple 2
  • avec une CQL + target sur un caractère
  • avec le signe sélectionné = s
  • avec les allographes sélectionné = TOUS
  • précalculer le nombre du “signe” du target (“s”) du corpus
corpus    texte    page    colonne    lettre    allographe    %/lettre
MSDATES    T1    P1    C1    s    ſ    5    1
MSDATES    T1    P1    C2    s    ſ    0    0
MSDATES    T1    P1    C2    s    S    0    0
...
MSDATES    T1    P2    C3    s    ſ    10    2
MSDATES    T1    P2    C3    s    s   42    2

Éléments d'interface

analyse d’un corpus avec indications d’abréviations

menu {Analyse graphique}
  * {abréviations et lignes}.
  * {abréviations et sémantique}.
  * {Allographes}

Abréviations et lignes

Taux d’abrègement
Début de ligne
  Mots 
 Caractères
[Fenêtre de saisie]
Fin de ligne
  Mots 
 Caractères
[Fenêtre de saisie]


Abréviations et sémantique

Liste à cocher contenant les éléments non vides descendants de <p>

Allographes

  * analyser un signe 
    * liste des signes
  * ou une analyse avancée
    * une liste des signes
    * une liste des allographes du signe sélectionnée
    * bouton ajouter un critère (paramètre d'intérogation combinée)
      * sélection du critère dans une liste déroulante
public/upr_irht_oriflamms/specs_5.txt · Dernière modification: 2016/04/21 11:04 par matthieu.decorde@ens-lyon.fr