Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
td_histoire_numerique:exercice_2 [2015/09/22 18:20] Francesco Beretta |
td_histoire_numerique:exercice_2 [2015/09/30 18:52] Francesco Beretta [Balises] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
Revenir à la [[:td_histoire_numerique:accueil|page d'accueil]]. | Revenir à la [[:td_histoire_numerique:accueil|page d'accueil]]. | ||
- | ===== Création du document à annoter ===== | + | \\ |
- | **Document à télécharger pour l'exercice de mardi 22 septembre**: {{:td_histoire_numerique:liste_notices_bnf.ods|liste_notices_BNF}} | + | ===== Documents à annoter ===== |
- | ==== Requête dans les données de la Bibliothèque nationale ==== | + | ==== Création du deuxième document à annoter ==== |
+ | **Document à télécharger pour l'exercice de mardi 29 septembre**: {{:td_histoire_numerique:liste_notices_bnf.ods|liste_notices_BNF.ods}} | ||
- | On interroge le point d'accès SPARQL de la Bibliothèque nationale de France pour créer un ensemble de données tirées des notices d'autorité. Ouvrir l'[[http://data.bnf.fr/sparql/|Editeur SPARQL de data.bnf.fr]] et coller dans l'espace Rêquete la requête qui suit, tout en laissant le format de sortie par défaut: HTML. Le résultat de la requête est ainsi mis en forme et peut être parcouru. | + | Les indications concernant la production du document se trouvent sur **[[td_histoire_numerique:creation_liste_notices_bnf|cette page]]**. |
- | <file> | + | Il s'agit maintenant le créer le document en format texte que nous allons annoter en introduisant une indexation sémantique. |
- | PREFIX egr: <http://rdvocab.info/ElementsGr2/> | + | * ouvrez le document 'liste_notices_BNF.ods' |
+ | * sélectionnez toutes les cellules de la colonne 'notice' sauf la première (qui contient le nom de la colonne). Pour sélectionner les cellules sélectionnez la première, appuyez sur la touche majuscule puis sélectionnez la dernière. | ||
+ | * collez le contenu du presse-papier dans un document texte vide (Writer) | ||
+ | * sauvegardez ce document sous le nom '**liste_notices_BNF.odt**' | ||
- | SELECT DISTINCT ?s ?na ?fn ?annee ?pb ?gd ?bio | + | \\ |
- | WHERE | + | Nous disposons donc de <html><span style="color:red;font-weight:bold;">deux documents à annoter</span></html> : {{:td_histoire_numerique:liste_notices_bnf.odt|celui que nous venons de produire}} et celui que nous avons téléchargé pour le premier exercice (il est {{:td_histoire_numerique:notices_texte_brut.odt|téléchargeable ici}}). |
- | { { { SELECT DISTINCT ?s ?bio | + | \\ |
- | WHERE | + | ===== Principes d'annotation ===== |
- | { { ?s egr:biographicalInformation ?bio | + | L'annotation sémantique des textes utilise les principes de l'[[https://fr.wikipedia.org/wiki/Extensible_Markup_Language|encodage en format XML]], selon les recommandations de la [[http://www.tei-c.org/|Text encoding initiative]], en les appliquant de manière simplifiée. |
- | FILTER ( contains(?bio, "mathém") || contains(?bio, "Mathém") ) | + | Voir sur [[td_histoire_numerique:descriptif_exercice_4&#principes_du_xmlla_grammaire_de_l_encodage|cette page]] une présentation synthétique des principe de l'encodage d'un texte en XML. |
+ | ==== Balises ==== | ||
+ | ^ Balise ^ Définition ^ Explication ^ Balise TEI ^ Exemple complet ^ Transformé en XML ^ | ||
+ | |{ud0}TTT{/ud} | unité documentaire | Au dessus du niveau paragraphe, enveloppe un paragraphe | tei:div | {ud0_8}TTT{/ud} | <ud ref="0" ana="8">TTT</ud> | | ||
+ | | {eud}TTT{/eud} | en-tête d'unité documentaire | A placer toujours au début d'une unité documentaire pour disposer d'un titre | tei:head | {eud_9}TTT{/eud} | <eud type="9">TTT</eud> | | ||
+ | | {en0}TTT{/en} | entité nommée | Identifie dans le texte une chaîne de caractères qui représente le nom d'un objet | tei:name | {en2ai_10}TTT{/en} | <en type="ai" ref="2" ana="10">TTT</en> | | ||
+ | | {ro0}TTT{/ro} | référence à un objet | Identifie dans le texte une chaîne de caractères qui se réfère à un objet sans être son nom | tei:rs | {ro0ai_10}TTT{/ro} | <ro type="ai" ref="2" ana="10">TTT</ro> | | ||
+ | | {dat}TTT{/dat} | tei:date |Une chaîne de caractéres qui représente une date dans n'importe quel format |date | {dat1576r_df} | <dat when="1576" cert="r" type="df">TTT</dat> | | ||
- | } | ||
- | UNION | + | | {seg}TTT{/seg} | segment | tei:seg |Au dessous du niveau paragraphe, toujours à l'intérieur d'un paragraphe, regroupe en règle générale plusieurs propositions. | |
+ | | {co0}TTT{/co} | contenu | tei:seg | Identifie dans le texte une unité de connaissance de type 'contenu' | | ||
+ | | {in0}TTT{/in} | information | tei:seg |Identifie dans le texte une unité de connaissance de type 'information' | | ||
- | { ?s egr:biographicalInformation ?bio | + | Dans l'espace de noms du TD, le nom des balises possède deux caractères si la balise est susceptible d'être associée à un objet de la base de données, trois si cette possibilité est exclue. \\ Pour les balises à deux lettres, un 0 est ajouté si la référence à un objet dans la base de données est omise. Au cas contraire, on remplace le 0 par l'identifiant de l'objet dans la base de données. |
- | FILTER ( contains(?bio, "astrono") || contains(?bio, "Astrono") ) | + | ==== Types ==== |
- | } | + | On peut ajouter un sigle sur deux caractères aux balises 'en' et 'ro', après le 0 ou l'identifiant numérique de l'objet, qui indique quel est le type de l'objet visé. |
- | } | + | | ai | Acteur [individuel] | |
+ | | ac | Acteur collectif | | ||
+ | | oa | Objet abstrait | | ||
+ | | cs | Caractère social | | ||
+ | | om | Objet matériel | | ||
+ | | bi | Bibliographie | | ||
+ | | ud | Unité documentaire | | ||
+ | | od | Objet digital | | ||
+ | | li | Lieu | | ||
+ | | im | Immeuble | | ||
- | } | + | Par exemple: {en0cs}mathématicien{/en} |
- | ?s egr:dateOfBirth ?bd | + | \\ |
+ | Si on souhaite spécifier un type sous forme d'un objet abstrait qu'on crée dans la base de données, on ajoutera l'identifiant de l'objet après un tiret bas. | ||
- | OPTIONAL | + | Par ex.:\\ |
+ | {seg_23}Érudit et collectionneur français{/seg} | ||
- | { ?s <http://xmlns.com/foaf/0.1/name> ?na } | + | Dans la base de données, l'objet 23 serait defini en tant que 'notice biographique succincte'. Avec ce procédé on peut indexer et qualifier au point de vue sémantique toute portion de texte. |
- | OPTIONAL | + | \\ |
+ | ==== Dates ==== | ||
- | { ?s <http://xmlns.com/foaf/0.1/familyName> ?fn } | + | Nous utilisons pour les dates le [[https://fr.wikipedia.org/wiki/ISO_8601|format ISO 8601]]. \\ |
+ | On saisira les dates sous forme de texte au format ISO 8601, ce qui permet de traiter les dates tronquées (seulement l'année, ou seulement l'année et le mois, etc.) | ||
- | OPTIONAL | + | \\ Mise en forme des dates : \\ \\ {dat20001101} le premier novembre de la dernière année du siècle précédent{/dat} |
- | { ?s egr:placeOfBirth ?pb } | + | \\ |
- | OPTIONAL | + | === Types de dates === |
- | { ?s <http://xmlns.com/foaf/0.1/gender> ?gd } | + | On peut ajouter après la date, en la séparant par un tiret bas, une précision sous forme de sigle à deux caractères qui indique quel est le type de date: |
- | } | + | | dd | Date de début | |
+ | | df | Date de fin | | ||
+ | | di | Date intermédiaire | | ||
+ | | du | Date unique | | ||
- | BIND(strbefore(strafter(str(?bd), "http://data.bnf.fr/date/"), "/") AS ?annee) | + | \\ |
- | FILTER ( ( ?annee> "1100" ) && ( ?annee <"1761" ) ) | + | === Incertitude concernant les dates === |
- | } | + | On peut ajouter également, à la suite de la date, un caractère qui indique le degré de précision de la date |
- | ORDER BY ?annee | + | | [e] | Date exacte | Ce caractère est omis car il s'agit de degré de précision par défaut | |
- | </file> | + | | r | Date reconstituée |Date qu'on a pu reconstituer à partir du contexte | |
- | <code sparql> | + | | p | Date postulée | Date qu'on fixe pour disposer d'un point d'ancrage dans le temps à défaut d'en savoir plus | |
- | </code> | + | |
- | Pour les intéressés, une présentation des concepts du web sémantique, dans le contexte du mouvement //Open Data//, se trouve [[http://phn-wiki.ish-lyon.cnrs.fr/doku.php?id=thatcamp_2014:session_thatcamp2014|sur cette page]]. | + | Il était en fonction au {dat20001115r_di} milieu du mois de novembre de la dernière année du siècle précédent{/dat}. |
- | === Création et nettoyage du fichier à encoder === | + | \\ |
- | * Revenir à la page de la 'Requête' et changer le 'Format du résultat' à CSV (comma-separated values) | + | ===== Annotation de documents ===== |
- | * Reexécuter al requête, sélectionner toute la page du résultat et la copier dans le presse-papier | + | |
- | * Ouvrir une nouvelle feuille de calcul dans le logiciel de tableur (Calc pour LibreOffice/OpenOffice; Excel dans la suite Microsoft) | + | |
- | * Coller avec collage spécial dans la première cellule de la feuille de calcul: A1 et choisir 'Texte non formaté'. | + | |
- | * Dans la boîte de dialogue mettre 'Virgule' comme séparateur | + | |
- | * Mettre le 'Type de colonne':'Texte' pour la colonne 'annee' | + | |
- | * Importer et vérifier le résultat | + | |
- | * Sauvegarder le nouveau fichier avec le nom 'liste_notices_BNF' au format .ods ou .xls | + | |
- | * Ajouter une colonne avant la colonne 'annee' qu'on va appeler 'nom' | ||
- | * Dans la première cellule qui contient les données insérer la formule: =SI(ESTVIDE(B2);C2;B2) | ||
- | * Copier-coller cette formule dans toutes les cellules de la colonne sauf la première ligne | ||
- | * Ajouter une colonne annee_mediane après la colonne année | ||
- | * Insérer dans toutes les cellules de cette colonne la formule =SI(ESTERREUR(CHERCHE("-";E2)) ; E2; CONCATENER(GAUCHE(E2;2);"51")) | ||
- | * Ajouter une colonne 'naissance' avant la colonne 'gd' (gender) et mettre cette formule dans toutes les cellules: =SI(ESTVIDE(G2);F2;CONCATENER(G2;", ";F2)) | ||
- | * Ajouter une colonne 'notice' après la colonne 'bio' et mettre dans toutes les cellules cette formule: =CONCATENER(D2;" (";H2;") ";J2;" [";A2;"]") | ||
- | * Trier les données d'après les colonnes 'annee_mediane' et 'nom' | ||
- | |||
- | On obtient ce résultat: {{:td_histoire_numerique:liste_notices_bnf.ods|liste_notices_BNF}} | ||
- | |||
- | ===== Annotation du document ===== | ||
==== Fonctionnalité 'Rechercher et remplacer' ==== | ==== Fonctionnalité 'Rechercher et remplacer' ==== | ||
Ligne 108: | Ligne 116: | ||
* [[https://books.google.com/ngrams/graph?content=Galileo+Galilei,Cartesio,Descartes,Copernico,Copernicus,Kopernik&year_start=1800&year_end=2000&corpus=22&smoothing=3&share=&direct_url=t1;,Galileo Galilei;,c0;.t1;,Cartesio;,c0;.t1;,Descartes;,c0;.t1;,Copernico;,c0;.t1;,Copernicus;,c0;.t1;,Kopernik;,c0|Google NGram viewer]] – explication : [[https://fr.wikipedia.org/wiki/Ngram_Viewer|Ngram Viewer]] | * [[https://books.google.com/ngrams/graph?content=Galileo+Galilei,Cartesio,Descartes,Copernico,Copernicus,Kopernik&year_start=1800&year_end=2000&corpus=22&smoothing=3&share=&direct_url=t1;,Galileo Galilei;,c0;.t1;,Cartesio;,c0;.t1;,Descartes;,c0;.t1;,Copernico;,c0;.t1;,Copernicus;,c0;.t1;,Kopernik;,c0|Google NGram viewer]] – explication : [[https://fr.wikipedia.org/wiki/Ngram_Viewer|Ngram Viewer]] | ||
- | ==== Principes d'annotation ==== | + | \\ |
- | Le principe de l'[[https://fr.wikipedia.org/wiki/Extensible_Markup_Language|encodage en format XML]] mais de manière simplifiée. | + | ==== Annotation manuelle ==== |
- | === Balises === | + | Une pratique efficace : |
+ | * sélectionner le texte à annoter, par ex. une entitée nommée | ||
+ | * ouvrir la boîte de dialogue Chercher/Remplacer et activer les expressions régulières | ||
+ | * entourer la chaîne recherchée avec une parenthèse ronde : ( ) | ||
+ | * utiliser les chaînes de remplacement précédemment utilisées, tout en mettant le bon objet, par ex. {en789}$1{/en} | ||
- | |{ud0_}TTT{/ud} | unité documentaire | tei:div | Au dessus du niveau paragraphe, enveloppe un paragraphe | | ||
- | | {eud}TTT{/eud} | en-tête d'unité documentaire | tei:head | A placer toujours au début d'une unité documentaire pour disposer d'un titre | | ||
- | | {seg}TTT{/seg} | segment | tei:seg | Au dessous du niveau paragraphe, toujours à l'intérieur d'un paragraphe, regroupe en règle générale plusieurs propositions. | | ||
- | | {co0}TTT{/co} | contentu | tei:seg | | | ||
- | | {in0}TTT{/in} | information | tei:seg | | | ||
- | | {en0}TTT{/en} | entité nommée | tei:name | | | ||
- | | {ro0}TTT{/ro} | référence à un objet | tei:rs | | | ||
- | | {dat}TTT{/dat} | date | tei:date | | | ||
- | Dans l'espace de noms du TD, le nom des balises possède deux caractères si la balise est susceptible d'être associée à un objet de la base de données, trois si cette possibilité est exclue. \\ Pour les balises à deux lettres, un 0 est ajouté si la référence à un objet dans la base de données est omise. | + | === Chercher toutes les annotations afin de les mettre en couleur ou de les supprimer === |
- | === Types === | + | * Rechercher: \{[a-zA-Z_/0-9]*\} |
+ | * Rechercher: (\{[a-zA-Z0-9_/]*\}) – Remplacer: $1 [avec indication du format dans le champs remplacer] | ||
- | On peut également ajouter un sigle sur deux caractères indiquant le type d'objet après le chiffre. | + | \\ |
- | | ai | Acteur [individuel] | | + | ==== Annotation semi-automatique ==== |
- | | ac | Acteur collectif | | + | |
- | | oa | Objet abstrait | | + | |
- | | cs | Caractère social | | + | |
- | | om | Objet matériel | | + | |
- | | bi | Bibliographie | | + | |
- | | ud | Unité documentaire | | + | |
- | | od | Objet digital | | + | |
- | | li | Lieu | | + | |
- | | im | Immeuble | | + | |
- | Par exemple: {en0cs}mathématicien{/en} | ||
- | |||
- | === Dates === | ||
- | |||
- | Nous utilisons pour les dates le [[https://fr.wikipedia.org/wiki/ISO_8601|format ISO 8601]]. \\ | ||
- | On saisira les dates sous forme de texte au format ISO 8601, ce qui permet de traiter les dates tronquées (seulement l'année, ou seulement l'année et le mois, etc.) | ||
- | \\ Mise en forme des dates : \\ \\ {dat20001101} le premier novembre de la dernière année du siècle précédent{/dat} \\ \\ | + | * Créer des unités documentaires, une par notice |
+ | * Chercher : $ Remplacer : \n{/ud}\n{ud0}\n | ||
+ | * Ajouter la première et la dernière balise | ||
- | | dd | Date de début | | + | * Annoter les dates de naissance |
- | | df | Date de fin | | + | * Chercher : (,\s|\()(\d{4})(\)) Remplacer : $1{dat$2}$2{/dat}$3 |
- | | di | Date intermédiaire | | + | * Avec cette expression on devrait trouver presque exclusivement les dates de naissance |
- | | du | Date unique | | + | |
- | + | ||
- | | [e] | Date exacte | | + | |
- | | r | Date reconstituée | | + | |
- | | p | Date postulée | | + | |
- | + | ||
- | Il était en fonction au {dat20001115r_di} milieu du mois de novembre de la dernière année du siècle précédent{/dat}. | + | |
- | + | ||
- | \\ | + | |
+ | * Chercher les lieux de naissance | ||
+ | * Chercher : (\s\()([\w\s\(\),'\?]*)(,\s\{) Remplacer : $1{en0li}$2{/en}$3 |