GraphClick
iLocalize
Unite
Barbouillon
xFractal
ProVoc
XS
AudioXplorer

Archives
Developpeurs

Online-Store
Support
home

Calculs statistiques

Cette section décrit les fonctions utilitaires utilisées pour l'affichage des statistiques.

Fonction LemmesDans:

  1. function LemmesDans:(const)extrait

  2. lemmes = distinctValuesIn:extrait["//w.lex"]

  3. return lemmes - ""

Retourne les valeurs distinces (et non nulles) des attributs lex des tags <w>...</w> trouvés dans extrait.

Fonction VerbesDans:

  1. function VerbesDans:(const)extrait

  2. return extrait["//w[.temps != '']"]

Retourne les balises <w>...</w> dans extrait pour lesquelles l'attribut temps est défini.

Fonction MotsDans:deCatégorie:

  1. function MotsDans:(const)extrait deCatégorie:(const)catégorie

  2. return extrait["//w[.cat=" + catégorie + "]"]

Retourne les balises <w>...</w> dans extrait pour lesquelles l'attribut cat est égal à la valeur catégorie passée en paramètre.

Algorithmes d'analyse

Cette section décrit les fonctions utilitaires utilisées pour l'analyse des textes.

Fonction AfficherLes:lemmesLesPlusFréquentsDans:

Affiche les lemmes les plus fréquents, ainsi que le nombre d'occurrences pour chaque lemme.

  1. function AfficherLes:(const)x lemmesLesPlusFréquentsDans:(const)extrait

  2. tableau = {}

  3. for lemme = distinctValuesIn:extrait["//w.lex"]

  4.     occurrences = count:extrait["//w[.lex=" + lemme + "]"]

  5.     entrée = ["Lemme" = lemme "Occurrences" = occurrences]

  6.     tableau += entrée

  7. end

  8. sort:tableau by:this["Occurrences"] ascending:no

  9. for entrée = tableau[1..x]

  10.     lemme = entrée["Lemme"]

  11.     n = entrée["Occurrences"]

  12.     write:"\t", lemme, " (", n, " occurrences)"

  13. end

Lignes 3 à 8: Crée un tableau à partir des lemmes trouvés dans extrait. Chaque élément du tableau (entrée) est une paire contenant le lemme (clé "Lemme") avec le nombre d'occurrences (clé "Occurrences").

Ligne 9: Trie le tableau par ordre décroissant de nombre d'occurrences.

Ligne 11 à 15: Pour les x premiers éléments du tableau, affiche le lemme ainsi qu'entre parenthèses le nombre d'occurrences.

Fonction AfficherLes:lemmesLesPlusVariésDans:

Affiche les lemmes les plus variés, c'est-à-dire présentant le plus grand nombre d'occurrences distinctes. Demande ensuite à l'utilisateur de choisir un lemme pour lequel les occurrences distinctes sont affichées.

  1. function AfficherLes:(const)x lemmesLesPlusVariésDans:(const)extrait

  2. tableau = {}

  3. for lemme = distinctValuesIn:extrait["//w.lex"]

  4.     formes = extrait["//w[.lex=" + lemme +"]*"]

  5.     replaceElementsIn:formes with:lowercase:this

  6.     formes = distinctValuesIn:formes

  7.     entrée = ["Lemme" = lemme "Formes" = formes]

  8.     tableau += entrée

  9. end

  10. sort:tableau by:(count:this["Formes"]) ascending:no

  11. i = 1

  12. for entrée = tableau[1..x]

  13.     lemme = entrée["Lemme"]

  14.     n = count:entrée["Formes"]

  15.     write:"\t", i, ". ", lemme, " (", n, " formes)"

  16.     i += 1

  17. end

  18. i = prompt:"Numéro du lemme choisi ?"

  19. entrée = tableau[i]

  20. write:"Formes pour ", entrée["Lemme"], ":"

  21. write:entrée["Formes"]

Lignes 3 à 11: De façon similaire à la fonction précédente, crée un tableau des lemmes présentant le plus grand nombre d'occurrences distinctes (formes).

Ligne 5: Recherche des occurrences pour les mots d'un lemme donné.

Ligne 6: Remplace chaque occurrence par des minuscules.

Ligne 7: Ne garde que les formes distinctes.

Lignes 13 à 19: Affichage numéroté des lemmes ainsi que du nombre de formes.

Ligne 20: Demande à l'utilisateur de choisir un lemme.

Lignes 21 à 23: Affichage des formes pour le lemme choisi.

Fonction AfficherEmploiDesTempsDans:

Affiche un tableau des emploi des différents temps pour chaque auteur, en pourcentage. Les colonnes correspondent aux temps, les lignes aux auteurs. Les éléments d'une ligne sont séparés par des tabulateurs.

  1. function AfficherEmploiDesTempsDans:(const)extrait

  2. temps = distinctValuesIn:extrait["//w.temps"]

  3. temps = elementsOf:temps satisfying:(lengthOf:this) > 0

  4. ligne = "Auteur\t"

  5. for t in temps

  6.     ligne += t + "\t"

  7. end

  8. write:ligne

  9. for texte in extrait

  10.     N = count:VerbesDans:texte

  11.     comptes = CompterTempsDans:texte

  12.     ligne = texte["/author*"] + "\t"

  13.     for t in temps

  14.         if isDefined:comptes[t]

  15.             n = comptes[t]

  16.         else

  17.             n = 0

  18.         end

  19.         ligne += n / N * 100 + "%\t"

  20.     end

  21.     write:ligne

  22. end

Lignes 3 et 4: Recherche des temps trouvés dans les textes, c'est-à-dire des valeurs non nulles des attributs temps des balises <w>.

Lignes 6 à 10: Affiche la ligne des en-têtes (à savoir: "Auteur" suivi des noms des temps séparés par des tabulateurs).

Ligne 13: Compte le nombre total de verbes dans chaque texte de l'extrait.

Ligne 14: Compte le nombre d'occurrences pour chaque temps (voir CompterTempsDans: ci-dessous)

Ligne 15 à 22: Construit la ligne à afficher avec le nom de l'auteur (le contenu de la balise author) suivi du pourcentage correspondant à l'emploi de chaque temps.

Fonction CompterTempsDans:

Retourne un dictionnaire indiquant l'emploi des différents temps dans l'extrait donné. La clé de chaque paire correspond au nom du temps, et la valeur correspondante contient le nombre d'occurrences.

  1. function CompterTempsDans:(const)extrait

  2. verbes = VerbesDans:extrait

  3. temps = summarize:verbes by:attribute:"temps" ofTag:this

  4. replaceElementsIn:temps with:count:this

  5. return temps

Ligne 3: Recherche des verbes dans l'extrait

Ligne 4: Construit un dictionnaire à partir des attributs temps de chaque balise

Ligne 5: Remplace les valeurs du dictionnaire par les nombres d'occurrences de chaque temps

Exemple

>> CompterTempsDans:corpus[1]
[
 imparfait =
    1
 infinitif =
    2
 parfait =
    6
 part. passé =
    4
 part. présent =
    1
 présent =
    4
 subj. prés. =
    1
]

Fonction AfficherLemmesPropresDans:

Affiche pour chaque auteur, ainsi que pour les dates BC et AC, la liste des lemmes propres, c'est-à-dire utilisés uniquement par l'auteur (ou à la date) en question.

  1. function AfficherLemmesPropresDans:(const)extrait

  2. for auteur in distinctValuesIn:extrait["//author*"]

  3.     write:"Lemmes propres à ", auteur, ":"

  4.     ligne = ""

  5.     for lemme in LemmesUniquesPour:"author" contenant:auteur dans:extrait

  6.         ligne += lemme + ", "

  7.     end

  8.     trim:ligne from:", "

  9.     write:ligne, "\n"

  10. end

  11. for date in {"AD", "BC"}

  12.     write:"Lemmes propres aux dates ", date, ":"

  13.     ligne = ""

  14.     for lemme in LemmesUniquesPour:"date" contenant:date dans:extrait

  15.         ligne += lemme + ", "

  16.     end

  17.     trim:ligne from:", "

  18.     write:ligne, "\n"

  19. end

Lignes 3 à 11: Pour chaque auteur, recherche des lemmes uniques (voir LemmesUniquesPour:contenant:dans: ci-dessous) et affichage de lemmes séparés par des virgules

Ligne 9: Elimine les virgules initiales ou finales de la liste

Lignes 13 à 21: Idem pour les dates

Fonction LemmesUniquesPour:contenant:dans:

Retourne les lemmes présents uniquement dans les textes dont le contenu d'une balise particulière (p.ex. author) contient une chaîne donnée (p.ex. Julius Caesar).

  1. function LemmesUniquesPour:(const)nomTag contenant:(const)valeur dans:(const)extrait

  2. condition = "../doc/" + nomTag + "* @ '" + valeur + "'"

  3. lemmes = distinctValuesIn:extrait["//w[" + condition + "].lex"]

  4. autresLemmes = distinctValuesIn:extrait["//w[!" + condition + "].lex"]

  5. return lemmes - autresLemmes

Ligne 3: Création de la chaîne correspondant à la condition spécifiée (p.ex. "../doc/author* @ 'Julius Caesar'", signifiant que le contenu de la balise author contient Julius Caesar)

Ligne 4: Recherche des lemmes pour les mots répondant à cette condition

Ligne 5: Recherche des lemmes pour les autres mots (ne répondant donc pas à la condition)

Ligne 7: Retourne les lemmes uniques à la condition

Étape suivante