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

497 строки
15 KiB
Markdown
Исходник Ответственный История

Этот файл содержит неоднозначные символы Юникода

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Méthode d'analyse DIMA - Documentation technique
## **1. Processus d'analyse d'une page web**
### **Phase 1 : Extraction du contenu**
#### **A. Extraction du titre**
```javascript
// 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**
```javascript
// 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"**
```javascript
// É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**
```javascript
// 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**
```javascript
// 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) :
```javascript
// Recherche directe dans le texte
for (keyword in technique.mots_cles) {
if (text.includes(keyword)) {
score += 1;
}
}
```
**Mode amélioré** (système avancé) :
```javascript
// 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**
```javascript
// 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**
```javascript
// 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**
```javascript
// 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**
```javascript
// 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**
```javascript
// 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**
```javascript
// 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
```javascript
// 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**
```javascript
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)**
```javascript
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)**
```javascript
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)**
```javascript
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)**
```javascript
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)**
```javascript
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)**
```javascript
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)**
```javascript
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)**
```javascript
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**
```javascript
// 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**
```javascript
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**
```javascript
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**
```javascript
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é**
```javascript
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**
```javascript
// 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é**
```javascript
// 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**
```javascript
// 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 :)