Ceci est une ancienne révision du document !
Cette page synthétise les différentes discussions autour de projets de l'Équipex Matrice mobilisant TXM.
Elle doit servir à faire la liaison entre ICAR et Matrice et au suivi des développements de solutions.
Dans la mesure où cette page est pour l'instant publique, il est intéressant de veiller à ne pas trop désigner de personnes et de projets concrets. (merci de nous contacter si cette page doit évoluer vers plus de confidentialité)
Une première expérience a consisté à analyser la relation entre des images du mémorial de Caen et des mots clés pour N participants “représentant des mémoires individuelles”.
Une autre expérience, sans les données sur les participants, a consisté à faire une LDA sur la matrice images x mots-clés, qui a permis de faire émerger des topics, avec pour chaque mot-clé une probabilité d'appartenance à ce topic. Les topics s'interprètent comme une reconstruction des zones du Mémorial (il y a une vingtaine de zones, et on a demandé à LDA une vingtaine de topics).
Une nouvelle expérience consiste à analyser la relation entre des documents audio ou vidéo de la base INA “représentant une mémoire collective” et les mêmes 123 mots-clés avec l'aide de TXM.
Il s'agit :
La chronologie des transcriptions est établie par leurs regroupements en plusieurs décennies fournis par DP → en fait nous prenons la totalité du corpus de transcriptions car nous n'avons pas d'informations chronologiques :
Une liste de termes est établie par PG en lien avec DP.
Expérience I
Expérience II
Des expériences de LDA sont réalisées sur la base de cette première matrice, pour calculer des distances entre termes pour caractériser le degré de regroupement entre des termes.
Nous allons fournir les données issues du corpus de transcriptions Matrice à Pierre sous une forme compatible avec les outils qu'il utilise.
Remarque : bien que d'autres outils, notamment R (package 'topicmodels') ou Java (Mallet) intégrables facilement dans TXM ou compatibles, permettent de faire du topic modeling au même titre que cette bibliothèque Matlab, dans un premier temps nous allons externaliser les données pour l'outil Matlab.
Bibliothèque Matlab Topic Modeling Toolbox
Elle manipule les types de données suivants :
GibbsSamplerLDA.m
La fonction 'GibbsSamplerLDA' utilise les données suivantes (de type bag of words) :
Le plus simple est d'utiliser les fonctions Matlab 'importworddoccounts' et 'textread' pour produire ces données.
— la fonction 'importworddoccounts' produit les vecteurs WS et DS à partir d'un fichier 'doc_word_freq.txt' de la forme suivante :
1 2 10 1 3 4 2 2 6 ...
Glose :
le mot 2 apparaît 10 fois dans le document 1 le mot 3 apparaît 4 fois dans le document 1 le mot 2 apparaît 6 fois dans le document 2 ...
En fait 'importworddoccounts' utilise la fonction 'SparseMatrixtoCounts' dont voici le code Matlab :
[ ii , jj , ss ] = find( WD ); ntokens = full( sum( sum( WD ))); WS = zeros(1, ntokens); DS = zeros(1, ntokens); startindex = 0; for i=1:length(ii) nt = ss(i); WS(startindex+1:startindex+nt) = ii(i); DS(startindex+1:startindex+nt) = jj(i); startindex = startindex + nt; end
— la fonction 'textread' (native) produit le tableau de chaines WO à partir d'un fichier 'lexique.txt' de la forme suivante :
forme_graphique_du_mot_1 forme_graphique_du_mot_2 forme_graphique_du_mot_3 ...
Les mots-clés sont organisés par catégorie (réécriture simplifiée mais représentative de ce que Pierre nous a fourni) :
Diagnostic :
Proposition :
Solution : Voir ticket #954
En ce qui concerne le fichier lexique.txt, il peut prendre la forme suivante :
Lybie URSS ... Usine d'armement Train Ruine Ville Village Camp Champ de bataille Mer Magazin Armée Japonaise Armée Soviétique ... Rommel di Bergolo Montgomery ... Prisonnier Déporté Interné Mort/Blessé Vieillard Orphelins Résistant Combattant Main-d'œuvre Section d'assaut Milice Maquis Jeunesse Hit. Partisan Population Combat Invasion/Conquête Bombardement etc.
En considérant qu'on associe à chacun des mots-clés une équation CQL qui lui correspond (peut-être dans un fichier tabulé où la première colonne est le mot-clé, la deuxième l'équation ?). (SH: je pense qu'un script Groovy sera plus simple et plus sûr, au moins dans une première version).
Par exemple :
Lybie : [frlemma="Lybie"] Usine d'armement : [frlemma="usine"][frlemma="de"][frlemma="armement"] di Bergolo : [word="di"%c][word="Bergolo"%c] Mort/Blessé : [frlemma="mort" | word="blessée?s?"%c] Orphelins : [frlemma="orphelin"] Main-d'œuvre : -> sur 1 ou 3 token en fonction de la tokenisation faite par le LIMSI, à vérifier Jeunesse Hit. : [frlemma="jeunesse"][word="hitlériennes?"%c] Invasion/Conquête : [frlemma="invasion|conquête"] etc.
Il faudra prévoir de confronter chaque, ou certaines, CQL à tout ou partie du corpus des transcriptions pour régler : 1) la forme effective prise par les mots-clés, donc les CQL 2) la pertinence des mots-clés entre eux
J'espère que nous n'aurons pas besoin de générer de concordance pour ça.
Mais un Index est peut-être à considérer dès maintenant.
Il y a peut-être d'autres choses que l'on peut faire pour améliorer ce jeu de mots-clés :
Les lignes du fichier doc_word_freq.txt consistent en :
<numéro d'ordre du document> <numéro de la ligne du fichier lexique.txt correspondant à l'équation CQL lancée> <nb matchs équation CQL>
A vérifier mais il semble que les lignes où le nb de matchs est nul peuvent (voire doivent ?) ne pas être mises.
Pour discussion du mardi 17 juin 2014.
est fournie par un identifiant unique entre la base Opsomaï et le nom du fichier LIMSI ?)