5 points par GN⁺ 2025-05-02 | 1 commentaires | Partager sur WhatsApp
  • L’auteur a téléchargé toutes les données de Hacker News et les a analysées avec DuckDB
  • L’ensemble des items (stories + commentaires), soit 20 Go, a été stocké dans des fichiers JSON, avec une structure permettant aussi les mises à jour futures
  • Avec DuckDB, il a réalisé une analyse en série temporelle hebdomadaire de la part des mentions de « Python », « JavaScript », « Ruby » et « Rust », entre autres
  • Un LLM a été utilisé pour écrire le SQL, ce qui a permis même à un débutant d’effectuer facilement des analyses complexes
  • Le projet est consultable sur le site public hn.unlurker.com, et tout le monde peut réutiliser ces données comme base d’analyse

Aspirer l’ensemble des données de Hacker News

  • En créant hn.unlurker.com, l’auteur a développé son propre client HN API en Go, au départ comme projet personnel pour exploiter les fonctionnalités récentes de Go et les linters
  • Il a implémenté une commande scan qui télécharge séquentiellement tous les items de Hacker News (stories et commentaires dans la HN API) à partir de l’identifiant 0
  • Le téléchargement a été interrompu plusieurs fois, mais grâce à une architecture reprenable, il a pu récupérer en quelques heures environ 20 GiB de fichiers JSON

Analyse textuelle en série temporelle avec DuckDB

  • Alors qu’il utilisait d’abord grep pour des recherches de motifs simples, il a ensuite essayé DuckDB comme outil d’analyse, une base de données très rapide optimisée pour l’analyse de petits ensembles de données dans un fichier unique
  • Il a importé les fichiers JSON en tables, puis calculé chaque semaine la proportion de mentions des langages présents dans le texte des items
  • Il a écrit du SQL permettant de visualiser, avec une moyenne mobile sur 12 semaines, la proportion contenant les mots-clés Python, JavaScript, Java, Ruby et Rust
  • Grâce à la nouvelle interface de DuckDB, l’outil était plus simple à utiliser, et l’aide d’un LLM a aussi facilité l’écriture du SQL

Résultats et suite

  • Pour des analyses de données à cette échelle, DuckDB a offert d’excellentes performances et une très bonne ergonomie
  • Une fois la collecte terminée, l’auteur a déclaré, à moitié pour plaisanter et à moitié sérieusement, qu’il allait « entraîner des centaines de bots basés sur des LLM pour remplacer Hacker News »
  • Mais l’objectif concret de collecte et d’analyse des données a bien été atteint, et le projet s’arrête ici
  • Il précise que la suite de l’analyse dépend désormais de quelqu’un qui saura tirer de nouveaux enseignements à partir de ces données

Liens de référence

1 commentaires

 
GN⁺ 2025-05-02
Commentaires Hacker News
  • Deux bases de données mettent à jour les tables de Hacker News, ce qui permet de faire des analyses sans tout télécharger

    • BigQuery nécessite un compte Google Cloud, et les requêtes semblent entrer dans le quota gratuit
    • ClickHouse peut être interrogé directement dans le navigateur, sans inscription
  • Une opération similaire avait déjà été menée dans le passé sur les comptes Twitter/Bluesky de @fesshole

    • L’archive complète avait été téléchargée et un modèle affiné pour générer des confessions plus spirituelles
    • Mais il a fini par se rendre compte qu’il avait appris des contenus inappropriés à une machine innocente
  • Il disposait d’un fichier JSON de 20 GiB contenant tout le contenu de Hacker News

    • Il a été surpris par ce volume alors qu’il s’agit d’un site uniquement textuel
    • Plus de 20 milliards d’octets de texte ont été publiés en 18 ans
  • Les requêtes sur Java incluent toutes les occurrences de JavaScript, ce qui surreprésente Java

  • Il se demande quelle est la nétiquette à respecter pour télécharger Hacker News

    • Faut-il demander à Dang avant de charger les serveurs, ou supposer que de grandes entreprises tech l’ont déjà fait à plusieurs reprises ?
  • Il prévoit que beaucoup d’API proposeront à l’avenir une option pour renvoyer des fichiers duckdb

    • Puisqu’on finit de toute façon par charger du json dans une base de données, recevoir directement une base en réponse est plus efficace
  • Quelqu’un a réalisé un travail similaire

    • En utilisant le dataset BigQuery, les données ont été exportées en parquet, téléchargées, puis interrogées avec duckdb
  • Après avoir téléchargé localement tout le contenu de Hacker News, il serait possible d’entraîner un bot basé sur un LLM et de le faire participer comme contributeur

    • C’était une plaisanterie, mais il craint que quelqu’un finisse un jour par essayer
  • Demande de ne pas utiliser de graphiques cumulés

    • Ils risquent fortement de fausser la perception des lecteurs
    • Il est difficile d’évaluer la hauteur d’un point de données précis, et cela peut suggérer une dépendance
  • Quelqu’un avait déjà créé un dump des données de Hacker News

    • Comme les éléments récents sont davantage mis à jour au fil du temps, il serait utile d’implémenter une fonctionnalité qui fasse paraître les éléments téléchargés récemment plus anciens que les éléments plus anciens