Outils pour utilisateurs

Outils du site


public:spec_corpus_alignes

Corpus parallèles alignés

Les corpus parallèles alignés sont composés de textes alignés au niveau de certaines structures.

L'alignement par facette - au mot près - est un autre type de corpus parallèle (voir la Queste del Saint Graal).

État de la plateforme : TXM 0.8.0

Les corpus parallèles alignés sont construits par l'import TMX.

Le corpus est implémenté par autant de corpus CQP que de langue, ces corpus entretenant des relations d'alignement CQP.

Les éditions de ces corpus sont indépendantes (pas d'édition synoptique par exemple).

Évolutions : TXM 0.8.2

a) Construire des éditions synoptiques, alignées par structures

Le cas des éditions synoptiques alignées par page (structures éditoriales) est un autre cas de figure (que les structures internes), pas forcément facile à gérer dans le cas de corpus parallèles1).

b) Pouvoir importer des corpus parallèles encodés en TEI directement

Repose notamment sur une définition XML-TXM finalisée.

Le corpus AFVOIXOFF + AFNOTICES peut être un use case. Dans ce cas se pose la question de la gestion du retour au texte ou du retour à la vidéo depuis chaque “version” ou “modalité” du corpus

c) Pouvoir créer des corpus parallèles depuis un corpus existant (pas forcément parallèle)

C'est un cas de figure qui peut correspondre à la production d'une nouvelle surface (mots), en reprenant les structures existantes possibles, pour pouvoir bénéficier des outils de TXM sur de nouveaux tokens.

Le projet d'analyse des plans de films dans le corpus AFVOIXOFF peut être un use case :

  • 1) une macro CQLList2WordProperties annote le premier mot d'expressions de plans :
    • “gros plan”%c|“GP” → @plan = “GP”
    • “vue générale”%c|“VG” → @plan = “VG”
    • “travel.*”%c|“trav”%c → @plan = “TR”
    • etc.
    • elle sauve les annotations
    • architecture :
      • la macro CQLList2WordProperties appelle la macro CQLList2WordAnnotations puis sauvegarde les annotations
      • la macro CQLList2WordAnnotations appelle la macro CQL2WordAnnotations
      • paramètres :
        • CQLList2WordProperties(corpus, TSV[valeur, requête CQL], propriété)
        • CQLList2WordAnnotations(corpus, TSV[valeur, requête CQL], propriété)
        • TSV[valeur, requête CQL] =
          GP -> "gros plan"%c|"GP"
          VG -> "vue générale"%c|"VG"
          TR -> "travel.*"%c|"trav"%c
        • propriété = 'plan'
      • Cql2WordAnnotations(corpus, requête CQL, propriété, valeur)
  • 2) l'utilisateur affine ses annotations selon le contexte : “VG panoramique”, “GP panoramique”, “Vue générale avec zoom”, etc.
    • il sauve son annotation
  • 3) on lance la construction d'une nouvelle surface avec la macro WordProperty2Word
    • version 1) nouvelles sources XML à importer par XTZ utilisant les positions de mots ayant un @plan
      • la valeur de @plan est utilisée pour créer la propriété @word
      • l'ancienne valeur @word du premier mot du macth est ajoutée dans la propriété @orig
      • le mot reçoit toutes les propriétés du premier mot du match, en particulier son identifiant (aucun nouvel identifiant n'est calculé)
    • architecture
      • paramètres :
        • WordProperties2Word(corpus, répertoire destination des nouvelles sources, propriété)
    • version 2) un corpus parallèle au niveau de toutes les structures est créé
  • 4) l'utilisateur peut utiliser les outils de TXM sur le corpus importé de cette nouvelle surface, par exemple : calcul de segments répétés contenant telle ou telle valeur de plan ou séquence de valeurs de plans
    • le retour à la vidéo est possible

Prototypage

  • 1) dans un premier temps une macro peut créer de nouvelles sources XML pour créer le corpus ayant la nouvelle surface. On réalise alors l'import XML à la main, puis on exploite le nouveau corpus, sans parallélisme.
  • 2) dans un deuxième temps, on intègre le nouveau corpus de nouvelle surface comme corpus parallèle du corpus d'origine

Documentation

Premiers utilitaires répondant au cas c).

CQLList2WordProperties

[SH, 24/06/2020 : devrait s'appeler AddWordPropertyValuesByCqlList]

Utilitaire d'ajout en masse de valeurs à une propriété de mots à l'aide d'une liste de requêtes CQL (à chaque CQL correspond une valeur de la propriété à ajouter), sans passer par une interface d'annotation interactive.

Une option permet de limiter l'ajout aux seuls fichiers pivots (XML-TXM) du corpus. Les annotations sont sauvegardées dans les fichiers pivots mais les index CQP et les éditions du corpus ne sont pas mis à jour. Ce mode de fonctionnement est prévu pour l'exploitation des fichiers pivots modifiés par d'autres outils (le corpus est alors dans un état instable).

Cet utilitaire appelle CQLList2WordAnnotations, sauvegarde les annotations puis met éventuellement à jour les index du moteur CQP et les éditions du corpus de sorte à ce que la nouvelle propriété soit utilisable directement par les outils de TXM appliqués au corpus.

Paramètres

  • corpus : le corpus contenant les mots à annoter
  • queries_file : fichier de requêtes au format TSV
  • word_property : le nom de la propriété à ajouter
  • update_corpus_indexes_and_editions2) : option permettant, en la décochant, de ne pas mettre à jour les index du moteur CQP ni les éditions du corpus. C'est-à-dire de ne modifier que les fichiers pivots XML-TXM du corpus. Les mots du corpus ne reçoivent pas de nouvelle propriété word_property. Cette option sert à des scénarios où les annotations serviront à d'autres corpus, par exemple lors de modification de surface, pour s'épargner le temps de calcul des mises à jour d'index et d'éditions.

Voir la documentation de l'utilitaire CQLList2WordAnnotations pour la description précise de l'usage des paramètres queries_file et word_property.

CQLList2WordAnnotations

Utilitaire d'annotation en masse de mots par une liste de requêtes CQL, sans passer par une interface d'annotation interactive.

Paramètres

  • corpus : le corpus contenant les mots à annoter
  • queries_file : fichier de requêtes au format TSV
  • word_property : le nom de la propriété à ajouter

Cet utilitaire ajoute une nouvelle propriété d'annotation word_property à tous les premiers mots des matchs de chaque requête se trouvant sur une ligne du fichier TSV queries_file. La propriété d'annotation word_property prend pour valeur l'élément précédent la requête dans la ligne du fichier TSV queries_file.

Le fichier TSV queries_file contient un mot-clé et une requête CQL par ligne.

Chaque ligne a le format : valeur (ou mot-clé) ⇥ requête CQL

Le caractère séparateur de champs (symbolisé par '⇥') est la TABULATION.

Les lignes commençant par '#' sont ignorées (lignes de commentaires).

Exemple de fichier TSV [mot-clé, requête CQL] :

GP	"gros"%c "plan"%c|"GP"|"GPP"
PA	"plan"%c "américain"%cd|"PA"

Glose :

  • le premier mot des matchs de la requête "gros"%c "plan"%c|"GP"|"GPP" recevront une propriété word_property à la valeur GP
  • le premier mot des matchs de la requête "plan"%c "américain"%cd|"PA" recevront une propriété word_property à la valeur PA

Cql2WordAnnotations

Utilitaire d'annotation en masse de mots par une requête CQL, sans passer par une interface d'annotation interactive.

Paramètres

  • corpus : le corpus contenant les mots à annoter
  • query : requête de sélection des mots à annoter (seul le premier mot des matchs est annoté)
  • word_property : le nom de la propriété à ajouter
  • annotation_value : la valeur de la propriété à ajouter

Cet utilitaire ajoute une nouvelle propriété d'annotation word_property à la valeur annotation_value à tous les premiers mots des matchs de la requête query.

WordProperty2Word

L'utilitaire WordProperties2Word permet de recoder la surface textuelle d'un corpus, au sens où il produit une nouvelle version des fichiers pivots source XML-TXM d'un corpus TXM où seulement certains mots du corpus d'origine sont présents - en respectant l'ordre d'origine des mots du corpus. Les mots sont sélectionnés à partir d'une propriété particulière des mots d'origine (paramètre word_property de l'utilitaire). La valeur de cette propriété est utilisée pour encoder la forme graphique des mots du nouveau corpus, les autres propriétés de mots étant par ailleurs transférées aux nouveaux mots. Les mots d'origine n'ayant pas de valeur ou une valeur vide pour cette propriété sont ignorés dans la construction du nouveau corpus. Les structures et leurs propriétés sont transférées dans le nouveau corpus.

Le répertoire de sources XML-TXM produit peut alors être importé, par exemple, avec le module XTZ en l'équipant d'un répertoire de pré-traitement '2-front' avec la feuille XSLT 'txm-front-teitxm2xmlw.xsl' pour redresser les propriétés de mots.

Paramètres

  • corpus : le corpus contenant les mots à utiliser pour produire le nouveau corpus (sélectionné dans la vue Corpus)
  • outputDirectory : le répertoire qui contiendra les fichiers source du nouveau corpus, au format XML-TXM
  • word_property : la propriété de mot à utiliser pour à la fois sélectionner les mots et construire la forme graphique de mots du nouveau corpus
  • values_to_ignore_regex : regex des valeurs de la propriété @word_property à ignorer dans la production du nouveau corpus (par exemple 'A' pour une seule valeur à ignorer, ou bien 'A|B' pour deux valeurs)

Recette

Recette correspondant au cas c).

  • appliquer CQLList2WordProperties sur le corpus AFNOTICES avec les paramètres suivants :
    • queries_file : fichier exemple 'plans-queries.tsv', contenant (copier le contenu de ce fichier depuis cette page)
      DP	"divers|différ.nts|autres"%cd "plans"%c|"DP"
      GP	"gros"%c "plan"%c|"GP"|"GPP"
      PA	"plan"%c "américain"%cd|"PA"
      PG	"plan"%c "général"%cd|"PG"
      PL	"plan"%c "large"%c|"PL"
      PM	"plans?"%c "moyens?"%c|"PM"
      PN	"pano"%c|"panoramique"%c
      PP	".?plu?sieurs|quelques|2|deux|3|trois|4|quatre|5|cinq|6|six|7|sept|8|huit|9|neuf|treize|nombreux"%c "plans"%c|"PP"
      BP	"beaux"%c "plans"%cd
      PR	"plan"%c "rapproché"%cd|"PR"
      TR	"travel.*"%c|"trav"%c
      VA	"vues?"%c "aériennes?"%cd|"VA"
      VE	"vue"%c "d'"%c "ensemble"%c|"VE"
      VG	"vue"%c "générale"%cd|"VG"
      VP	"vue"%c "plongeante"%c|"VP"
      VS	"vue"%c "semi"%c "générale"%cd|"VSG"
      ZO	"zoom"%c|"ZAV"|"ZAR"
    • word_property : plan
    • update_corpus_indexes_and_editions : décoché
  • appliquer WordProperty2Word sur le corpus AFNOTICES avec les paramètres suivants :
    • outputDirectory : répertoire 'afnoticesplans' qui contiendra les fichiers XML-TXM de la nouvelle version du corpus
    • word_property : plan
  • créer un répertoire '2-front' dans le répertoire 'afnoticesplans'
  • ajouter le fichier $TXMHOME/xsl/txm-front-teitxm2xmlw.xsl au répertoire '2-front'
  • lancer le module d'import XML-TEI Zero sur le répertoire 'afnoticesplans' avec les paramètres suivants :
    • Segmentation lexicale
      • décocher le paramètre 'Tokenization'
    • Langue principale
      • décocher le paramètre 'Annoter le corpus'
    • Plans textuels
      • Hors texte : teiHeader
      • Hors texte à éditer : metadata,head,span
  • un nouveau corpus 'AFNOTICESPLANS' de 76,092 mots est créé
  • vérifier page 3 de l'édition, notice AFE86002936, que la section Séquences contient bien 3 plans :
    VG
    PN
    PN
  • passer la stratégie de résolution des opérateurs de Kleene du moteur CQP à 'longest'
    • lancer la macro cqp / SetMatchingStrategy avec le paramètre :
      • matchingStrategy : longest
  • analyser les séquences de plans longues qui se répètent : calculer les segments répétés au sein des séquences
    • lancer un Index sur le corpus AFNOTICESPLANS avec les paramètres :
      • requête : []{1,20} within sequences
      • Fmin : 2
    • on obtient :
      	VG	248
      	VG PP	103
      	PP	99
      	VG VG	76
      	GP	69
      	DP	65
      	PP PP	63
      	PN	51
      	VG GP	37
      	VG PP PP	36
      	PP PP PP	26
      	GP GP GP GP GP GP GP GP GP GP	24
      	VG VG VG	20
      	VG PN	19
      	TR	15
      	VG VG PP	15
      	GP GP	14
      	VG PM	14
      	PR	13
      	PR PP	13
      	VG PR	13
      	PM	12
      	etc.
  • comparer la répartition de ces segments au fil des années
    • faire la partition text@annee
    • lancer un Index sur la partition text@annee avec les paramètres :
      • requête : []{1,20} within sequences
      • Fmin : 2
    • lancer le calcul de Spécificités sur cet index
    • trier par fréquence globale décroissante
    • sélectionner les lignes jusqu'à la fréquence 13
    • on obtient le graphique suivant (cliquer 2 fois sur l'image pour la visualiser entièrement) :

1)
voir du code datant de 5 ans pour gérer des pages d'édition entre corpus alignés
2)
lu 'update_corpus_i' dans l'interface à cause d'un bug d'affichage de la boite de dialogue de saisie des paramètres
public/spec_corpus_alignes.txt · Dernière modification : 20/09/2021 15:13 de slh@ens-lyon.fr