paper-radar — radar des articles IA des big tech
Sans état : une exécution = une fenêtre = un rapport. Aucune bibliothèque d'articles n'est conservée. arXiv est la seule source de vérité, et ré-exécuter la même fenêtre produit nécessairement le même résultat — il n'y a donc aucune raison de garder une copie supplémentaire. En conserver une ajoute seulement un état qui dérive silencieusement et vit en dehors du contrôle de version. Le coût est de re-scraper toute la fenêtre à chaque exécution (~1 min pour 3 jours, ~3 min pour 14 jours) ; ce que vous achetez, c'est la reproductibilité.
Lisez ceci d'abord, ou vous arriverez à des conclusions erronées
arXiv est la seule source organisée par date de publication. La page de publications de chaque fournisseur est organisée par année de publication / lieu, ce qui structurellement ne peut pas répondre à « qu'est-ce qui a été publié ces deux dernières semaines » — une différence de modèle de données, pas technique. Mesuré :
- Google Research : les pages de détail n'indiquent qu'une année, et la liste n'est pas chronologique ; 85 titres sur les 8 premières pages ont donné 0 dans une fenêtre de deux semaines, et l'entrée la plus récente datait de trois mois
- Amazon Science : regroupé par année, aucune date par article
- Microsoft :
/research/feed/est un blog éditorialement organisé — ~8% de couverture de la même fenêtre - 13 sites d'entreprises chinoises : 0 correspondances de date sur l'ensemble — ce sont des pages d'accueil de laboratoires, pas des listes d'articles
L'autre fait essentiel : les métadonnées arXiv ne contiennent pas l'affiliation des auteurs.
Le taux de remplissage <arxiv:affiliation> est de 1 %, chez Semantic Scholar de 7 %, et OpenAlex retourne 0 raw_affiliation_strings pour les prépublications (mesuré : 3/3 vides, alors que le même endpoint retourne 34/34 pour les articles Nature publiés). Le pipeline standard dans l'industrie est « l'éditeur dépose une chaîne d'affiliation → le ML la fait correspondre à un ROR », et arXiv ne dépose jamais cette chaîne. L'affiliation doit donc être extraite du propre bloc d'auteurs de l'article.
Exécution
Les scripts se trouvent dans ce répertoire de compétence et ne dépendent de rien d'extérieur — pure stdlib, pas de packages pip.
R=<skill-dir>/scripts/paper_radar.py
python3 $R # 3 derniers jours
python3 $R --days 14 # 14 derniers jours
python3 $R --from 2026-07-20 --to 2026-08-04
python3 $R --cats cs.AI,cs.CL,cs.LG,cs.CV # élargir les catégories
python3 $R --no-scrape # sources officielles + noms d'équipe uniquement (secondes — vérification rapide entreprise)
python3 $R -o path.md # écrire le rapport ici
python3 $R -o - # écrire le rapport sur stdout
Temps d'exécution : pour une fenêtre de deux semaines (~3000 articles), les métadonnées prennent ~2 minutes et la récupération des blocs d'auteurs ~25 secondes avec 6 workers. Une fenêtre de 3 jours se termine en moins d'une minute. Pour couvrir une historique plus long, élargissez la fenêtre et ré-exécutez — il n'y a pas de bibliothèque à interroger.
Où va le rapport — vous décidez, le script ne devine pas
Le script ne sait pas, et ne doit pas savoir, où le projet appelant conserve ses travaux de recherche. Sans -o, il écrit dans le répertoire de travail courant.
Décidez de la destination avant chaque exécution :
- L'utilisateur a nommé un chemin → utilisez-le
- Cette recherche vaut la peine d'être conservée → écrivez-la dans le répertoire de recherche de ce projet, avec la fenêtre dans le nom du fichier
- Vous vérifiez juste un fait (« Xiaomi a-t-il publié quelque chose sur l'IA auto-évolutive ? ») → utilisez
-o -et ne laissez aucun fichier. Une question anodine qui laisse un fichier derrière elle se fera passer pour un enregistrement de recherche plus tard
Fichiers
| Chemin (relatif à cette compétence) | Rôle |
|---|---|
scripts/paper_radar.py | Pipeline : récupération de la liste → récupération des blocs d'auteurs → résolution des affiliations → écriture du rapport |
scripts/affiliation.py | Couche de résolution : cartographie des indices superscript + correspondance à trois niveaux |
scripts/data/ror_anchors.json | Identifiants ROR de 28 laboratoires + 98 variantes de noms officiels (y compris en chinois) |
Le seul résultat est un fichier Markdown (chemin selon ce qui précède), avec une répartition « total des hits / dont principaux ». Le répertoire de la compétence lui-même ne produit aucun fichier.
Six étapes
0 listing API arXiv : cat × submittedDate → dédoublonnage par ID
1 texte intégral arxiv.org/html/{id} + Range premiers 90 Ko, coupe à ltx_authors → ltx_abstract [85 %]
2 structure parcourir de droite à gauche pour la dernière position commençant une suite ascendante 1,2,3…
extraire (auteur, marques[]) · (marque, affiliation) · emails · marqueurs de rôle
3 entité (a) domaine email (b) variantes de noms ROR (c) tableau d'alias de laboratoire
4 évaluation lead_orgs = affiliations du premier auteur (peut être plusieurs) ; intern = marqueur présent
5 suppléments Flux RSS Apple · JSON intégré MSR · noms d'équipe arXiv
6 rapport dédoublonnage par clé (un article peut arriver à la fois du bloc d'auteur et d'une source
officielle), écrire Markdown, conserver les preuves et matched_on
Cinq disciplines, chacune payée en bugs
1. Le bloc d'auteurs doit être coupé strictement à ltx_abstract. Prenez un caractère de plus et le résumé déborde. Conséquences mesurées : Oracle 73 articles (tous « oracle access »), MiniMax 17 (l'algorithme minimax), DeepSeek 58 (articles mentionnant simplement le modèle). Coupé proprement, le bloc d'auteurs médian fait ~201 caractères.
2. La liste des affiliations doit être trouvée de droite à gauche. « nom + chiffre en exposant » dans la séquence des auteurs et « chiffre + affiliation » dans la séquence des affiliations ont la même forme, donc un balayage de gauche à droite analyse Yuchen Zhao 1 Bingxuan Li comme 1 → « Bingxuan Li ».
3. Ne jamais se rabattre sur « une seule entreprise correspond, donc elle est principale ». Cela vous indique seulement que les autres affiliations ne sont pas des entreprises que vous suivez. Mauvaise attribution mesurée : Filesystem-Based Memory est dirigé par UIUC mais a été attribué par erreur à Adobe car Adobe était la seule correspondance.
4. Une signature d'entreprise n'est pas un article d'entreprise. Seul * dans le rapport signifie principal. Mesuré sur une fenêtre de deux semaines : Google a touché 10 articles mais n'en a dirigé que 4 ; Google DeepMind 7 hits, 2 dirigés ; Adobe 5 hits, 0 dirigé. Toute affirmation de « N articles des big tech » doit préciser quelle colonne elle entend.
5. Énoncez les angles morts avant les chiffres.
- 12 % des soumissions sont uniquement PDF et sont invisibles — le plafond dur de l'étape 1
- Taux de non-détection Apple ~78 % (ses auteurs omettent fréquemment l'affiliation) → corrigé via le flux RSS officiel. Ce supplément est obligatoire, pas optionnel
- Lorsque le premier auteur liste plusieurs affiliations, elles ne peuvent pas être classées ; les deux reçoivent
* internest un marqueur, pas un jugement — savoir si un article de stagiaire « compte » est une question de définition, mise à la surface pour que l'appelant décide
Trois niveaux d'erreur — ne les confondez pas
| Niveau | Problème | Que faire en cas d'échec |
|---|---|---|
| 1 extraction | Impossible d'obtenir le texte | sources supplémentaires ; chaque échec aujourd'hui se situe à ce niveau |
| 2 structure | Impossible de mapper l'auteur à l'affiliation | dégrader vers une analyse du bloc entier, à précision réduite |
| 3 entité | Quelle entreprise est cette chaîne | unmatched conserve le texte brut pour le tableau ; ROR n'intervient qu'ici |
ROR est une table de correspondance chaîne-à-ID ; vous avez besoin de la chaîne d'abord. Mesuré sur deux articles Xiaomi : l'un n'avait pas de HTML du tout, le bloc d'auteurs de l'autre contenait 8 noms de personnes et pas un mot d'affiliation. ROR ne peut sauver ni l'un ni l'autre — seules les sources supplémentaires le peuvent.
Pourquoi chaque source supplémentaire reste
| Source | Rôle | Preuve |
|---|---|---|
| Flux RSS Apple | Corrige un échec systématique, obligatoire | Fenêtre de deux semaines : 2 scrapés contre 9 officiels — 78 % manqués |
| Noms d'équipe arXiv | Couvre « le nom de l'entreprise est dans le champ auteur, pas dans le champ affiliation » | Xiaomi MiMo Team / Kimi Team ; a ajouté 2 articles, zéro redondance |
| JSON intégré MSR | Sondage de validation croisée | 25 scrapés contre 7 officiels — redondant, conservé comme contrôle intra-exécution : si une source officielle a un article que le bloc d'auteurs a manqué, l'étape 1 est cassée |
Quand une entreprise affiche zéro — vérifiez dans cet ordre
- Mauvaise fenêtre — arXiv indexe avec 1 à 2 jours de retard et n'annonce pas le week-end ; élargissez d'abord
- Mauvaises catégories — le défaut est cs.AI/cs.CL/cs.LG ; la robotique est cs.RO, la vision cs.CV, les systèmes cs.SE
- Recherche par nom d'équipe —
all:« Xiaomi »/« Hunyuan »/« Kimi Team »fonctionnent ;all:« MiniMax »est inutilisable (plus de 5800 hits de l'algorithme minimax) — utilisezau:« MiniMax » - Canaux officiels — Flux RSS Apple,
ai.meta.com/results/?content_types[0]=publicationde Meta (notez que/research/publications/retourne 400 à curl simple),research.nvidia.com/publicationsde NVIDIA - Ce n'est que lorsque tout ce qui précède est vide que vous pouvez dire « cette entreprise n'a rien publié dans cette fenêtre »
Feuille de route
- Ajouter la source TeX comme niveau 2 de l'étape 1 — décompressez
arxiv.org/e-print/{id}et lisez\author{}. Vérifié : les articles sans HTML ont souvent du TeX, avec les exposants intacts. Le gain de couverture le moins cher disponible - Auto-contrôle de santé intra-exécution — mettez le taux de réussite du bloc d'auteurs de l'étape 1, et le nombre d'articles que « la source officielle a mais que le bloc d'auteurs n'a pas », directement dans l'en-tête du rapport. Protège contre une rupture silencieuse lorsque arXiv modifie son balisage (le taux d'échec de 78 % d'Apple a été découvert par accident). Ne réintroduisez pas de taux de réussite historiques stockés pour cela — la validation croisée intra-exécution suffit
Encore une chose
Le nombre d'articles est une offre, pas une tendance. Mesuré : sur 231 articles des big tech dans une fenêtre de deux semaines, 0 ont été discutés sur Hacker News, tandis que chaque article discuté sur HN dans la même fenêtre provenait du milieu universitaire ou d'une startup. Juger de la tendance nécessite un signal social distinct.