Typologie, formats et outils d'exploitation des documents numériques (2)¶

📌 Ecole du Louvre, Master Documentation et Humanités Numériques, 2022


Alix Chagué¶

📫 alix.chague@inria.fr

💼 Doctorante en Humanités Numériques @ Inria (Paris) & Université de Montréal

EDL logo

Objectifs du cours¶

🏆 Comprendre ce qu'est un document sur un ordinateur

🏆 Savoir différencier les catégories de fichiers et les standards et formats qui leur sont associés

🏆 Savoir différencier la mise en forme d'un fichier et sa structuration sémantique

🏆 Connaître théoriquement plusieurs modes d'organisation et de mise en forme d'un fichier textuel (XML, Markdown, LaTeX, ...)

🏆 Connaître théoriquement plusieurs modes de représentation de données organisées dans un fichier textuel (CSV, JSON)

🏆 Connaître les principaux standards XML et l'environnement technologique associé à ce standard

Plan du cours¶

  • Que faire avec des données textuelles
  • Structuration des données
  • XML
  • TP : XML TEI

Que faire avec des données textuelles ?¶

Extraction d'informations¶

A l'aide de techniques de TAL (Traitement Automatique des langues / du langage) aussi appelé NLP (Natural Language Processing)

  • Correction automatique
  • Simplification/augmentation de texte
  • Traduction automatique
  • Extraction d'entités nommées (NER, Named Entity Recognition)
  • Liage d'entités nommées (EL, Entity Linking) et désambiguation
  • Analyses lexicométriques ou sémantiques

Faciliter l'accès¶

Rendre un document compatible avec des moteurs de recherche :

  • moteur de recherche plein texte
  • moteur de recherche combinant la recherche plein texte avec une recherche à facettes (via métadonnées)
  • création d'index (de personnes, de lieux, etc) grâce aux entités nommées

Voire réaliser une édition numérique !

Structuration des données¶

Pourquoi structurer les données¶

  • trier les données afin qu'un utilisateur puisse facilement sélectionner celles qui sont importantes ;
  • organiser les données pour les mettre en rapport les unes avec les autres ;
  • faire ressortir une structure logique qui aide à la mise en forme du document, à sa lecture par un humain ou par la machine ;

  • ...

Deux exemples de formats texteuels structurés et simples : CSV et JSON¶

CSV (Comma Separated Values) - données tabulaires¶

  • 1 ligne de texte = 1 ligne de tableau
  • 1 virgule = 1 nouvelle cellule de tableau
  • un ficher csv peut être ouvert avec Excel

Id_Monographie Id_Enqueté Serie_Tome Prénom Nom Place dans la famille Lieu de naissance
001a 001aE1 1-1 (1857) Jean M** Père T** (Aube)
001a 001aE2 1-1 (1857) Marie R** Mère L** (Meurthe)
001a 001aE3 1-1 (1857) Joseph M** Fils

Id_Monographie,Id_Enqueté,Serie_Tome,Prénom,Nom,Place dans la famille,Lieu de naissance
001a,001aE1,1-1 (1857),Jean,M**,Père,T** (Aube)
001a,001aE2,1-1 (1857),Marie,R**,Mère,L** (Meurthe)
001a,001aE3,1-1 (1857),Joseph,M**,Fils,,

JSON (JavaScript Object Notation)¶

  • Ctilisation de structure similaire aux listes et aux dictionnaires en Python

  • Chaque valeur est associée à une étiquette, la structure peut fonctionner en arborescence, à plusieurs niveaux

[
{"Id_Monographie":"001a", "Id_Enqueté":"001aE1", "Serie_Tome":"1-1 (1857)", "Prénom":"Jean", "Nom":"M**", "Place dans la famille":"Père", "Lieu de naissance":"T** (Aube)"},

{"Id_Monographie":"001a", "Id_Enqueté":"001aE2", "Serie_Tome":"1-1 (1857)", "Prénom":"Marie", "Nom":"R**", "Place dans la famille":"Mère", "Lieu de naissance":"L** (Meurthe)"},

{"Id_Monographie":"001a", "Id_Enqueté":"001aE3", "Serie_Tome":"1-1 (1857)", "Prénom":"Joseph", "Nom":"M**", "Place dans la famille":"Fils", "Lieu de naissance":""}
]

Pourquoi mettre en forme ne suffit pas pour structurer ?¶

Séparer la structure logique de la mise en forme :¶

  • un titre =/= un paragraphe
  • un titre d'ouvrage ou un mot étranger
  • une citation

vs.

  • du texte en gras
  • du texte en italique
  • du texte entre guillemets

Séparer la structure logique de l'apparence :¶

Pratiques de l'édition numériques est un ouvrage a priori intéressant.


  • tous les mots en italiques ne sont pas des mots étrangers, mais tous les mots étrangers sont en italiques

  • titres d'ouvrages cités en italiques (ou pas) et mots étrangers en italiques (ou pas)

  • on peut extraire rapidement tous les mots étrangers sans récolter aussi les titres d'ouvrages cités

Structuration logique dans un éditeur de texte¶

Dans Microsoft Word ou LibreOffice Writer :

  • les styles pour gérer les titres et créer automatiquement une table des matières

styles dans writer

WYSIWYM et WYSIWYG¶

  • dans un éditeur WYSIWYM : moindre confusion entre mise en forme et indication de la structure logique

  • la mise en forme apparaît après parsing du document (création d'un PDF ou ouverture dans un navigateur)

  • le paramétrage de la mise en forme peut être géré dans un fichier externe (ex: CSS pour HTML)

styles dans writer

Annotation de la structure logique avec Markdown¶

Ⓜ️ Markdown est un langage de balisage léger qui permet d'encoder facilement la structure et certains éléments de mise en forme du texte sans gêner sa lecture.

Ⓜ️ Il permet de créer des fichiers HTML ou PDF et est beaucoup utilisé sur le web, notamment sur des plateformes comme Github

Ⓜ️ Même non compilé, un texte Markdown est facile à lire car les annotation sont légères et limitées ;

🤫 On peut utiliser Markdown ou un système similaire dans Whatsapp et Messenger ;

Markdown en exemple¶

Non compilé : 
# Titre 1
##### Titre 5

[lien hypertexte](http://perdu.com/)  
**texte mis en gras**  (mise en forme)  
~~texte barré~~ (mise en forme)

Compilé :

Titre 1¶

Titre 5¶

lien hypertexte
texte mis en gras (mise en forme)
texte barré (mise en forme)

Structuration logique avec LaTeX¶

🇱 LaTeX (prononcer "latek") est un langage et un système de composition de documents, + complet que Markdown ;

🇱 Utilisé dans le domaine des sciences car on peut facilement écrire des formules mathématiques ;

🇱 Les balises sémantiques de LaTeX sont plus "invasives". Exemple : \chapter{Titre de chapitre} ;

🇱 Pour voir la mise en forme, on doit compiler le fichier .tex. On obtient un PDF ou du HTML ;

🇱 LaTeX ne sert pas qu'à annoter la structuration logique : il prend en charge la mise en forme du document au sens large.

Quelques ressources pour aller plus loin¶

  • Leçon de Programming Historian sur Markdown

  • Séries de leçon sur LaTeX (Zeste de Savoir)

  • Tutoriel d'Overleaf pour LaTeX

Let's play¶

➡️ TEXTE : pont_mirabeau.txt | IMAGE : pont_mirabeau.png

➡️ Éditeurs en ligne : Dillinger ou HedgeDoc (collaboratif)

Faire un encodage en Markdown du poème :

  • mettre le titre en niveau 1
  • faire de chaque première ligne de strophe un titre de niveau 3
  • mettre en italique le paratexte
  • mettre les noms propres en gras

XML¶

Qu'est-ce que XML ?¶

🌳 XML signifie eXtensible Markup Language ;

🌳 XML est un langage de balisage générique ;

<balise>contenu</balise>

🌳 XML est extensible car on peut créer ses propres noms de balise ;

🌳 XML est apparu à la fin des années 1990, c'est un sous-ensemble du standard SGML (Standard Generalized Markup Language), comme HTML (Hypertext Markup Language)

🌳 Ces langages utilisent les chevrons (<>) pour former des balises.

La syntaxe du XML¶

  • une balise XML est écrite entre chevrons (< nom_de_la_balise >) et entoure généralement un contenu ;

  • une balise ouverte (<slide>) doit donc être fermée (</slide>);

  • une balise peut-être vide (elle n'encadre pas un contenu) : <nothing></nothing>, ce qui peut aussi s'écrire : <nothing/>

  • les balises peuvent être imbriquées ;

  • un commentaire est écrit entre <!-- ... --> ;

  • une balise peut avoir des attributs qui possèdent des valeurs ;

<balise attribut="valeur">contenu</balise>

XML : un exemple¶

<slide>
    <titre>Qu'est-ce que XML ?</titre>
    <para>
        <line n="001">🌳 XML signifie <anglais>eXtensible Markup Language</anglais></line>
        <line n="002">🌳 XML est un <gras>langage</gras> de <gras>balisage</gras> générique. On le dit <gras>extensible</gras> car il propose une grammaire générale pour l'organisation du document, mais on peut créer ses propres noms de balises</line>
    </para>
</slide>

  • <slide> est une balise ou un élément
  • slide est un nom de balise
  • "Qu'est-ce que XML ?" est le contenu de la balise "titre"
  • n est un attribut de la balise "line"
  • 001 est la valeur de l'attribut "n"

XML et les standards¶

🌳 XML n'indique pas comment s'appellent les balises

  • <paragraph>, <paragraphe>, <para>, <para_ph>, <p> sont tous des noms de balises valides ;

🌳 XML ne correspond qu'à la syntaxe ;

🌳 Les standards définissent le vocabulaire (ensemble de noms de balise) et des règles de compositions :

  • XML TEI (Text Encoding Initiative) - description de documents textuels (1987)
  • XML EAD (Encoded Archival Description) - description archivistique (1998)
  • XML SVG (Scalable Vector Graphics) - descriptions d'images vectorielles (1999)
  • XML ALTO (Analysed Layout and Text Object) - description de la mise en page et du contenu d'un texte transcrit automatiquement (2004)

🌳 Le schéma peut définir une sous-spécification au sein d'un standard ;

Concepts et outils¶

🌳 Un fichier XML est plusieurs choses :

  • un fichier de texte
  • un arbre composé d'éléments hiérarchisés
  • une base de données

🌳 Il existe plusieurs langages qui permettent d'interagir avec XML :

  • xPath : formuler un chemin à l'intérieur d'un arbre XML ;
  • XSLT : transformer un arbre XML en un autre arbre XML ou en HTML ;
  • xQuery : permet de faire des requêtes dans une base XML ;

La TEI¶

Documentation¶

  • Les Guidelines de la TEI expliquent comment l'utiliser : https://tei-c.org/
    • quels noms donner aux balises
    • comment les utiliser (dans quel ordre et pour décrire quoi)

Exemple : <l>

TEI the l element

Structure minimale obligatoire¶

<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
  <teiHeader>
      <fileDesc>
         <titleStmt>
            <title>Title</title>
         </titleStmt>
         <publicationStmt>
            <p>Publication Information</p>
         </publicationStmt>
         <sourceDesc>
            <p>Information about the source</p>
         </sourceDesc>
      </fileDesc>
  </teiHeader>
  <text>
      <body>
         <p>Some text here.</p>
      </body>
  </text>
</TEI>

Déclaration de l'espace de nom¶

<TEI xmlns="http://www.tei-c.org/ns/1.0">

Cette balise indique 2 choses :

  • qu'on débute un élément nommé TEI
  • qu'on se réfère au vocabulaire, à l'espace de nom (namespace : ns) publié à l'adresse indiquée

En-tête et corps¶

<teiHeader>
    <!-- métadonnées -->
</teiHeader>

Le teiHeader est un élément XML qui contient les métadonnées (header = en-tête)

🌳 https://www.tei-c.org/release/doc/tei-p5-doc/fr/html/ref-teiHeader.html


<body>
    <!-- corps du texte -->
</body>

Le body reçoit le contenu du document, le corps du texte.

🌳 https://tei-c.org/release/doc/tei-p5-doc/fr/html/ref-body.html

Let's play¶

➡️ TEXTE : pont_mirabeau.txt | IMAGE : pont_mirabeau.png

➡️ Éditeurs en ligne : Dillinger ou HedgeDoc (collaboratif)

S'appuyer sur les Guidelines de la TEI pour proposer un encodage du poème.


Quelques idées :

  • métadonnées : cf. 2. TEI HEADER
  • structure du texte (lignes, paragraphes, tabulation, etc) : cf. 6. VERSE
  • entités et informations spécifiques (lieu, dates, etc) : cf. 13. NAMES, DATES, PEOPLE, AND PLACES
  • description de la source primaire : cf. 11. REPRESENTATION OF PRIMARY SOURCES

➡️ exemple : pont_mirabeau.xml

Aller plus loin sur la TEI¶

  • Série de vidéos DariahTeach sur la TEI