Outils pour utilisateurs

Outils du site


public:spec_corpus

Spécification des Corpus

Un corpus TXM est composé de textes contenant des structures contenant des mots.

Les corpus, textes, structures et mots ont des propriétés.

Les textes peuvent bénéficier d'une ou plusieurs éditions.

Un corpus est créé par importation depuis des sources TXT, XML, etc. ou par chargement depuis un fichier de corpus binaire.

Tous les modules d'import, sauf CQP, doivent converger vers une représentation pivot XML-TXM avant l'indexation des mots et la production des éditions [ce n'est pas encore tout à fait le cas, notamment pour les textes synchonisés et les corpus parallèles].

On peut effectuer différents calculs sur un corpus :

  • création de configurations : sous-corpus, partition
  • outils documentaire : concorance, édition…
  • outils de synthèse quantitative : AFC, CAH, spécificités…
  • outils à cheval documentaire/quantitatif : lexique, index…

Les commandes et les objets et résultats sont reliés par des hyperliens :

  • retour au texte depuis une concordance : le pivot de la concordance est mis en évidence dans la page d'édition

Spécification des Corpus Parallèles

Voir la spécification des Corpus parallèles.

Voir la spécification des Corpus alignés.

Solution jusqu'à TXM 0.7.9

Implémentation d'un corpus

  • corpus et textes sont “indexés” dans import.xml
  • textes, structures et mots sont indexés dans un corpus CQP
  • les éditions sont stockées/indexées dans des répertoires de fichiers
  • les relations éditions/pages/mots sont “indexés” dans import.xm

Création d'un corpus par import

Le workflow d'import utilise plusieurs états de représentation des textes :

  • TXT
  • XML
  • XML-TEI TXM
  • WTC
  • XHTML

Le workflow crée les textes, les structures, les mots et les éditions en plusieurs étapes :

  1. Importer
  2. Annotate
  3. Compiler
  4. Pager

Création des structures

Les structures sont interrogeables par CQP à partir du moment où elles sont représentées dans le WTC par une ligne de balise (ouvrante et fermante) et une propriété (au moins une quelconque).

Solution 1
  • TXM 0.7.9 : tous les modules important un format basé sur XML doivent faire en sorte que les structures en WTC aient au moins une propriété (pour pouvoir être manipulée dans TXM)
    • tous les modules d'import basés sur XML ne font pas la différence entre l'absence d'une propriété (<p></p>) et une valeur de propriété vide (eg valeur <p n=""></p> ou <p n=''></p> en XML)
    • pour faire indexer la structure dans CQP :
      • les modules XML/w et XTZ ajoutent une propriété @n 'numérotée à partir de '1' pour chaque texte si aucun attribut est présent
Solution 2
  • autres stratégies pour garantir l'indexation de la structure :
    • a) ajouter systématiquement une propriété 'txmn' numérotée à partir de '1' pour chaque texte
    • b) ajouter systématiquement une propriété 'txmstruct' à la valeur vide

Création des mots

Les mots sont interrogeables par CQP à partir du moment où ils sont représentées dans le WTC par une ligne de mot et une propriété (au moins la propriété 'word').

Solution 1
  • TXM 0.7.9 : tous les modules d'import basés sur XML ne font pas la différence entre l'absence d'une propriété (<w></w>) et une valeur de propriété vide (eg valeur <w p1=""></w> ou <w p1=''></w> en XML)
    • pour implémenter les hyperliens basés sur les mots :
      • les modules d'import créent une propriété @id avec la syntaxe XML-TXM, qui s'empêche d'utiliser certains caractères (tirets, espaces, etc.) pour le retour au texte
        • si les sources XML contiennent déjà des IDs, ils sont normalisés selon les mêmes règles que pour la création d'ID XML-TXM

Création d'édition

Solution 1
  • la mise en évidence de mots dans une page d'édition se fait par mise à jour de CSS : un élément <span> de la représentation HTML a un identifiant correspondant à valeur de la propriété 'id' du mot (dans CQP)
    • la forme de l'identifiant de mot doit répondre à la syntaxe CSS → les tirets, les espaces, etc. sont supprimés

Solution TXM 0.8.0

Restauration&chargement des corpus

  • A l'installation de TXM :
    1. si ~/TXM-0.8.0./corpora n'est pa vide, TXM recharge les corpus
    2. si ~/TXM/corpora existe, TXM recharge (et transforme) les corpus dans ~/TXM-0.8.0./corpora
    3. TXM charge et remplace les corpus de TXMINSTALL/samples
  • Dans la session de travail de TXM
    • la commande Fichier > Charger > un corpus binaire .txm : charge un corpus 0.7.9 ou 0.8.0 sélectionné par l'utilisateur
    • la commande Fichier > Charger > un répertoire de corpus binaire .txm : charge les corpus 0.7.9 ou 0.8.0 sélectionnés par l'utilisateur à partir d'un répertoire
    • En mode expert :
      • la commande Fichier > Charger > le répertoire d'un corpus binaire
      • la commande Fichier > Charger > des répertoires de corpus binaire

Description fonctionnelle

Cycle de vie d'un corpus

Implémentation

Axe contenance

Les corpus sont organisés dans un “Workspace” qui utilise le “Workspace RCP”, qui repose sur le répertoire ~/TXM-<version>/corpora.

Le “Workspace” est organisé en “Projet”s qui contiennent les corpus.

Un “Projet” utilise un “Projet RCP”, qui repose sur un sous-répertoire de ~/TXM-<version>/corpora (du Workspace RCP).

Un corpus binaire est un “Projet” calculé par un module d'import. Après calcul, il contient des “CorpusIndex”s, des “Text”s et leurs “Edition”s.

Il y a deux implémentations de CorpusIndex :

  • CQPCorpus
  • TIGERSearchCorpus

Un CQPCorpus sert à gérer un corpus CQP ou ses sous-corpus CQP (résultat d'une requête ou chargement depuis un fichier externe).

Un MainCorpus sert à gérer les racines de hiérarchies de CQPCorpus.

Un MainCorpus doit correspondre au corpus CQP.

Les modules d'import créent :

  • en général un “MainCorpus” dans le “Projet” du corpus
  • autant de MainCorpus que de langue dans le cas du TMX
  • un MainCorpus et un TIGERSearchCorpus dans le cas de TS

À chaque fichier pivot XML-TXM “txm/T.xml” du “Projet RCP” correspond un “Text” (d'identifiant T).

Chaque “Text” contient 0 ou plusieurs “Edition”.

Les modules d'import créent :

  • en général une “Edition” par “Text” appelée “default”
  • pour les sources XTZ, une “Edition” par :
    • pager “default”
    • pager “facs”
    • fichier XSL “*-split.xsl”

Les modules d'import suivent la procédure générale suivante :

  1. importer : créé les fichiers XML-TXM (tokenisés) à partir des sources du corpus → à la fin de cette étape le “Projet” contient des “Text”s
  2. annotate : annote les fichiers XML-TXM avec TreeTagger
  1. compiler : créé les fichiers CQP à partir des fichiers XML-TXM et produit les indexes CQP gérés par un nouveau “MainCorpus”
  2. pager : créé les éditions HTML des textes, à partir des fichiers XML-TXM, gérées par de nouvelles “Edition”
Certaines étapes récurrentes n'ont pas encore été généralisées dans une étape d'import spécifique : injection des métadonnées, front XSL

Axe cycle de vie

Commande “Importer/<nom du module d'import>“

Les paramètres d'import sont réglés via l'éditeur des paramètres d'import ouvert par la commande.

Ils sont enregistrés dans les paramètres du “Projet”.

Les paramètres sont persistés dans le noeud de préférences du scope PROJECT du “projet RCP” correspondant (répertoire ~/TXM-VERSION/corpora/<MONCORPUS>/.settings…).

La méthode “Projet.compute()” est appelée lorsque l'utilisateur appuis sur la flèche verte de l'éditeur des paramètres d'import. Le Projet est alors marqué “dirty” (pour forcer le recalcul du Projet).

La méthode “Projet.compute()” :

  1. supprime tous les enfants du Projet : CorpusIndex, Texts, Editions et les résultats de commandes (Sous-corpus, Partition, Concordance, Index, etc.)
  2. appelle le module ”<nom du module d'import>” correspondant au choix de l'utilisateur dans “Fichier > Import > …”. Le script d'import Groovy <nom du module d'import>Loader.groovy est alors appelé.
  3. si l'import se termine mal (retour FALSE), tous les enfants du Projet créés par le module d'import sont supprimés

Commande Mise à jour

La commande :

  1. affecte le paramètre d'import “update” du “Projet” à TRUE
  2. appelle la méthode “Projet.compute”
    • supprime les Edition (et les fichiers correspondants)
    • clean les CorpusIndex = supprimer les données Java internes, le corpus CQP, le cache des lexiques CQP et les fichiers liés à CQP (registry et data)
    • appelle le module d'import XTZ qui ne refait que les étapes “compiler” et “pager”
      • lors de l'étape compiler le MainCorpus est réutilisé
      • lors de l'étape pager les Text&Edition sont recréés
  3. si l'import se termine mal (retour FALSE), tous les enfants du Projet créés par le module d'import sont supprimés

Commande “Charger un corpus 0.8.0”

La commande :

  1. vérifie qu'il n'y a pas déjà un projet du même nom que le répertoire racine ou que le répertoire des indexes CQP
    • le nom du projet = nom du répertoire du projet = nom du MainCorpus = identifiant CQP du corpus
  2. vérifie que l'archive contient bien les fichiers nécessaires :
    • répertoire .settings (préférences du Projet RCP)
    • répertoire data (index CQP)
    • répertoire registry (registres CQP)
    • répertoire txm (sources pivot XML-TXM)
    • répertoire HTML (éditions)
  3. dézippe l'archive dans le répertoire “corpora”
  4. le Projet est alors reconstruit avec tous ses éléments en relisant les préférences dans .settings (entre autres appel de Project.loadProjectFromProjectScope(rcpProject)).
  5. recharge la vue Corpus

Commande “Charger un corpus 0.7.9”

La commande :

  1. vérifie qu'un projet du même nom que le répertoire racine ou que le répertoire des indexes CQP n'existe pas déjà
  2. vérifie que l'archive contient bien les fichiers nécessaires :
    • fichier import.xml
    • répertoire data
    • répertoire registry
    • répertoire txm
    • répertoire HTML
  3. dézippe l'archive dans le répertoire “corpora”
  4. crée un nouveau Projet vide en lisant les paramètres d'import du fichier “import.xml”
  5. reconstruit les éléments Projet, Text, Edition, MainCorpus, Subcorpus, Partition (entre autres appel de Toolbox.workspace.scanDirectory079(binaryCorpusDirectory) et MainCorpus._load())
  6. recharge la vue Corpus
public/spec_corpus.txt · Dernière modification : 22/06/2020 15:58 de matthieu.decorde@ens-lyon.fr