Pipeline de décision
Toutes les 10 minutes nous lançons un cycle qui parcourt 4 étapes. Seuls les éléments qui passent toutes sont enregistrés comme incidents.
- Collecter. Nous interrogeons en parallèle les flux RSS + Telegram + Reddit + ADL + Bellingcat. ~240 flux RSS + ~80 subreddits + ~46 chaînes Telegram + ADL + Bellingcat + scrapers full-text de 8 pays LATAM. 800–1500 éléments par cycle, 31 langues couvertes.
- Filtre anti-bruit. Nous écartons les artefacts de Google Translate ("please select two distinct languages", etc.), widgets, navigation de site et textes trop courts.
- Correspondance par mot-clé. L'élément doit mentionner au moins un mot de notre lexique (voir ci-dessous). C'est le filtre qui colore les éléments en rouge dans le flux LIVE.
- Classer. Les éléments qui correspondent passent à un classificateur automatisé qui extrait pays + type + gravité + traductions ES/EN, avec redondance interne et un système local de secours basé sur des règles pour assurer la continuité.
Lexique — 31 langues
La correspondance par mot-clé est le filtre le plus visible. Un élément entre dans le flux antisémitisme uniquement s'il contient au moins une de ces racines (insensible à la casse, sous-chaîne). Nous couvrons :
| Langue | Exemples de mots-clés |
|---|---|
| 🇸🇦 العربية (Arabe) | معاد للسامية, يهود, المحرقة, نازي |
| 🇧🇬 Български (Bulgare) | антисемит, синагога, евреи, еврейск, холокост, нацист, свастика |
| 🇨🇿 Čeština (Tchèque) | antisemit, antisemitismus, synagoga, žid, žido, holokaust, šoa, nacista, hákový kříž |
| 🇩🇰 Dansk (Danois) | antisemit, synagoge, jøde, jøder, jødisk, holocaust, shoah, nazist, hagekors |
| 🇩🇪 Deutsch (Allemand) | antisemit, synagoge, jüdisch, juden, holocaust, shoah, hakenkreuz, holocaustleugnung |
| 🇬🇷 Ελληνικά (Grec) | αντισημιτ, συναγωγή, εβραί, εβραϊκ, ιουδα, ολοκαύτωμα, σοά, ναζί, σβάστικα, κιπά |
| 🇬🇧 English (Anglais) | antisemit, synagogue, jewish, holocaust, shoah, nazi, swastika, yarmulke, kippah, tefillin |
| 🇪🇸 Español (Espagnol) | antisemit, antisemita, sinagoga, judío, holocausto, shoah, nazi, neonazi, esvástica, kipá, daia, amia |
| 🇪🇪 Eesti (Estonien) | antisemit, sünagoog, juut, juudi, holokaust, natsi, haakrist |
| 🇫🇷 Français | antisémit, synagogue, juif, juive, holocauste, shoah, svastika, croix gammée, kippa, crif |
| 🇮🇱 עברית (Hébreu) | אנטישמי, יהוד, בית כנסת, שואה, נאצי, כיפה |
| 🇭🇷 Hrvatski (Croate) | antisemit, sinagoga, židov, židovsk, holokaust, nacist, kukasti križ |
| 🇮🇸 Íslenska (Islandais) | andgyðing, gyðingahat, samkunduhús, gyðing, helför, nasist, hakakross |
| 🇮🇹 Italiano (Italien) | antisemit, sinagoga, ebreo, ebrei, olocausto, shoah, svastica, croce uncinata |
| 🇱🇻 Latviešu (Letton) | antisemīt, sinagoga, ebrej, holokaust, nacist, kāškrust |
| 🇲🇰 Македонски (Macédonien) | антисемит, синагога, евреин, еврејск, холокауст, нацист, свастика |
| 🇭🇺 Magyar (Hongrois) | antiszemit, zsinagóga, zsidó, holokauszt, náci, horogkereszt |
| 🇳🇱 Nederlands (Néerlandais) | antisemit, synagoge, joods, jodendom, holocaust, hakenkruis, keppeltje |
| 🇳🇴 Norsk (Norvégien) | antisemitt, synagoge, jøde, jøder, jødisk, holocaust, nazist, hakekors |
| 🇵🇱 Polski (Polonais) | antysemit, synagoga, żyd, żydow, żydowsk, holokaust, swastyka, jarmułka |
| 🇵🇹 Português (Portugais) | antissemit, sinagoga, judeu, holocausto, suástica, quipá |
| 🇷🇴 Română (Roumain) | antisemit, sinagog, evreu, evrei, evreic, holocaust, nazist, svastică |
| 🇷🇺 Русский (Russe) | антисемит, синагог, еврей, иудей, холокост, нацис, свастик |
| 🇷🇸 Српски / Srpski (Serbe) | антисемит, синагога, јеврејин, холокауст / antisemit, jevrej, holokaust, nacist |
| 🇸🇰 Slovenčina (Slovaque) | antisemit, synagóga, žid, žido, holokaust, šoa, nacista, hákový kríž |
| 🇸🇮 Slovenščina (Slovène) | antisemit, antisemitizem, sinagoga, žid, judov, holokavst, šoa, nacist, kljukasti križ |
| 🇦🇱 Shqip (Albanais) | antisemit, antisemitizm, sinagogë, hebre, hebrenj, hebraik, holokaust, nazist, svastikë |
| 🇫🇮 Suomi (Finnois) | antisemitismi, synagoga, juutalais, holokaust, natsi, uusnatsi, hakaristi |
| 🇸🇪 Svenska (Suédois) | antisemit, synagoga, jude, judar, judisk, förintelsen, shoah, nazist, nynazist, hakkors, kippa |
| 🇹🇷 Türkçe (Turc) | antisemit, antisemitik, sinagog, yahudi, yahudiler, holokost, şoa, nazi, gamalı haç |
| 🇺🇦 Українська (Ukrainien) | антисеміт, синагог, єврей, голокост, нацис, свастик |
Si vous repérez un faux positif ou un mot-clé manquant, contactez-nous.
Ce qui n'est PAS antisémitisme (selon le pipeline)
Un élément avec une correspondance par mot-clé n'est pas automatiquement un incident. Pour être enregistré comme incident, il doit aussi remplir trois conditions :
- Décrire quelque chose de concret. Le classificateur rejette les modèles génériques tels que "discours de haine antisémite sur les réseaux sociaux", "vandalisme antisémite", "menace contre la communauté juive" — formulations vides. Il doit y avoir lieu + acteur + action.
- Description d'au moins 25 caractères. En dessous, nous écartons étiquettes, métadonnées, fragments.
- La description doit mentionner à nouveau un mot-clé. Si le modèle paraphrase et perd l'angle antisémitisme, nous l'écartons — cela signifie que la classification a dérivé hors-sujet.
De plus, le Moniteur ne classe PAS comme antisémitisme :
- La critique de la politique de l'État d'Israël en soi (à distinguer des attaques contre des Juifs ou des institutions juives — ligne IHRA).
- Les nouvelles où "Israël" apparaît comme sujet collatéral, sans contexte d'agression, législation, discours ou attaque contre des Juifs.
- Les déclarations de l'État d'Israël lui-même (les règles de classification les écartent comme n'étant pas des incidents).
- Le contenu satirique, artistique ou éditorial qui ne décrit pas un fait concret.
Classification automatisée
Les éléments qui passent la correspondance par mot-clé sont envoyés à un classificateur qui extrait les champs suivants selon un schéma strict :
country → code ISO-3166 alpha-2
type → attack | vandalism | hate_speech | legislation | boycott |
denial | threat
severity → low | medium | high | critical
description_es / description_en → traductions mutuelles du MÊME
fait concret, avec lieu + acteur + action
original_language → langue source
Les instructions identifient les incidents concrets — attaques contre synagogues / cimetières juifs, agressions physiques, vandalisme nazi, discours de haine de figures publiques, législation discriminatoire, boycotts, négationnisme de la Shoah, menaces — et rejettent les mentions culturelles (cinéma, littérature, anniversaires) et la solidarité interreligieuse positive.
Tolérance aux pannes
Pour ne pas perdre d'incidents si un composant du classificateur est limité (rate-limit) ou temporairement indisponible, le système fonctionne avec redondance interne :
- Modèle primaire. Traite les éléments par lots ; en cas de rejet pour limitation de débit, attente puis nouvelle tentative avec un modèle secondaire.
- Bascule vers des modèles alternatifs. Si le primaire reste indisponible ou si la charge utile ne passe pas, des modèles alternatifs sont invoqués. Tous conservent le même schéma de sortie.
- Heuristique locale. Si tous les modèles automatisés sont indisponibles, un classificateur local basé sur des regex multilingues infère le type (attaque, vandalisme, menace, etc.) et la gravité à partir du texte, et détecte le pays via un catalogue d'alias. Quand le pays ne peut pas être inféré, l'incident est marqué comme global. Il ne traduit pas — il utilise le texte source comme description, et les éléments peuvent être reclassés une fois qu'un modèle revient.
Corroboration multi-sources
Quand le même fait apparaît dans plus d'un média indépendant, nous le marquons comme vérifié. Sur le tableau de bord c'est le filtre "vérifiés uniquement" ; dans le flux RSS, seuls les éléments vérifiés sont inclus par défaut.
Le calcul est simple :
- Chaque incident a un champ
source_countavec le nombre de médias qui l'ont rapporté. Il s'incrémente chaque fois que le dédoublonnage rassemble un autre élément avec le même hash. source_count >= 2⇒ vérifié (✓).credibility_scoreest un poids supplémentaire qui combine quantité de sources et qualité (un rapport de l'ADL ou de Bellingcat pèse plus qu'une chaîne Telegram quelconque).
Vérifié ne signifie PAS "vérifié par nous" — cela signifie que l'événement a été rapporté par au moins deux médias distincts que nous surveillons. Pour un usage académique ou juridique, le même avertissement s'applique : croisez avec les sources primaires.
Comment l'indice continental est calculé
Le bloc Antisémitisme par continent · 30 jours au-dessus du flux est un indice bidimensionnel : chaque cellule affiche deux scores indépendants — menace (négatif) et espoir (positif) — pour qu'un lecteur saisisse d'un coup d'œil l'ampleur de l'activité antisémite ET la robustesse de la réponse institutionnelle/communautaire.
Les deux scores sont absolus : chaque continent a ses propres chiffres qui montent et descendent indépendamment des autres. Auparavant nous utilisions un indice relatif unique (normalisé au max sur 0-100), mais cela bloquait toujours le continent le plus actif à 100 et donnait une fausse impression de "plafond permanent". Maintenant chaque dimension vit dans des bandes catégorielles fixes.
Les deux dimensions
| Dimension | Mesure | Polarité | Éléments d'exemple |
|---|---|---|---|
| Menace | Activité antisémite récente | negative | attaque, vandalisme, discours de haine, législation discriminatoire, boycott, négationnisme, menace |
| Espoir | Réponse institutionnelle ou communautaire | positive | condamnation judiciaire, loi protectrice, veillée/marche de soutien, programme éducatif institutionnel |
Les dimensions sont orthogonales : une région peut avoir une menace élevée ET un espoir élevé (beaucoup se passe, beaucoup est en réponse), ou une menace élevée et un espoir faible (beaucoup se passe, faible réponse institutionnelle), etc. Elles ne sont PAS soustraites ni moyennées — elles sont affichées en parallèle.
Formule (identique pour les deux dimensions)
score(continent) = Σ [ severity_weight(item) × freshness(item) ]
où
severity_weight = { low: 1, medium: 2, high: 4, critical: 8 }
freshness(item) = max(0, 1 - days_old / 30) // décroissance linéaire
(arrondi à 1 décimale)
Pour les éléments positifs (espoir), la gravité est interprétée comme portée : low=local, medium=régional, high=national, critical=international. Une décision de cour suprême pèse plus qu'une veillée de quartier — mais les deux contribuent à la dimension espoir.
Bandes (seuils fixes, identiques pour les deux dimensions)
| Bande | Score (brut) | Lecture menace | Lecture espoir |
|---|---|---|---|
| Calme | 0 – 5 | aucune activité antisémite détectée | aucune réponse détectée pour l'instant |
| Faible | 5 – 30 | 1-5 incidents de gravité faible ou 1-2 moyens | réponse initiale |
| Modéré | 30 – 100 | volume soutenu de niveau intermédiaire | réponse modérée |
| Élevé | 100 – 500 | nombreux incidents graves ou très récents | réponse robuste |
| Critique | 500+ | cluster continental d'incidents graves avec couverture soutenue | réponse soutenue |
Important : dans la dimension espoir, la bande "Calme" n'est pas une bonne nouvelle — elle signifie qu'AUCUNE réponse institutionnelle n'a été détectée, soit parce que la région n'en a publié aucune, soit parce qu'il n'y en a pas eu. Nous l'étiquetons "sans réponses" dans l'interface pour éviter la confusion.
Exemple
Si MENA reçoit 10 incidents élevés dans la dernière semaine, la contribution est 10 × 4 × ~0,8 = 32 → bande Modéré. Si LATAM a 2 incidents faibles il y a 25 jours, la contribution est 2 × 1 × ~0,16 = 0,32 → bande Calme. Si l'Europe cumule ~200 incidents mixtes (élevés + moyens) récents, dépasse 500 → bande Critique. Les trois chiffres vivent indépendamment ; LATAM ne paraît pas "plus bas" à cause de MENA ou de l'Europe.
La barre visuelle du tableau de bord plafonne à 500 (un score de 500 remplit la barre). Au-dessus de 500, la barre reste pleine mais le chiffre absolu continue de croître dans l'étiquette. Cela évite qu'un continent extrême écrase visuellement les autres.
Regroupement par continent
Code ISO-3166 alpha-2 entre parenthèses. Continents et pays par ordre alphabétique.
- Asie (22) : Afghanistan (AF), Bangladesh (BD), Cambodge (KH), Chine (CN), Hong Kong (HK), Inde (IN), Indonésie (ID), Japon (JP), Kazakhstan (KZ), Malaisie (MY), Mongolie (MN), Myanmar (MM), Népal (NP), Pakistan (PK), Philippines (PH), Singapour (SG), Corée du Sud (KR), Sri Lanka (LK), Taïwan (TW), Thaïlande (TH), Ouzbékistan (UZ), Vietnam (VN).
- Europe (41) : Albanie (AL), Autriche (AT), Biélorussie (BY), Belgique (BE), Bosnie (BA), Bulgarie (BG), Croatie (HR), Chypre (CY), République tchèque (CZ), Danemark (DK), Estonie (EE), Finlande (FI), France (FR), Allemagne (DE), Grèce (GR), Hongrie (HU), Islande (IS), Irlande (IE), Italie (IT), Kosovo (XK), Lettonie (LV), Lituanie (LT), Luxembourg (LU), Malte (MT), Moldavie (MD), Monténégro (ME), Pays-Bas (NL), Macédoine du Nord (MK), Norvège (NO), Pologne (PL), Portugal (PT), Roumanie (RO), Russie (RU), Serbie (RS), Slovaquie (SK), Slovénie (SI), Espagne (ES), Suède (SE), Suisse (CH), Ukraine (UA), Royaume-Uni (UK).
- LATAM (20) : Argentine (AR), Bolivie (BO), Brésil (BR), Chili (CL), Colombie (CO), Costa Rica (CR), Cuba (CU), Rép. dominicaine (DO), Équateur (EC), El Salvador (SV), Guatemala (GT), Haïti (HT), Honduras (HN), Mexique (MX), Nicaragua (NI), Panama (PA), Paraguay (PY), Pérou (PE), Uruguay (UY), Venezuela (VE).
- MENA (21) : Algérie (DZ), Bahreïn (BH), Égypte (EG), Iran (IR), Irak (IQ), Israël (IL), Jordanie (JO), Koweït (KW), Liban (LB), Libye (LY), Maroc (MA), Oman (OM), Palestine (PS), Qatar (QA), Arabie saoudite (SA), Soudan (SD), Syrie (SY), Tunisie (TN), Turquie (TR), Émirats arabes unis (AE), Yémen (YE).
- Amérique du Nord (2) : Canada (CA), États-Unis (US).
- Océanie (2) : Australie (AU), Nouvelle-Zélande (NZ).
- Afrique subsaharienne (16) : Angola (AO), Cameroun (CM), RDC (CD), Éthiopie (ET), Ghana (GH), Côte d'Ivoire (CI), Kenya (KE), Mozambique (MZ), Namibie — couverture via flux régionaux, Nigeria (NG), Rwanda (RW), Sénégal (SN), Afrique du Sud (ZA), Tanzanie (TZ), Ouganda (UG), Zambie (ZM), Zimbabwe (ZW).
Les incidents sans pays détectable apparaissent dans le flux marqués comme globaux, mais n'entrent pas dans l'indice continental — ils n'ont pas de continent auquel s'ajouter.
Ce que l'indice n'est PAS
- Ce n'est PAS un classement absolu de "où plus de Juifs sont en danger". Un continent avec moins de couverture médiatique aura un score bas même si la réalité est pire.
- Il ne mesure PAS la perception ni l'opinion publique. Seulement les incidents classés par le pipeline — voir section ci-dessus.
- Il n'additionne PAS les années : la fenêtre de 30 jours plafonne l'horizon, et la décroissance fait qu'un incident d'il y a 29 jours compte à peine. Pour l'analyse historique, utilisez
/api/incidents?since=…directement. - Il n'est PAS par habitant. ADL/CST publient des statistiques normalisées par population juive ; nous ne le faisons pas, car les estimations de population varient. Ce score est un volume pondéré pur.
Sources surveillées
Chaque incident enregistré a un champ source_url cliquable. Sources, par ordre alphabétique :
- ADL — flux direct de l'Anti-Defamation League.
- Bellingcat — investigations OSINT sur l'extrémisme.
- Flux RSS d'agences de presse — ~240 médias en 31 langues. Régions et médias par ordre alphabétique :
- Afrique : allAfrica (général + Éthiopie + Ghana + Kenya + Nigeria), BBC Africa, BBC Afrique (francophone), Borkena (Éthiopie), Daily Maverick, eNCA (SA), Mail & Guardian, News24 (SA — Top + Local), Premium Times (Nigeria), Reporter Ethiopia, South African Jewish Report, Standard Media (KE), The Citizen (SA), The Namibian, This Day (NG).
- Asie-Pacifique : ABC Australia, Asia Sentinel, Australian Jewish News, Bangkok Post, Channel News Asia, China Daily, Dawn (Pakistan), Express Tribune (Pakistan), Geo News, Global Times, Hindustan Times, HKFP (Hong Kong Free Press), India Today, Japan Times, Korea Herald, Korea Times, Malay Mail, Mint, NDTV, Nikkei Asia, RNZ, SBS, SCMP, Scroll.in, SMH, Straits Times, The Conversation AU, The Daily Star (Bangladesh), The Hindu, Times of India, TOI World, Xinhua, Yonhap.
- Balkans : Balkan Insight, Danas (RS), Delo (SI), ERT News, Greek Reporter, Index.hr, Koha (Kosovo), N1 Serbia, Naftemporiki, Neos Kosmos (diaspora), Politika (RS), RTV Slovenia, Telegrafi, To Vima, tportal (HR), Vijesti (ME).
- Pays baltes : 15min Lithuania, Baltic Times, ERR Estonia, LSM Latvia (EN+LV), Postimees (ET).
- Europe : 7sur7 (BE), ABC Spain, ANSA, BBC World, Corriere, Corriere Esteri, Der Standard (AT), DW, Economist, El Mundo, Euronews (EN+ES), France Info, FT, Gazeta Wyborcza, Guardian, Le Monde, Le Temps (CH), Libération, NOS (NL), Notes from Poland, OKO.press, Politico EU, Repubblica, Spiegel, SRF (CH), Tagesschau, The Independent, TVN24, VRT (BE), Zeit.
- Europe de l'Est / CEE : České noviny, Deník N (CS), Denník N (SK), Digi24 (RO), HotNews, Hungary Today, iDNES, Republika (MK), Seznam Zprávy, Sofia Globe (BG), Telex (HU), Ziarul de Gardă (MD).
- Russie / ex-URSS : Astana Times (KZ), Civil.ge (Géorgie), JAMnews (Caucase), Meduza (RU exil), Moscow Times, NV Ukraine (EN), Ukrainska Pravda, RBC (RU), TASS (EN+RU).
- Presse juive / observatoires de l'antisémitisme : ADL, ADL Antisemitism Uncovered, AJC, Algemeiner, Amadeu Antonio Stiftung (DE), Arutz Sheva, Campaign Against Antisemitism (UK), Combat Antisemitism Movement, Forward, Haaretz (HE+EN), Hope Not Hate (UK), i24News, Israel Hayom, JCPA, Jerusalem Post, Jewish Chronicle UK, Jewish Insider, Jewish Journal, Jewish News UK, Jewish Press, Jewish Standard NJ, JNS, JTA, Moment, NGO Monitor, Times of Israel, YNet.
- LATAM : 14ymedio, Agência Brasil, AMIA (AR), Aristegui, Ámbito, BBC Brasil, BBC Mundo, Chequeado, CIPER (Chili), Clarín, Confidencial (Nicaragua), Cronista, El Comercio PE, El Deber BO, El Mundo SV, El País (Espagne), El País UY, El Tiempo CO, Emol, Enlace Judío MX, Estadão, Expansión MX, Folha, France 24 (ES), G1 Globo, InSight Crime, Infobae, JOTA, La Jornada, La Nación AR, La Prensa PA, La Tercera, Los Tiempos, Página Siete, Perfil, Prensa Libre GT, RPP Pérou, Río Negro, TN Argentina, Tiempo Argentino, UOL, Veja.
- MENA : Al Jazeera (EN+AR), Al-Monitor, Anadolu Agency (Turquie), Arab News, Asharq Al-Awsat, Daily Sabah, Egypt Independent, Egyptian Streets, Fanack, Hürriyet, Hürriyet Daily News, Mehr News, Middle East Eye, Middle East Monitor, Morocco World News, Tehran Times, The National UAE.
- Pays nordiques : Aftonbladet, Dagens Nyheter, DR (DK), Helsingin Sanomat, NRK (NO), RÚV (IS), SVT, Yle Finland (EN).
- Amérique du Nord : ABC News, B'nai Brith Canada, Canadian Jewish News (CJN), CBC, Fox News, Globe and Mail, National Post, Newsweek, NYT, WSJ.
Le catalogue de sources est mis à jour périodiquement. Les nouvelles sources entrent automatiquement dans le cycle de scan.
- API news (LATAM full-text) — Consomme
noticias.kavnes.com/search, une API maison qui sert le full-text scrapé de médias mainstream dans 8 pays LATAM (Argentine, Uruguay, Chili, Pérou, Paraguay, Bolivie, Colombie, Mexique). Apporte une profondeur supérieure aux RSS top-15 — récupère les articles complets de Clarín, La Nación, Infobae, El Día, T13, Cooperativa, Diario Popular, etc. - Reddit — ~80 subreddits. Dédiés : r/antisemitism, r/Holocaust, r/HolocaustHistory, r/IsraelPalestine, r/Israel, r/Jews, r/JewsOfConscience, r/Judaism, r/jewishevents. Agrégateurs : r/africa, r/asia, r/EuropeanPolitics, r/europe, r/geopolitics, r/MiddleEastNews, r/news, r/politics, r/worldnews, r/worldpolitics. Pays/région : r/argentina, r/australia, r/austria, r/bangladesh, r/bosnia, r/brasil, r/bulgaria, r/Chile, r/china, r/colombia, r/croatia, r/czech, r/denmark, r/deutschland, r/egypt, r/Estonia, r/Ethiopia, r/Finland, r/france, r/germany, r/greece, r/hungary, r/iceland, r/india, r/indonesia, r/iran, r/ireland, r/italy, r/japan, r/Kenya, r/korea, r/latinamerica, r/latvia, r/lebanon, r/lithuania, r/malaysia, r/mexico, r/Netherlands, r/newzealand, r/Nigeria, r/norway, r/pakistan, r/palestine, r/peru, r/philippines, r/poland, r/polska, r/Romania, r/russia, r/serbia, r/slovakia, r/slovenia, r/southafrica, r/spain, r/sweden, r/syria, r/turkey, r/ukpolitics, r/ukraine, r/unitedkingdom, r/uruguay, r/venezuela.
- Telegram — ~46 chaînes publiques avec aperçu
/s/. Médias : @algemeiner, @alertacolombia, @alertamundialnews, @animalpolitico, @cibercuba, @ClarinCom, @cnnbrasil, @crhoy, @cronicauno, @cubanosporelmundo, @diariolibre, @elcomercioperu, @eldestapeweb, @elheraldohn, @estadao, @fastcheckcl, @folha, @g1noticias, @infobae, @jerusalem_post, @kann_news, @kyivindependent, @kyivpost_official, @laprensani, @lemonde_fr, @lenouvelliste, @meduzalive, @nexta_tv, @NHK_WORLD, @pagina12, @primiciasec, @rainews, @revistaistoe, @scmp_news, @sinembargomx, @spiegel_online, @tehran_times, @Times_of_Israel, @walla_il, @welt_de. Observatoires antisémitisme : @adlofficial, @jtanews, @stopantisemitism, @worldjewishcongress. OSINT : @bellingcat, @OSINTdefender.
Dédoublonnage et persistance
Le dédoublonnage fonctionne en deux couches pour rassembler la même nouvelle rapportée par plusieurs médias en une seule ligne (avec son source_count incrémenté — voir corroboration) :
- Hash exact : chaque incident reçoit un
sha1(country|type|description_prefix_120). Si deux classifications produisent des hashes identiques, elles fusionnent automatiquement. - Deuxième passe approximative : quand le hash rate, nous comparons la description aux 50 derniers incidents du même pays et type des dernières 48h. Nous utilisons la distance de Levenshtein normalisée (
edit_distance / max_length, sur texte en minuscules + sans diacritiques + sans articles). Une similarité ≥ 75% (ratio ≤ 0,25) ou un chevauchement de tokens ≥ 40% (Jaccard) déclenchent une fusion. Cela capture les cas où deux médias formulent le même événement légèrement différemment ou avec un vocabulaire distinct.
Pour les textes courts (< 30 caractères normalisés), le seuil de Levenshtein se resserre, car chaque mot pèse beaucoup plus — "Synagogue attaquée à Berlin" vs "...à Londres" a une similarité apparente élevée mais ce sont des événements distincts. Le plafond de 48h évite que deux événements similaires mais séparés dans le temps soient fusionnés à tort.
Le stockage est en append-only avec sauvegardes automatiques quotidiennes — nous ne supprimons pas l'historique. Les incidents ne font que croître en source_count et credibility_score à mesure que les corroborations arrivent.
Couverture historique
Notre suivi en direct a démarré le 23 avril 2026 : à partir de cette date, le pipeline ingère les incidents au fur et à mesure de leur publication. Tous les graphiques de /explorer marquent cette césure par une ligne verticale en pointillés.
La série antérieure au 23.4.2026 est une remontée historique : nous sommes remontés dans le temps en appliquant le même catalogue complet de sources que nous surveillons aujourd'hui à toute la fenêtre historique indiquée. Il ne s'agit pas d'années couvertes par plus de sources que d'autres — le catalogue est cohérent sur toute la fenêtre rétroactive, donc les écarts de volume entre années reflètent la couverture médiatique réelle (et l'accessibilité des archives), pas un changement de méthode.
Comment accéder aux données
Sept manières de consommer le Moniteur selon votre cas d'usage :
- Tableau de bord web — antisemitismo.kavnes.com. Visualisation en direct avec indice continental, flux LIVE, filtres et chronologie. Pour navigation générale.
- Archives navigables — /archives. Recherche plein texte (FTS5) sur l'historique complet, filtres par pays / type / gravité / plage de dates / vérifié, et export CSV des résultats. Pour recherche historique ou citations spécifiques. Pour téléchargements en masse ou dataset historique complet : nous contacter d'abord (micaela@kavnes.com).
- Récap email hebdomadaire — Abonnement gratuit avec double opt-in (depuis la page d'accueil). Arrive le vendredi 9h ART avec un bref récit éditorial, les meilleurs incidents de la semaine classés par crédibilité et l'indice continental mis à jour. Sans spam, désabonnement en un clic.
- Flux RSS — /rss (instructions d'abonnement) ou /incidents.rss (XML brut pour lecteurs). Par défaut inclut uniquement les incidents vérifiés (≥2 sources), dimension menace. Accepte des filtres en query-string :
?country=AR,?type=attack,?severity=high,?lang=fr,?verified=0pour tous,?polarity=positivepour un flux de réponses & initiatives,?polarity=allpour mixte. - Widget intégrable — /embed. Iframe prête-à-coller affichant l'indice continental en direct. Conçu pour journalistes / ONG / blogs voulant citer l'indice avec attribution. S'actualise toutes les minutes, sans cookies, CSP
frame-ancestors *. Le widget doit garder l'attribution au Moniteur visible — pas de white-label. - API JSON — pour usage programmatique :
/api/incidents,/api/index/continent,/api/countries,/api/search,/api/stream. Documentation complète des endpoints avec paramètres, exemples curl et formes de réponse. Par défaut : 60 req/min, 2000 req/jour par IP, 10 req/min sur search/CSV. Pour usage programmatique soutenu (recherche, ONG, intégrations rédactionnelles) écrire à micaela@kavnes.com et nous émettons une clé API (en-têtex-api-key) sans plafond. C'est gratuit — nous voulons juste savoir ce qui se construit. - Historique par source — endpoint API
/api/sources: stats agrégées par média (incidents apportés, taux de corroboration, pays couverts). N'inclut que les médias ayant déjà produit un incident ; le catalogue complet de ~370 sources surveillées est documenté dans la section Sources surveillées ci-dessous.
Les données que nous générons (classification, traductions, scores) sont sous licence CC BY-NC 4.0. Usage académique, journalistique, éducatif et ONG : libre avec attribution. Usage commercial (revente de données, intégration dans des produits, tableaux de bord d'entreprise, automation à grande échelle) n'est pas autorisé sans accord préalable — demandez-le en écrivant à micaela@kavnes.com. Pas de frais — nous voulons juste savoir qui l'utilise et pour quoi. Le texte original des nouvelles appartient aux médias respectifs.
Limites honnêtes
- Classification biaisée. Les modèles automatisés portent des biais hérités. La classification de gravité est particulièrement bruyante — à utiliser comme indicateur, pas comme vérité absolue.
- Faux négatifs. Une attaque utilisant un langage euphémistique (par exemple "sioniste" sans mentionner les Juifs) peut ne pas déclencher le lexique.
- Faux positifs. L'heuristique signale parfois des articles analytiques qui mentionnent "antisémitisme" sans fait concret. Le validateur les filtre mais pas toujours.
- Biais de couverture. Si un incident n'apparaît dans aucun média que nous surveillons, il n'existe pas pour le Moniteur. Les petites communautés ou pays à presse censurée sont sous-représentés.
- Traduction imparfaite. Les descriptions ES et EN sont la sortie d'un modèle, pas une traduction humaine. Pour citation, retournez toujours à la source originale (champ
source_url). - Faux regroupements du dédoublonnage flou. La deuxième passe qui fusionne les descriptions avec ≥ 75% de similarité (voir dedup) a un taux d'erreur faible mais non nul. Des événements véritablement distincts avec un phrasé très similaire et le même pays+type dans les 48h peuvent fusionner en une ligne. Les incidents fusionnés restent traçables via
additional_sources, mais la description visible sera unique. - Les métriques de source mesurent le volume, pas la précision. L'endpoint
/api/sourcesmesure combien d'incidents chaque média apporte et à quelle fréquence d'autres confirment. Cela ne mesure PAS la précision réelle (cela nécessiterait une vérité-terrain manuelle). Un média "tier 5" peut être tout aussi fiable qu'un "tier 10" dans son créneau.
Comment citer ce travail
Le Moniteur Mondial de l'Antisémitisme est une ressource publique, gratuite. Si vous l'utilisez dans un article, rapport, communication ou publication, citez-le ainsi :
Citation courte (générale)
Moniteur Mondial de l'Antisémitisme (2026). antisemitismo.kavnes.com [consulté le : AAAA-MM-JJ]
Citer un incident spécifique
Chaque incident a un permalien à ID stable. Citez ainsi :
Moniteur Mondial de l'Antisémitisme (2026). "Attaque contre une synagogue à Villa Crespo."
antisemitismo.kavnes.com/inc/1234 [consulté le : AAAA-MM-JJ]
Source primaire : {URL du média original}
Citez toujours aussi la source primaire (source_url) — le Moniteur est un agrégateur, pas un reporter. Notre classification est heuristique/IA et peut se tromper. Pour usage académique ou juridique, vérifiez auprès du média original.
Citer l'indice continental
Indice Continental Mondial d'Antisémitisme, Moniteur Mondial de l'Antisémitisme (2026). antisemitismo.kavnes.com/methodologie#continental-index Fenêtre : 30 derniers jours. Score pondéré absolu, bande catégorielle.
Format BibTeX
@misc{moniteur_antisemitisme_2026,
title = {Moniteur Mondial de l'Antisémitisme},
author = {Kavnes, LLC},
year = {2026},
url = {https://antisemitismo.kavnes.com},
note = {Consulté le : AAAA-MM-JJ}
}
Licence des données
Les métadonnées que nous générons (classification, traduction, score) peuvent être utilisées librement avec attribution pour usage non commercial (CC BY-NC 4.0). Pour usage commercial, demander une licence à micaela@kavnes.com. Le texte original de chaque nouvelle appartient au média respectif — respectez sa licence en cas de reproduction du contenu.
Contact
Demandes, corrections, collaborations ou suggestions de sources :
Si vous voyez un incident mal classé ou une nouvelle sur l'antisémitisme que nous avons manquée, envoyez le lien et nous réviserons manuellement. Les demandes incluant l'URL de la source primaire sont prioritaires.