Transformation vers corpusHM

Version 28 (Severine Gedzelman, 28/09/2017 16:08)

1 1 Severine Gedzelman
h1. Transformation vers un corpus parallèle (alignement HM)
2 1 Severine Gedzelman
3 2 Severine Gedzelman
Le document fourni par Uetani est un fichier word, organisé avec des tableaux à 3 colonnes :
4 7 Severine Gedzelman
** col 1 : nom du segment philologique (et notes diverses, dont certains acronymes sont à élucider pour moi)
5 7 Severine Gedzelman
** col 2 : version italienne
6 7 Severine Gedzelman
** col 3 : version française correspondante
7 2 Severine Gedzelman
8 2 Severine Gedzelman
L'enregistrement du .doc vers .odt est obligatoire chez moi, car je ne possède pas de logiciel Microsoft. Pour obtenir un corpus en XML-TEI, on a besoin de passer par deux scripts :
9 7 Severine Gedzelman
# le premier est fourni par le service "OXGarage":http://www.tei-c.org/oxgarage/ (transformateur en ligne pour la communauté TEI principalement) 
10 7 Severine Gedzelman
# le deuxième a été écrit en python par moi-même dont les détails sont après.
11 2 Severine Gedzelman
12 15 Severine Gedzelman
h2. 1) ODT vers XML-TEI
13 1 Severine Gedzelman
14 2 Severine Gedzelman
* Le document de départ : attachment:CorpusSANAZIFR_Uetani_2017.odt 
15 2 Severine Gedzelman
* Le document de sortie : attachment:CorpusSANAZIFR_Uetani_2017.xml
16 2 Severine Gedzelman
17 6 Severine Gedzelman
Les choix ont été les suivants sur "OxGarage":http://www.tei-c.org/oxgarage/ : OpenOffice texte (odt) en entrée, TEI P5 XML Document en sortie
18 2 Severine Gedzelman
19 22 Severine Gedzelman
!{width:70%}OXGarage_convertODT-2-TEI.png!
20 1 Severine Gedzelman
21 23 Severine Gedzelman
Dans ce fichier XML-TEI P5, les tableaux sont restitués (<table><row><cell></cell></row></table>), avec également les éléments de forme et les notes de bas de page (rend='justify, rend=‘bold italic’) mais aucun alignement explicite (on sait juste que la deuxième <cell> contient le texte italien et la troisième <cell> le texte français.
22 22 Severine Gedzelman
23 22 Severine Gedzelman
Voici un exemple de la dernière ligne, <row>, du dernier tableau <table>
24 5 Severine Gedzelman
25 5 Severine Gedzelman
<pre><code> 
26 5 Severine Gedzelman
       <table rend="frame" xml:id="Tableau4">
27 5 Severine Gedzelman
                <row>
28 5 Severine Gedzelman
                    <cell>Ecloga II, vv. 1-12</cell>
29 5 Severine Gedzelman
                    <cell>....</cell>
30 5 Severine Gedzelman
                    <cell>....</cell>
31 5 Severine Gedzelman
               </row>
32 5 Severine Gedzelman
              ...
33 5 Severine Gedzelman
      </table>
34 5 Severine Gedzelman
      <table>
35 5 Severine Gedzelman
              ...
36 5 Severine Gedzelman
               <row>
37 5 Severine Gedzelman
                    <cell>A la Sampogna, 19-20</cell>
38 5 Severine Gedzelman
                    <cell rend="justify"><hi rend="bold italic">Benché</hi><hi rend="italic"> mi
39 5 Severine Gedzelman
                            pare esser certo che tal fatica a tenon fia necessaria, se tu tra le
40 5 Severine Gedzelman
                            selve, sí come io ti impongo, secretamente e senza pompe star ti vorrai.
41 5 Severine Gedzelman
                            Con ciò sia cosa che chi non sale, non teme di cadere ; e chi cade nel
42 5 Severine Gedzelman
                            piano, il che rare volte adiviene, con picciolo agiuto</hi><hi
43 5 Severine Gedzelman
                            rend="italic"><note xml:id="ftn529" place="foot" n="529">
44 5 Severine Gedzelman
                                <hi rend="italic">agiuto</hi> : aiuto (E).</note></hi><hi
45 5 Severine Gedzelman
                            rend="italic"> de la propria mano senza danno si rileva</hi><hi
46 5 Severine Gedzelman
                            rend="italic"><note xml:id="ftn530" place="foot" n="530"><hi
47 5 Severine Gedzelman
                                    rend="italic"> rileva</hi> : risolleva, rialza
48 5 Severine Gedzelman
                            (E).</note></hi><hi rend="italic">. Onde per cosa vera e indubitata
49 5 Severine Gedzelman
                            tener ti puoi che chi piú di nascoso e piú lontano da la moltitudine
50 5 Severine Gedzelman
                            vive, miglior vive ; e colui tra' mortali si può con piú verità chiamar
51 5 Severine Gedzelman
                            beato che, senza invidia de le altrui grandezze, </hi><hi
52 5 Severine Gedzelman
                            rend="bold italic">con modesto animo</hi><hi rend="italic"> de la sua
53 5 Severine Gedzelman
                            fortuna si contenta (p. 241).</hi></cell>
54 5 Severine Gedzelman
                    <cell rend="justify"><hi rend="bold">Nonobstant</hi> je pense estre aßeuré que
55 5 Severine Gedzelman
                        n'auras besoing de ce faire, si suyvant mon conseil, tu te veul tenir en ces
56 5 Severine Gedzelman
                        boys secretement, &amp; sans aucune pompe : Car qui ne saulte, n'a peur de
57 5 Severine Gedzelman
                        tumber : &amp; qui chet en la plaine (ce que n'advient gueres) se relieve
58 5 Severine Gedzelman
                        sans dommage, seulement avec un peu de secours de ses propres mains. Parquoy
59 5 Severine Gedzelman
                        tu peux tenir pour chose indubitable, que celuy peult vivre en plus grand
60 5 Severine Gedzelman
                        repos, qui est plus loingtain &amp; retiré de la multitude confuse. Et entre
61 5 Severine Gedzelman
                        les hommes se peult plus veritablement estimer bien heureux celuy qui sans
62 5 Severine Gedzelman
                        envie des grandeßes d'aultruy,<hi rend="bold">par </hi><hi
63 5 Severine Gedzelman
                            rend="bold italic">modestie</hi><hi rend="bold"> de courage</hi> se
64 5 Severine Gedzelman
                        contente de sa fortune (fol. 114 v°).</cell>
65 5 Severine Gedzelman
                </row>
66 5 Severine Gedzelman
     </table>
67 1 Severine Gedzelman
</code></pre>
68 23 Severine Gedzelman
69 23 Severine Gedzelman
On va poursuivre pour obtenir un véritable XML-TEI avec une sémantique explicite de l'alignement entre les segments italiens et français.
70 5 Severine Gedzelman
71 15 Severine Gedzelman
h2. 2) XML-TEI vers XML-TEI-HM
72 2 Severine Gedzelman
73 9 Severine Gedzelman
74 1 Severine Gedzelman
Le script attachment:tei2teiHM.py permet de 
75 24 Severine Gedzelman
* récupérer l'ensemble des deux textes (source italien, cible français) et de s'affranchir :
76 24 Severine Gedzelman
** des notes (de bas de page)
77 24 Severine Gedzelman
** des indications graphiques (qui sont dans des balises <hi> avec attributs : italic, bold, ...)
78 13 Severine Gedzelman
* et de préparer la structure et les noms des divisions, et des segments contenus dans celles-ci. Par exemple les segments <seg> "Prosa_X_1", "Prosa_X_2", ... seront rassemblés sous une division <div> : "Prosa_X".
79 1 Severine Gedzelman
80 9 Severine Gedzelman
Pour plus d'info, voir le chapitre dédié à la [[structure philologique]], et les opérations de nettoyage effectuées jusqu'à présent.
81 9 Severine Gedzelman
82 12 Severine Gedzelman
h3. A propos de la ressource XML en entrée
83 12 Severine Gedzelman
84 25 Severine Gedzelman
Le document XML-TEI a été légèrement modifié à la main (attachment:CorpusSANAZIFR_Uetani_2017_modifTable.xml)
85 11 Severine Gedzelman
# avec une substitution des "Egloga" en "Ecloga" (peut refaire la modification dans le sens inverse si besoin)
86 25 Severine Gedzelman
# avec remplacement des valeurs des attributs "xml:id" des tableaux afin de permettre la création de divisions philologiques plus méta comme "Prosa_X", dans lesquels s'inséreront automatiquement les segments philologiques "Prosa_X_1", "Prosa_X_2". L'attribut notait jusqu'à présent seulement l'incrémentation des tableaux  : "Tableau1", "Tableau2". Cela donne pour le premier tableau : *<table rend="frame" xml:id="Prologo I">* au lieu de <table rend="frame" xml:id="Tableau1">
87 11 Severine Gedzelman
88 25 Severine Gedzelman
Dans une réflexion semblable, faut-il préparer des <cell> avec les titres des segments, comme par exemple s'est trouvé par hasard le titre de "Ecloga XI" séparé du reste du texte. On pourra ainsi les traiter comme des titres en TEI avec la balise <head>.
89 9 Severine Gedzelman
90 10 Severine Gedzelman
<pre><code>
91 10 Severine Gedzelman
<table rend="frame" xml:id="Ecloga_XI">
92 10 Severine Gedzelman
                <row>
93 12 Severine Gedzelman
                    <cell>Ecloga XI, 0</cell> 
94 10 Severine Gedzelman
                    <cell rend="center">ERGASTO<hi rend="italic"> solo</hi></cell>
95 1 Severine Gedzelman
                    <cell>ERGASTO SEVL.</cell>
96 10 Severine Gedzelman
                </row>
97 1 Severine Gedzelman
</code></pre>
98 25 Severine Gedzelman
99 1 Severine Gedzelman
h3. A propos du script et de ses paramètres 
100 13 Severine Gedzelman
101 15 Severine Gedzelman
Le script génère des <teiHeader> pour les deux textes (it, fr) <TEI> et pour l'ensemble du corpus <teiCorpus>.  Chaque texte aura un identifiant pour Hypermachiavel avec une langue correspondante :
102 15 Severine Gedzelman
* Erspamer_1505 (i1) - it
103 15 Severine Gedzelman
* Martin_1544 (f1) - frm
104 1 Severine Gedzelman
105 27 Severine Gedzelman
+Remarque+ : Il faudra prévoir d'ajouter ces entêtes manuellement selon les indicatons de Uetani sur ces différentes éditions/productions. J'ai calqué pour l'instant sur la structure du corpus Hyperprince, pour les détails voir l'extrait dans attachment:HyperPrince.xml.
106 1 Severine Gedzelman
107 12 Severine Gedzelman
Avant d'appeler le script python, il faut 
108 12 Severine Gedzelman
# vérifier l'installation de "python" sur la machine (à noter que tous les Mac ont une version par défaut, même chose pour le programme Java) 
109 12 Severine Gedzelman
# placer les ressources dans le même dossier : soit le fichier source de donnée .xml et le fichier script .py, 
110 12 Severine Gedzelman
# indiquer en deuxième paramètre du script, la chaîne correspondant au chemin du dossier où se trouve ces ressources
111 12 Severine Gedzelman
112 12 Severine Gedzelman
113 1 Severine Gedzelman
<pre><code>
114 9 Severine Gedzelman
$ python tei2teiHM.py CorpusSANAZIFR_Uetani_2017.xml ~/Documents/Travail_ENS/Projets/Exterieurs/CESR_Uetani/Transformations
115 9 Severine Gedzelman
</code></pre>
116 1 Severine Gedzelman
117 12 Severine Gedzelman
h3. A propos de la ressource générée
118 12 Severine Gedzelman
119 12 Severine Gedzelman
Le résultat avec le même extrait 'XML-TEI' donné plus haut : *A_la_Sampogna_19-20*
120 9 Severine Gedzelman
121 9 Severine Gedzelman
<pre><code>
122 11 Severine Gedzelman
 <seg n="15" type="Segment"  rend="A_la_Sampogna_19-20" xml:id="i1_Ch25-Seg15">
123 11 Severine Gedzelman
          Bench&#233; mi pare esser certo che tal fatica a tenon fia necessaria, se tu tra le selve, s&#237; 
124 11 Severine Gedzelman
          come io ti impongo, secretamente e senza pompe star ti vorrai. Con ci&#242; sia cosa 
125 11 Severine Gedzelman
          che chi non sale, non teme di cadere ; e chi cade nel piano, il che rare volte adiviene, 
126 11 Severine Gedzelman
          con picciolo agiuto de la propria mano senza danno si rileva. Onde per cosa vera e 
127 1 Severine Gedzelman
          indubitata tener ti puoi che chi pi&#250; di nascoso e pi&#250; lontano da la moltitudine vive, 
128 1 Severine Gedzelman
          miglior vive ; e colui tra' mortali si pu&#242; con pi&#250; verit&#224; chiamar beato che, 
129 1 Severine Gedzelman
          senza invidia de le altrui grandezze, con modesto animo de la sua fortuna si contenta (p. 241).
130 1 Severine Gedzelman
</seg>
131 1 Severine Gedzelman
</code></pre>
132 15 Severine Gedzelman
133 15 Severine Gedzelman
h2. 3) Importation dans Hypermachiavel
134 15 Severine Gedzelman
135 18 Severine Gedzelman
# Il faut ouvrir l'outil, voir la documentation officielle pour démarrer à "cette page":https://forge.cbp.ens-lyon.fr/redmine/projects/hypermachiavel/wiki/Comment_d%C3%A9marrer) 
136 18 Severine Gedzelman
# puis suivre "les étapes de la création d'un projet corpus":https://forge.cbp.ens-lyon.fr/redmine/projects/hypermachiavel/wiki/D%C3%A9marrer_un_nouveau_corpus_(XML-TEI).
137 19 Severine Gedzelman
# La tokenisation et lemmatisation sont ensuite déclenchées, le processus est plus ou moins long mais ne sera effectué qu'à cette étape de création. Par la suite, pour toute ré-ouverture de l'application et du projet, on pourra suive "cette page":https://forge.cbp.ens-lyon.fr/redmine/projects/hypermachiavel/wiki/Ouvrir_un_projet_existant
138 19 Severine Gedzelman
# Les textes sont alignés et on peut commencer à faire un travail de mise en équivalence entre des séquences (mot ou syntagme) source et cible. Exemple ci-dessous avec les mots "camere" (it) et "chambres" (fr)
139 15 Severine Gedzelman
140 1 Severine Gedzelman
!{width:80%}HM_HyperArcadia_AnnotateTranslationEquivalences.png!
141 19 Severine Gedzelman
142 20 Severine Gedzelman
h2. Exploration lexicale
143 1 Severine Gedzelman
144 20 Severine Gedzelman
On a également accès aux lexiques de chaque langue (un texte par langue dans le corpus de "HyperArcadia" pour le moment). 
145 20 Severine Gedzelman
146 20 Severine Gedzelman
Voici donc la liste du vocabulaire du texte français (édition de Martin 1544) :
147 20 Severine Gedzelman
148 21 Severine Gedzelman
!{width:70%}HM_HyperArcadia_ItalianLexicon_list.png!
149 20 Severine Gedzelman
150 21 Severine Gedzelman
Et la liaison avec le tableau de concordance sur la forme "aucuns" (affichage de toutes les occurrences de cette forme dans le texte français), après sélection de cet élément dans la liste et click sur l'icône : !Column.gif!
151 20 Severine Gedzelman
152 21 Severine Gedzelman
!{width:70%}HM_HyperArcadia_KWIC_example.png!
153 20 Severine Gedzelman
154 21 Severine Gedzelman
h2. Exploration