SDS Manager
Documentation
Documentation/Coordination — lecture des clusters

🔗Coordination — lecture des clusters

Lire les groupes de messages quasi identiques repérés par le graphe de coordination : qui a publié le premier, qui a repris, et à quel rythme.

Le principe : le périmètre est une analyse

Cette section est le pendant lecture de « Pipelines → Coordination » et « Analyser → Réseaux de coordination », qui lancent le calcul. Les trois noms se ressemblent : ici, on ne lance rien, on regarde.

Objectif

Comprendre ce que la section affiche, et pourquoi le seul choix de périmètre est une analyse de coordination.

Étapes

  1. Un cluster de coordination est une composante connexe du graphe des documents similaires : un groupe de messages assez proches les uns des autres pour qu'un lien ait été établi entre eux. Son identifiant est un hash, pas un numéro — il n'a pas d'ordre et ne se lit pas.
  2. Le périmètre se choisit par une cascade Client → Projet → Analyse. L'analyse est le run de coordination : c'est elle qui décide du graphe lu, et elle porte ses collectes — ses liens ne relient que des documents issus des collectes qu'elle a traitées. Il n'y a donc rien à sélectionner d'autre.
  3. Elle est obligatoire : rien ne s'affiche tant qu'elle manque. Sans elle, l'API rendrait l'union de tous les runs ayant porté sur les mêmes collectes — une coordination textuelle et une visuelle mélangées, qui rendent alors les mêmes clusters. La désigner sépare les deux et ouvre le filtre par sujet, narratif ou claim.
  4. La liste des analyses proposées est celle des runs qui ont réellement écrit des liens sur le projet, quel que soit leur type déclaré. Une coordination lancée en réutilisant l'analyse d'un topic mining y figure donc, alors que son type dit « clustering ». Un run déclaré mais sans lien reste listé, étiqueté « aucune arête sur ce périmètre » et rangé en fin de liste.
  5. Les runs récents portent leur modalité (`coordination_text`, `coordination_image`, `coordination_video`) ; les plus anciens sont en `coordination` nu — l'écran affiche alors « modalité non déclarée » plutôt que d'en supposer une.
  6. Les collectes de l'analyse sont affichées en lecture sous la cascade. Le bloc « Avancé — restreindre les collectes », replié, permet de n'en lire qu'une partie : c'est utile pour comparer les plateformes d'une même campagne entre elles, et inutile le reste du temps. Changer d'analyse rétablit son périmètre complet.
  7. Tout l'état de l'écran — analyse, filtres, cluster ouvert — vit dans l'URL, et `?coord=<analyse>` suffit : un point d'analyse se partage par simple copie du lien, et le tableau de bord y mène directement depuis sa table d'analyses.

✓ Résultat attendu

Dès l'analyse choisie, ses collectes s'affichent et les indicateurs, graphiques et table se remplissent. Une analyse qui ne déclare aucune collecte — ni dans ses paramètres, ni par ses chunks — est le seul cas où l'écran les redemande : il ouvre alors le bloc « Avancé » et reste vide tant que rien n'est coché, plutôt que de lire un graphe sur les collectes du projet entier, qu'elle n'a peut-être jamais touchées.

Les filtres, et ce qu'ils font vraiment

Objectif

Savoir sur quoi porte chaque filtre — la nuance change l'interprétation.

Étapes

  1. Tous les filtres sélectionnent des clusters entiers, jamais des posts à l'intérieur d'un cluster. Chercher un compte veut dire « les clusters où ce compte a posté », et non « ces clusters réduits à ses posts ». Les métriques affichées (posts, comptes, engagements) restent donc celles de la composante complète.
  2. L'identité d'un cluster — sa date de naissance et son initiateur — ne dépend que de l'analyse et des collectes, jamais des filtres. Vous pouvez déplacer une borne de date sans que le compte à l'origine du cluster ne change de nom : c'est ce qui rend un initiateur citable dans un livrable. Les filtres ne changent que les volumes comptés et la liste des clusters retenus.
  3. Les filtres disponibles

    ChampDescriptionExemple
    PériodeUn seul sélecteur pour les deux bornes, toutes deux incluses. Restreint les **volumes** comptés (posts, comptes, engagements) et sélectionne les clusters actifs sur la période. Ne déplace **ni** la date de naissance d'un cluster **ni** son initiateur.du 01/03 au 31/03
    Clusters (actifs / initiés)Bascule qui n'a de sens qu'avec une période. **Actifs sur la période** (défaut) retient tout cluster ayant au moins un post dans la fenêtre, y compris ceux nés avant elle — ils portent alors la pastille « en cours ». **Initiés sur la période** ne garde que les clusters nés dans la fenêtre : la réponse à « qu'a-t-on lancé cette semaine », au prix des campagnes déjà en propagation, qui disparaissent de l'écran.Initiés sur la période
    ComptesClusters comptant au moins un post de ces comptes — **relayeurs compris**, pas seulement l'initiateur. C'est la lecture utile : un compte cherché est le plus souvent relayeur.opsci, autre_compte
    Mot-cléClusters dont au moins un post contient ce mot. Recherche sur les mots entiers, insensible à la casse, effectuée côté serveur sur tous les posts du cluster — pas seulement sur le post initiateur.vaccin
    Types de postsPar défaut, posts originaux et commentaires. Retweets et citations rediffusent un contenu déjà présent : les inclure gonfle les volumes.originaux + commentaires
    Run de coordinationBorne le graphe lu à un run, et porte le périmètre de collectes. Se choisit dans le bloc Périmètre, pas ici. Sans rapport avec `analyse_id`, qui n'ouvre que la jointure narrative : ce sont deux paramètres distincts, que l'écran envoie tous deux avec la même valeur.#645 image · Coordination visuelle
    Périmètre narratifClusters portant au moins un post rattaché à ces sujets, narratifs ou claims. Alimenté par l'analyse choisie dans le bloc Périmètre : seul ce qui est réellement filtrable est proposé, avec ses volumes.Santé → narratif 12 → claim 480
  4. Il n'y a qu'un seul sélecteur d'analyse à l'écran, et c'est celui du périmètre. La même analyse porte les liens de coordination et les claims rattachés aux posts : sur le chemin « filtrer sur les claims », le pipeline de coordination ne crée pas d'analyse à lui, il délègue au filtrage narratif et écrit ses liens sous l'identifiant de celui-ci. Deux sélecteurs distincts n'auraient pu produire qu'une valeur incohérente, donc un filtre vide.
  5. Une analyse dont le périmètre narratif est vide n'est pas un run narratif : les listes de sujets et de narratifs restent alors vides, et l'écran le dit plutôt que de proposer des cases sans effet.

Lire la table et le panneau d'un cluster

Objectif

Interpréter les colonnes et la bande de propagation sans surinterpréter.

Étapes

  1. La table est triée côté serveur, en cliquant sur l'en-tête d'une colonne. Le tri porte donc sur tout le périmètre, pas sur la page affichée : le « plus gros cluster » en est bien un, pas seulement le plus gros des vingt-cinq lignes visibles. Il est toujours décroissant : l'API n'expose pas de sens de tri, un second clic ne l'inverse donc pas.
  2. La colonne Naissance donne la date du post le plus ancien du cluster, calculée sur toute l'analyse : elle ne bouge pas avec la période. Un cluster né avant la fenêtre porte la pastille « en cours » — il était déjà en propagation quand la période commence —, et la date de son premier post *dans* la période s'affiche en dessous. La carte Clusters ventile de la même façon : « dont initiés dans la période » et « déjà en cours ».
  3. Un clic sur une ligne ouvre le panneau du cluster : son initiateur (l'auteur du post le plus ancien de l'analyse), sa bande de propagation, ses comptes relayeurs et sa chronologie.
  4. Sur la bande de propagation, chaque point est un post, placé entre la première et la dernière publication ; sa taille suit l'engagement et sa couleur identifie le compte. Une salve instantanée — tous les points superposés — est le signal le plus caractéristique d'une publication scriptée ; un étalement régulier ressemble davantage à une reprise organique.
  5. Sur un cluster né avant la période, la bande s'ouvre à sa naissance et la zone antérieure à la fenêtre est hachurée : aucun de ses posts n'y est dans le périmètre. La durée annoncée reste celle de la propagation observée, du premier au dernier post chargé — une salve reste donc signalée comme telle même sur un cluster vieux de plusieurs semaines.
  6. La colonne Abonnés cumulés additionne l'audience des comptes du cluster, doublons compris : c'est une somme d'abonnés, pas une portée — un même abonné suivant plusieurs comptes du cluster y est compté plusieurs fois.
  7. Le score de suspicion combine quatre sous-scores : volume, récurrence des comptes, âge des comptes et concentration temporelle. Un tiret dans cette colonne signifie que le scoring n'a pas tourné, et non que le cluster a été jugé sans risque.

Le réseau de comptes : communautés et rôles

Tout le reste de l'écran décrit des composantes et les classe. Rien n'y dit qui tourne AVEC qui. Or deux comptes qui se retrouvent dans quinze composantes distinctes décrivent une régularité qui n'appartient à aucun des deux pris isolément : c'est une propriété de la paire, et il faut un graphe pour la voir.

Objectif

Passer des clusters — des contenus repris — aux comptes qui les reprennent ensemble, et savoir lequel tient quoi dans la structure.

Étapes

  1. Un lien relie deux comptes qui se sont retrouvés dans une même composante. Son poids compte les composantes *distinctes* qu'ils partagent — pas le nombre de messages échangés. Deux comptes croisés une seule fois dans un cluster très bavard pèsent 1, pas 30 : c'est la récurrence qui fait signal, pas le volume.
  2. Tous les comptes du périmètre ne sont pas dans le graphe, et l'écran dit lequel manque. La carte de volumétrie compte tous les comptes impliqués ; la section réseau ne retient que les comptes appariés, c'est-à-dire ceux qui partagent au moins une composante avec quelqu'un d'autre. Un compte qui republie son propre contenu forme une composante à un seul auteur : aucune paire, donc aucun nœud. La ligne sous les cartes fait la soustraction — « 600 comptes appariés sur 818 » — pour que l'écart ne se lise jamais comme une perte.
  3. Le premier geste utile est de monter le curseur « Poids min. » à 2. À 1, une seule rencontre suffit à créer un lien et le graphe est saturé de coïncidences. À 2, il ne reste que les paires qui se sont retrouvées dans deux composantes différentes. Le recalcul est immédiat et ne déclenche aucune requête : le graphe entier du périmètre est déjà chargé, seul son mode de lecture change.
  4. Les six rôles de la cartographie

    ChampDescriptionExemple
    Noyau de communautéTrès lié chez lui, et presque uniquement chez lui. Il pilonne avec les siens.haut-gauche du nuage
    Pivot inter-communautésTrès lié chez lui ET tourné vers d'autres groupes. Il orchestre plusieurs cercles.haut-droite
    PasseurPeu de liens, mais répartis entre plusieurs groupes. **C'est le profil que cherche une analyse de coordination**, et le seul qu'aucun classement par volume ne peut montrer : il est dernier de tous les tops, et pourtant son retrait couperait le réseau en deux.bas-droite
    Participant périphériqueSuit les vagues de son groupe, avec quelques incursions ailleurs.bas-centre
    SatelliteTout son degré tient dans une seule communauté, sans y peser.bas-gauche
    IsoléAucun lien au seuil courant. Il reste au périmètre et dans les tops, mais la cartographie ne le place pas : il n'a aucune structure à décrire.hors nuage
  5. Lire le nuage en deux gestes. *Haut/bas* dit le poids du compte dans son propre groupe (un écart-type, donc relatif à la taille du groupe). *Gauche/droite* dit s'il parle ailleurs. Les zones sont dessinées en fond : un point se nomme sans consulter de légende.
  6. Une communauté est le candidat « dispositif ». La table sous le nuage donne de quoi en juger : une densité élevée, une part de relais forte et une fenêtre d'activité courte dessinent un dispositif ; les mêmes comptes étalés sur six mois n'en font pas un. Le bouton Filtrer pose les comptes du groupe dans le filtre « Comptes » : clusters, tops, courbe et volumétrie se recalculent alors sur cette seule communauté. Cliquer un point du nuage fait la même chose pour un compte.
  7. ⚠️ Les numéros de communauté ne sont pas stables. Louvain les réattribue à chaque calcul : changer le seuil de poids ou la finesse les redistribue. Ils servent de pastille de couleur, jamais d'identifiant à noter ou à citer.
  8. La modularité dit si le découpage veut dire quelque chose. Au-dessus de 0,3, la structure en groupes est nette. En dessous, le graphe est trop homogène pour qu'on parle de communautés — et les colorer n'y changerait rien.

Erreurs fréquentes

ErreurCause probableSolution
« N composantes trop larges pour être appariées »Une composante où des centaines de comptes se croisent tous coûte le carré de sa taille à apparier, et n'apprend rien : tous ses membres y ont le même degré, elle n'a ni communauté ni pont. Elle est donc écartée du graphe — et comptée, plutôt que retirée en silence.Rien à corriger : ces comptes restent dans les clusters, les tops et la volumétrie. Pour les examiner, ouvrir la composante concernée depuis la table des clusters.
« Le graphe a été plafonné »Le périmètre produit plus de liens que l'API n'en rend en un appel. Les liens affichés sont les plus lourds, donc les plus significatifs, mais le graphe est incomplet.Resserrer la période, ou monter le seuil de poids : les deux réduisent le nombre de liens sans écarter le signal.
La section réseau annonce moins de comptes que la carte de volumétrieCe ne sont pas les mêmes comptes. La carte compte tous ceux du périmètre ; le graphe ne retient que ceux qui partagent une composante avec un autre compte. Un compte seul dans toutes ses composantes — il republie son propre contenu — n'a aucune paire à donner à un graphe.Rien à corriger : la ligne sous les cartes donne les deux chiffres et leur écart. Ces comptes restent dans la volumétrie, les clusters et les tops, où ils se lisent normalement.
Beaucoup de comptes « sans lien à ce seuil »Le curseur de poids vient de les détacher : ils n'ont partagé qu'une seule composante avec chacun de leurs voisins.C'est le comportement attendu, et souvent le résultat recherché — ce qui reste après la coupe est ce qui se répète. Redescendre le curseur les rattache.

Ce que l'écran ne dit pas

Objectif

Connaître les chiffres volontairement absents, et pourquoi.

Étapes

  1. Il n'y a pas d'indicateur « comptes impliqués ». Additionner les comptes de plusieurs clusters double-compte tout compte présent dans plusieurs d'entre eux — c'est-à-dire exactement le profil qu'on cherche. L'écran affiche donc le plus gros cluster : un chiffre plus modeste, mais juste.
  2. La part du corpus est marquée « ≈ » : son dénominateur vient d'un autre endpoint, dont la façon de compter les types de posts peut ne pas recouvrir exactement celle du graphe de coordination.
  3. Les graphiques et les indicateurs sont calculés sur un échantillon des clusters les plus importants, pas sur tout le périmètre. Leur sous-titre annonce la couverture chaque fois qu'elle n'est pas complète. Deux exceptions, qui le disent aussi : l'onglet Participants du graphique des comptes et les tables de Tops sont comptés en base sur tout le périmètre.
  4. Le nombre total de clusters n'est pas calculé d'emblée : le comptage rejoue tout le graphe du périmètre et dépasserait le délai de la passerelle sur les gros corpus. Il reste accessible par « Compter le total ».
  5. La chronologie d'un cluster est plafonnée : au-delà de 500 posts, seuls les plus récents sont chargés, et le panneau le signale plutôt que de présenter une propagation partielle comme complète.
  6. Une métrique à zéro peut être une métrique non collectée. L'écran additionne ce que la collecte a stocké, et certaines sources ne fournissent qu'une partie des compteurs : l'export Visibrain X ne donne que les retweets — réactions, commentaires et vues y valent zéro sur tout le corpus, et les partages y égalent les engagements —, et ni LinkedIn ni Bluesky ne fournissent de vues. Avant d'y lire un signal, comparer aux totaux du corpus : un zéro qui s'y retrouve vient de la source, pas du périmètre coordonné.

Erreurs fréquentes

ErreurCause probableSolution
« Aucune coordination n'a été calculée sur ces importations »Le calcul n'a jamais tourné sur ce périmètre. Ce n'est pas un résultat vide : l'API répond 409 précisément pour distinguer les deux cas, car « rien trouvé » et « jamais calculé » se lisent en sens contraire.Lancer une analyse depuis « Pipelines → Coordination » sur ces collectes, puis revenir sur cet écran.
Aucun cluster alors que la coordination a bien tournéLes filtres ont tout exclu : une période trop étroite, un compte ou un mot-clé absent du corpus, ou un périmètre narratif sans recoupement avec les collectes choisies.Utiliser « Réinitialiser » — qui conserve l'analyse et son périmètre — puis resserrer les filtres un à un.
Aucun cluster avec l'analyse sélectionnéeCette analyse précise n'a rien produit sur ce périmètre. Le 409 « jamais calculé » ne couvre pas ce cas : la sonde côté API porte sur les collectes et non sur un run.Essayer une autre analyse du projet : si des clusters apparaissent, ils viennent d'un run différent, typiquement l'autre modalité. La mention « aucune arête sur ce périmètre » sous le nom d'une analyse annonce le cas par avance.
Le périmètre narratif ne filtre rienAucune analyse porteuse des claims n'a été sélectionnée. L'API refuse un filtre narratif sans elle, et l'écran l'indique en orange sous les listes.Vérifier que l'analyse choisie est bien un run sur corpus narratif — l'écran l'étiquette « corpus narratif ». Un run de coordination ordinaire ne rattache aucun post à un claim, donc les listes restent vides et le filtre ne retient rien.