DIMA/plugin/plugin_chrome/Documentation_technique.md
2025-07-05 19:47:58 +02:00

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 :)