зеркало из
				https://github.com/M82-project/DIMA.git
				synced 2025-10-29 21:16:16 +02:00 
			
		
		
		
	
		
			
				
	
	
	
		
			15 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			15 KiB
		
	
	
	
	
	
	
	
Méthode d'analyse DIMA - Documentation technique
1. Processus d'analyse d'une page web
Phase 1 : Extraction du contenu
A. Extraction du titre
// Sources prioritaires pour le titre
1. document.title (titre de la page)
2. meta[property="og:title"] (Open Graph)
3. meta[name="twitter:title"] (Twitter Cards)
4. Premier <h1> de la page
5. Éléments avec classes .title, .headline
B. Extraction du contenu textuel
// Sélecteurs prioritaires (dans l'ordre)
1. <article> - Contenu éditorial principal
2. [role="main"], <main> - Zone principale
3. .article-content, .post-content, .entry-content
4. .content, .story-body, .article-body
5. #article-body, .post-body, .text-content
// Fallbacks si contenu insuffisant
- <p>, <h1-h6> - Paragraphes et titres
- .text, .description, .summary
- [class*="content"], [class*="text"]
- <blockquote>, <figcaption>
C. Filtrage "intelligent"
// Éléments ignorés
- Navigation (nav, menu)
- En-têtes et pieds de page (header, footer)
- Barres latérales (sidebar)
- Publicités (ad, advertisement)
- Boutons sociaux (social, share)
- Commentaires (comments)
- Éléments cachés (display: none)
D. Nettoyage du texte
// Normalisation
- Suppression des caractères spéciaux
- Normalisation des espaces
- Conversion en minuscules
- Limitation à 5000 caractères max
Phase 2 : Analyse des techniques
A. Sélection des techniques
// Filtrage : uniquement les techniques (TE), pas les tactiques (TA)
const techniques = DIMA_TECHNIQUES.filter(item => item.type === 'technique');
// Résultat : 20 techniques analysées
B. Analyse basique vs améliorée
Mode basique (mots-clés simples) :
// Recherche directe dans le texte
for (keyword in technique.mots_cles) {
    if (text.includes(keyword)) {
        score += 1;
    }
}
Mode amélioré (système avancé) :
// 1. Mots-clés de base (core)
score += analyzeCore(enhancedData.core);
// 2. Variantes avec pondération
score += analyzeVariants(enhancedData.variants);
// 3. Patterns regex complexes
score += analyzePatterns(enhancedData.patterns);
// 4. Analyse contextuelle
boosts = analyzeContext(text, techniqueId);
2. Méthode de calcul de l'index DIMA
Étape 1 : Score brut par technique
// Pour chaque technique détectée
rawScore = nombreOccurrences * multiplicateurVariante
// Exemple : TE0500 (Clickbait)
// - "vous ne croirez pas" (core) : +1.0
// - "révélation choc" (clickbait_formula) : +1.6  
// - Pattern "X choses que..." : +1.5
// Score brut = 4.1
Étape 2 : Pondération contextuelle
// Adaptation selon le type de page
switch(pageType) {
    case 'news':
        if (TE0500) contextWeight = 1.4; // Clickbait plus grave
        if (TE0132) contextWeight = 1.3; // Négativité suspecte
        break;
    case 'commerce':
        if (TE0501) contextWeight = 0.9; // FOMO plus normale
        if (TE0143) contextWeight = 0.7; // Comparaisons normales
        break;
}
Étape 3 : Pondération dynamique
// Selon la fréquence d'apparition
if (occurrences >= 10) dynamicWeight = 1.4;      // Très suspect
else if (occurrences >= 7) dynamicWeight = 1.3;  // Suspect  
else if (occurrences >= 5) dynamicWeight = 1.2;  // Légèrement suspect
else if (occurrences >= 3) dynamicWeight = 1.1;  // Un peu suspect
else dynamicWeight = 1.0;                         // Normal
// Bonus pour techniques critiques
if (isCritical && occurrences >= 2) dynamicWeight *= 1.1;
Étape 4 : Boosts contextuels
// Multiplicateurs selon le contexte détecté
const contextBoosts = {
    urgency: 1.3,    // Mots d'urgence détectés
    authority: 1.4,   // Références d'autorité
    social_proof: 1.2 // Preuve sociale
};
// Application des boosts
for (boost of contextBoosts) {
    finalScore *= boost.value;
}
Étape 5 : Score pondéré final
// Calcul complet pour une technique
const baseWeight = technique.weight || 1.0;        // Poids de base (ex: 1.5 pour clickbait)
const totalWeight = baseWeight * contextualWeight * dynamicWeight;
const weightedScore = finalScore * totalWeight;
// Exemple concret :
// TE0500 sur site d'actualités avec 6 occurrences
// baseWeight = 1.5 (clickbait)
// contextualWeight = 1.4 (site news)  
// dynamicWeight = 1.2 (6 occurrences)
// totalWeight = 1.5 × 1.4 × 1.2 = 2.52
// weightedScore = 4.1 × 2.52 = 10.3
Étape 6 : Score global de la page
// Agrégation de toutes les techniques détectées
let totalScore = 0;
for (technique of detectedTechniques) {
    totalScore += technique.weightedScore;
}
// Normalisation finale
const globalScore = Math.min(Math.round(totalScore * 3), 100);
3. Exemple de calcul complet
Page analysée : Article clickbait sur site d'actualités
// Techniques détectées :
TE0500 (Clickbait): 
- Score brut: 4.1
- Poids: 1.5 × 1.4 × 1.2 = 2.52  
- Score pondéré: 10.3
TE0132 (Biais négativité):
- Score brut: 2.0
- Poids: 1.4 × 1.3 × 1.0 = 1.82
- Score pondéré: 3.6
TE0212 (Preuve anecdotique):
- Score brut: 1.0  
- Poids: 1.4 × 1.3 × 1.0 = 1.82
- Score pondéré: 1.8
// Total : 10.3 + 3.6 + 1.8 = 15.7
// Score global : min(15.7 × 3, 100) = 47
// Niveau de risque : "Élevé"
Système de pondération DIMA - Guide complet
1. Architecture du système de poids
Hiérarchie des pondérations
Score Final = Score Brut × Poids Base × Poids Contextuel × Poids Dynamique × Boosts
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐    ┌──────────────┐
│   Score Brut    │ ×  │   Poids Base     │ ×  │ Poids Contextuel│ ×  │Poids Dynamique│
│ (occurrences)   │    │ (par technique)  │    │ (type de page)  │    │ (fréquence)   │
└─────────────────┘    └──────────────────┘    └─────────────────┘    └──────────────┘
                                                        ↓
                                                ┌──────────────┐
                                                │   Boosts     │
                                                │ (contextuels)│
                                                └──────────────┘
2. Poids de base par technique
Classification par gravité
🔴 Très élevé (1.4-1.6)
TE0132: 1.4,  // Biais de négativité - Joue sur la peur
TE0501: 1.4,  // FOMO - Manipulation pure
TE0500: 1.5,  // Clickbait - Tromperie délibérée
TE0221: 1.6   // Stéréotypes - Impact social grave
🟠 Élevé (1.1-1.3)
TE0131: 1.3,  // Effet de bizarrerie - Sensationnalisme
TE0212: 1.4,  // Preuve anecdotique - Fausse généralisation
TE0251: 1.4,  // Faux consensus - Illusion d'accord
TE0321: 1.5   // Biais de confirmation - Renforce les préjugés
🟡 Modéré (1.0-1.1)
TE0111: 1.0,  // Heuristique disponibilité - Biais naturel
TE0112: 1.2,  // Simple exposition - Répétition
TE0121: 1.1,  // Illusion fréquence - Perception biaisée
🟢 Faible (0.8-0.9)
TE0143: 0.8,  // Effet de contraste - Comparaison normale
TE0232: 0.9   // Route connue - Préférence naturelle
Justification des poids
| Technique | Poids | Justification | 
|---|---|---|
| TE0221 (Stéréotypes) | 1.6 | Impact social majeur, discrimination, propagation de préjugés | 
| TE0500 (Clickbait) | 1.5 | Manipulation pure pour générer des clics, tromperie délibérée | 
| TE0132 (Négativité) | 1.4 | Exploitation de la peur, impact émotionnel fort | 
| TE0501 (FOMO) | 1.4 | Création d'urgence artificielle, pression psychologique | 
| TE0143 (Contraste) | 0.8 | Technique normale de comparaison, usage légitime | 
3. Pondération contextuelle
Adaptation selon le type de page
Sites d'actualités (news)
case 'news':
    TE0500 → ×1.4  // Clickbait inacceptable dans l'info
    TE0132 → ×1.3  // Négativité suspecte 
    TE0221 → ×1.5  // Stéréotypes graves
    TE0212 → ×1.3  // Preuves anecdotiques problématiques
    TE0261 → ×0.8  // Biais rétrospectif plus normal
Réseaux sociaux (social)
case 'social':
    TE0132 → ×0.9  // Négativité plus courante
    TE0131 → ×0.8  // Bizarrerie normale
    TE0501 → ×1.3  // FOMO plus manipulatoire
    TE0221 → ×1.6  // Stéréotypes très graves
    TE0251 → ×1.2  // Faux consensus suspect
Sites commerciaux (commerce)
case 'commerce':
    TE0501 → ×0.9  // FOMO plus normale en marketing
    TE0141 → ×0.8  // Unicité = argument de vente normal
    TE0143 → ×0.7  // Comparaisons légitimes
    TE0422 → ×1.2  // Fausse autorité problématique
    TE0411 → ×1.1  // Excès confiance suspect
Blogs personnels (blog)
case 'blog':
    TE0212 → ×0.8  // Anecdotes plus normales
    TE0314 → ×0.9  // Suggestions plus acceptables
    TE0261 → ×0.7  // Biais rétrospectif courant
    TE0321 → ×1.1  // Biais confirmation suspect
Exemple concret
// TE0500 (Clickbait) détecté
// Site d'actualités vs Site commercial
// Site d'actualités :
baseWeight = 1.5
contextualWeight = 1.4  // Très grave dans l'info
finalWeight = 1.5 × 1.4 = 2.1
// Site commercial :
baseWeight = 1.5  
contextualWeight = 1.0  // Normal en marketing
finalWeight = 1.5 × 1.0 = 1.5
// Impact : 40% plus sévère sur site d'actualités
4. Pondération dynamique
Selon la fréquence d'apparition
calculateDynamicWeight(technique, occurrences) {
    if (occurrences >= 10) return 1.4;      // 🔴 Très suspect
    if (occurrences >= 7)  return 1.3;      // 🟠 Suspect  
    if (occurrences >= 5)  return 1.2;      // 🟡 Légèrement suspect
    if (occurrences >= 3)  return 1.1;      // 🟢 Un peu suspect
    return 1.0;                             // ⚪ Normal
}
Règles spéciales ⚡
Techniques critiques
const criticalTechniques = ['TE0221', 'TE0500', 'TE0132', 'TE0501'];
// Bonus si ≥2 occurrences d'une technique critique
if (isCritical && occurrences >= 2) {
    dynamicWeight *= 1.1;  // +10% supplémentaire
}
Techniques bénignes
const benignTechniques = ['TE0143', 'TE0232', 'TE0333'];
// Réduction si technique bénigne très fréquente
if (isBenign && occurrences >= 5) {
    dynamicWeight *= 0.9;  // -10%
}
Courbe de pondération dynamique
Poids dynamique
    ↑
1.4 |     ●────────────  (≥10 occurrences)
1.3 |   ●─┘              (7-9 occurrences) 
1.2 | ●─┘                (5-6 occurrences)
1.1 |●┘                  (3-4 occurrences)
1.0 ●────────────────── → Occurrences
    0  1  2  3  4  5  6  7  8  9  10+
5. Boosts contextuels
Multiplicateurs selon le contexte détecté
const CONTEXT_PATTERNS = {
    urgency: {
        boost: 1.3,  // +30%
        patterns: [
            /urgent|rapidement|vite|immédiatement/i,
            /dernière\s+chance|temps\s+limité/i
        ],
        techniques: ['TE0501', 'TE0500']
    },
    
    authority: {
        boost: 1.4,  // +40%  
        patterns: [
            /selon\s+(?:les\s+)?(?:experts?|docteurs?)/i,
            /étude\s+(?:révèle|montre|démontre)/i
        ],
        techniques: ['TE0422', 'TE0212']
    },
    
    social_proof: {
        boost: 1.2,  // +20%
        patterns: [
            /\d+(?:\.\d+)?[km]?\s+personnes?\s+(?:utilisent|pensent)/i,
            /tout\s+le\s+monde|viral|tendance/i
        ],
        techniques: ['TE0251', 'TE0221']
    }
};
Application des boosts
// Exemple : TE0501 (FOMO) avec contexte d'urgence
score = 3.0  // Score de base
contextualWeight = 1.0
dynamicWeight = 1.1  // 3 occurrences
// Détection du contexte "urgency"
urgencyBoost = 1.3
// Calcul final
finalScore = 3.0 × 1.3 = 3.9  // Application du boost
weightedScore = 3.9 × 1.4 × 1.0 × 1.1 = 6.0
6. Calcul final complet
Exemple détaillé
// Page d'actualités avec article clickbait
// TE0500 (Clickbait) détecté
rawScore = 4.1           // 2 core + 1 variant + 1 pattern
baseWeight = 1.5         // Poids élevé du clickbait
contextualWeight = 1.4   // Site d'actualités
dynamicWeight = 1.2      // 6 occurrences  
urgencyBoost = 1.3       // Mots d'urgence détectés
// Étapes de calcul :
1. Score avec boost: 4.1 × 1.3 = 5.33
2. Poids total: 1.5 × 1.4 × 1.2 = 2.52  
3. Score pondéré: 5.33 × 2.52 = 13.4
// Résultat : Cette technique contribue 13.4 points au score global
Impact des pondérations
// Comparaison avec/sans pondération
// Sans pondération :
simpleScore = 4.1 points
// Avec pondération complète :
weightedScore = 13.4 points
// Facteur multiplicateur : ×3.27
// → Le système de pondération amplifie significativement 
//   les techniques problématiques dans des contextes suspects
7. Avantages du système
Précision
- Réduction des faux positifs : Techniques marketing normales moins pénalisées
- Amplification des vrais positifs : Manipulation grave détectée avec précision
Contextualisation
- Adaptation intelligente : Même technique jugée différemment selon le contexte
- Réalisme : Prise en compte des usages légitimes
Granularité
- Nuances fines : 16 niveaux de poids différents
- Évolutivité : Facile d'ajuster les seuils selon l'expérience
Transparence
- Traçabilité complète : Chaque coefficient est visible et justifié
- Debug facilité : Possibilité de suivre chaque étape du calcul
L'idée du système de pondération c'est de ne pas avoir un simple compteur de mots-clés mais véritablement un analyseur capable de distinguer manipulation intentionnelle et usage légitime des techniques de persuasion. Si vous avez de meilleiures idées :)
