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_4 [2016/01/05 18:22] Francesco Beretta [Exploration du contenu encodé] |
td_histoire_numerique:exercice_4 [2016/01/05 20:00] Francesco Beretta [Exploration avec le logiciel R] |
||
---|---|---|---|
Ligne 53: | Ligne 53: | ||
===== Exploration du contenu encodé ===== | ===== Exploration du contenu encodé ===== | ||
- | En appliquant la méthode présentée dans le [[td_histoire_numerique:exercice_3#transformation_des_textes_encodes_en_xml|troisième exercice]], nous avons copié le texte encodé dans le document "liste_notices_BNF_annote_lieux_professions.odt" et nous l'avons collé dans l'objet 36 de la base de données, un objet digital intitulé "Notices BNF avec annotation sémantique". Nous avons ensuite exécuté cette transformation: | + | ==== Transformation vers un texte en format XML ==== |
- | <code html>SELECT vues.transformation_xml(3)</code> | + | |
- | qui produit le texte xml dans le champs "texte_xml". | + | En appliquant la méthode présentée dans le [[td_histoire_numerique:exercice_3#transformation_des_textes_encodes_en_xml|troisième exercice]], nous avons copié le texte encodé qui se trouve dans le document "liste_notices_BNF_annote_lieux_professions.odt" et nous l'avons collé dans l'objet 36 de la base de données, un objet de type "objet digital" intitulé "Notices BNF avec annotation sémantique". Nous avons ensuite exécuté cette transformation: |
+ | <code html>SELECT vues.transformation_xml(36)</code> | ||
+ | qui produit le texte XML dans le champs "texte_xml". | ||
+ | |||
+ | En combinant les requêtes XPath et SQL, on peut désormais explorer les textes encodés. | ||
+ | Avec cette requête, par exemple, on peut chercher tous les concepts encodés, un par personne et année: | ||
+ | <code sql> | ||
+ | WITH tw1 AS | ||
+ | ( | ||
+ | SELECT UNNEST(xpath ('/root/ud',t1.texte_xml)) ud, | ||
+ | UNNEST(xpath ('/root/ud/dat[1]/@when',t1.texte_xml)) annee | ||
+ | FROM objets.objet t1 | ||
+ | WHERE t1.pk_objet = 36 | ||
+ | ), | ||
+ | tw2 AS | ||
+ | ( | ||
+ | SELECT ROW_NUMBER() OVER (ORDER BY 1)::INTEGER AS id_ud, | ||
+ | (UNNEST(xpath ('//en/@ref',tw1.ud))::text) en, | ||
+ | annee | ||
+ | FROM tw1 | ||
+ | ) | ||
+ | SELECT DISTINCT id_ud, | ||
+ | (en::text)::integer cle_objet, | ||
+ | (annee::text)::integer annee, | ||
+ | t1.nom | ||
+ | FROM tw2 | ||
+ | JOIN vues.vm_objet_vue_de_base t1 | ||
+ | ON t1.pk_objet = tw2.en::integer | ||
+ | AND t1.fk_type_objet_param = 4 | ||
+ | ORDER BY annee, | ||
+ | id_ud | ||
+ | </code> | ||
+ | |||
+ | Les requêtes SQL peuvent être intégrées directement dans les scripts du logiciel R grâce à la librairie "RPostgreSQL". Dans le {{:td_histoire_numerique:r_td2015_distribue.zip|projet R ci-joint}}, on trouvera quelques exemples d'exploration et de visualisation des données. Il faut d'abord ajouter ses propres paramètres de connexion (adresse de la base de données, login et mot de passe) dans le document "connexion_postgresql.R", puis exécuter ce script afin d'ouvrir une connexion avec la base de données qui pourra ensuite être appelée depuis les autres scripts. Il faut aussi installer préalablement toutes les librairies R appelées par les différents scripts du projet. | ||
+ | |||
+ | |||
+ | ==== Exploration avec le logiciel R ==== | ||
+ | |||
+ | |||
+ | Le script "exploration_notices.R" permet d'afficher un histogramme qui représente les générations de mathématiciens et astronomes avec un pas de 25 ans. | ||
+ | {{ :td_histoire_numerique:r_generations.jpg?300 |}} | ||
+ | On constate ainsi que la portion des individus nés avant 1450 est très faible par rapport à l'ensemble de la population. Ceci invite à restreindre l'analyse suivante, qui représente les effectifs de professions encodées sous forme de "boîte à moustaches" (boxplot), aux individus nés après 1400. | ||
+ | {{ :td_histoire_numerique:r_boxplot_soch.jpg?300 |}} | ||
+ | Cette visualisation permet de prendre rapidement la mesure de la distribution dans le temps des professions et de leurs effectifs. Cette exploration est effectuée dans le script "exploration_caracteres_sociaux.R" du projet R. | ||
+ | |||
+ | Enfin, on peut explorer les relations entre professions dans les notices, sous forme de fréquences de cooccurrences, en utilisant une requête SQL/XPath et une visualisation qui utilise des techniques d'analyse de réseaux. | ||
+ | // | ||
+ | {{ :td_histoire_numerique:r_reseau_cooccurrences.jpg?300 |}} | ||
+ | Ce graphique représente une analyse équivalente à l'analyse des similitudes des notices fondée sur les cooccurrences des lemmes effectuée ci-dessus avec le logiciel Iramuteq. Toutefois, elle est beaucoup plus précise dans la mesure où elle resulte de l'encodage des concepts dans les textes. Ce travail d'identification des entités nommées, en lien avec la base de données, ajoute une dimension sémantique résultant de l'analyse du texte, et de son encodage, par le chercheur. De cette analyse des propriétés structurales et représentation graphique des relations entre concepts apparaît entre autres que les professions plus 'marginales', par ex. les cartographes, les architectes et les libraires, moins représentées en termes d'effectifs dans la population que les mathématiciens et les astronomes (comme le montre le boxplot précédent) sont plus connectés avec l'ensemble des autres professions, ce qui apparaît de leur degré de centralité représenté par le diamètre des sommets. | ||