Liste de liens :
Liste de liens :
Cette page regroupe actuellement plusieurs discussions, correspondant à différents ajouts ou corrections liés à la fonction spécificité :
Il ne s'agit pas à proprement parler d'une spécification des spécificités elles-mêmes.
À partir :
Correction du bug de l'indice de spécificité à 0 et de la propagation de la convention +/- : #687
La fonction 'phyper' retourne des flottants de plus en plus proches de zéro suivant ses arguments (par exemple jusqu'à 1,0E-304 sur une machine Linux 64-bit standard) jusqu'au moment où elle retourne toujours le flottant 0.0 au delà. C'est la convention de 'phyper' de R qui dépend de l'architecture de la machine.
La convention du calcul des spécificités est de retourner le logarithme en base 10 du retour de phyper. Pour la valeur de phyper de 0.0, le log10 retourne bien -Inf mais le calcul R des spécificités retourne 0.0 alors qu'il devrait retourner soit -Inf, soit une valeur max conventionnelle notamment pour faciliter la lecture des graphiques (avoir des barres de spécificités de taille comparables) (retrouver le nom de la préférence TXM).
Par ailleurs, le passage par la valeur 0.0 provoque la perte de l'information de la convention +/- :
L'implémentation R du calcul des spécificités est décomposé en deux étapes :
pour les tables lexicales calculent la probabilité signée (le résultat de phyper + convention +/-)
Or, quand l'étape 1 produit la valeur 0.0, l'étape 2 n'a plus l'information du signe de la probabilité pour gérer la convention +/-.
Dans l'étape 1 : quand phyper retourne 0.0, soit :
Dans l'étape 2 :
[MD] : Lors du passage au logarithme dans l'étape 2, ajouter un test pour vérifier si la probabilité vaut 0.0, si c'est le cas alors l'indice de spécificité vaut EXPOSANT_MAX, où EXPOSANT_MAX est l'exposant négatif maximum que la fonction phyper peut retourner (lié à l'architecture de la machine qui execute R).
[BP] La solution 2 me semble un bon compromis à condition de documenter très clairement ce “10.0” arbitraire dans le code. L'inconvénient de la solution 1 est de ne pas faire la différence entre une probabilité qui arriverait juste avant le seuil et une probabilité qui le dépasse. La solution 3 est plus propre mais beaucoup plus lourde ? Une 4e solution serait, lorsque la probabilité vaut 0, de calculer le signe (positif si f/t > F/T), mais sans doute est-ce plus lourd que de systématiquement passer un tableau avec toutes les conventions (solution 3).
Actuel code de specificities.R :
spe <- specificities.lexicon.probabilities(lexicon, sublexicon); spelog <- matrix(0, nrow=nrow(spe), ncol=ncol(spe)); spelog[spe < 0] <- log10(-spe[spe < 0]); spelog[spe > 0] <- abs(log10(spe[spe >=0])); # MD: why abs ? spelog[spe == 0] <- 0; # MD: why not +/-Inf ? We need to store negative and positive indexes instead of checking score sign spelog[is.infinite(spe)] <- 0; # MD: why not max/min specif score
Plusieurs questions :
Actuellement, c'est le signe de la probabilité indique s'il s'agit d'un indice de spécificité positif ou négatif. Lorsque que le score vaut 0, on ne peut donc pas savoir le signe de l'indice. Une proposition est que les fonctions “specificities.lexicon.probabilities” et “specificities.probabilities” retournent un objet qui contient la matrice des probabilités ainsi que les listes d'index des indices positifs et négatifs
1. Usages visés :
Exemple de démarche :
2. Stratégie
Prend en entrée un résultat de spécificités
Produit A) un sous-ensemble de ses mots tel que :
B) Visualisation complémentaire :
C) moyen de mettre en évidence les lignes correspondantes dans le tableau des spécificités.
Forme du résultat :
3. Implémentation
Paramètres :
Donner accès à certains paramètres dans la zone de résultats
Colonnes :
Surtout pour les tri multiples
À la SmartGWT ? À la concordance TXM ? À la Calc ?
see also: #1570
À la FF, à la toolbar Eclipse ?
Voir les classes : Specificities et SpecificitiesEditor
def selection = editor.getlineTableViewer().getSelection() def names = table.getRowNames().asStringsArray() println "Selection: "+selection.toList() println "Names: "+names[selection.toList()]
Focus
Dans un premier temps, pour la release 0.7.5, le champ focus sera retiré.
Dans un 2e temps, il faudra convenir d'une éventuelle nouvelle interface.
Construction depuis une partition
Les préférences par défaut de la table lexicale ne sont pas bonnes car elles déforment F et T (les marges de la table sont dans la table). On utilise alors Fmin=1 et Vmax=9999999.
cd <dossier de téléchargement> sudo R CMD INSTALL textometry_0.1.3.tar.gz
Contenu du fichier CSV (UTF-8) de la table lexicale :
"Allocution radiotélévisée" "Conférence de presse" "Entretien radiotélévisé" "Saint-Laurent- du-Pont" 10000 0 0 "Saint-Pierre-Et-Miquelon" 10000 1000 0 "professionnellement" 10000 1 0 "Société Des Nations" 10000 3 0