- L’auteur a mené un projet d’analyse de plus de 40 millions de publications et de commentaires de Hacker News à l’aide d’embeddings de texte
- L’objectif principal du projet était de mettre en place des fonctions de recherche, de recommandation et d’analyse améliorées
- Pour cela, les données ont été collectées via l’API Hacker News, puis un crawling de pages web a permis d’obtenir du contexte supplémentaire
- À partir des données collectées, des embeddings de texte ont été générés, puis projetés dans un espace 2D à l’aide d’UMAP
- Sur la base de ces données cartographiées, une carte interactive intitulée "Hacker News Universe" a été créée
- Les embeddings ont aussi servi à mettre en œuvre des fonctions comme la recherche sémantique, des communautés virtuelles automatiques, ainsi que l’analyse de popularité et de sentiment
- Pour traiter ces données à grande échelle, un cluster de GPU a été utilisé, et des serveurs edge ont été déployés pour améliorer l’expérience utilisateur
Collecte des données Hacker News
- Plus de 40 millions de publications et de commentaires ont été collectés via l’API Hacker News
- Les réponses de l’API étant lentes, un service basé sur Node.js a été mis en place pour le traitement parallèle
- Le score des publications ne descend pas en dessous de -1, et le score des commentaires n’est pas accessible via l’API
- Certaines publications et certains commentaires ont un titre et un corps vides (probablement modifiés par les modérateurs)
- Il arrive aussi que l’ID d’un commentaire soit inférieur à celui de son commentaire parent (probablement parce que les modérateurs ont déplacé l’arborescence des commentaires)
Génération des embeddings de texte
- Le titre seul ne suffit pas à représenter sémantiquement une publication, donc du contexte supplémentaire a été récupéré via le crawling des pages web
- La génération d’embeddings de texte nécessite des GPU performants, et traiter 40 millions d’entrées peut prendre près d’un an
- Un cluster de GPU a été monté à bas coût avec RunPod, et
db-rpc ainsi que queued ont été développés pour améliorer l’efficacité du traitement distribué
- En mobilisant 150 GPU, les embeddings de 40 millions de textes ont été générés en seulement quelques heures
Obtenir du contexte supplémentaire par crawling des pages web
- Comme la qualité des embeddings était mauvaise avec les seuls titres des publications, les pages web liées ont été crawlées pour récupérer plus de contexte
- Le crawler a été implémenté en Rust, atteignant des performances 10 fois supérieures à la version Node.js
- De nombreux liens étaient cassés (link rot), et ils ont été restaurés à l’aide de l’API d’Internet Archive
- Au final, moins de 5 % des pages sur 4 millions n’ont pas pu être récupérées
Génération d’embeddings de texte améliorés
- Passage au modèle jina-embeddings-v2-small-en afin d’utiliser l’intégralité des pages web en entrée
- Les publications manquant de contexte ont été enrichies avec les commentaires les mieux classés
- Pour les commentaires, l’entrée a été construite en tenant compte de la structure hiérarchique, jusqu’aux commentaires ancêtres
Réduction de dimension avec UMAP
- UMAP a été utilisé pour réduire des embeddings de 1 024 dimensions vers un espace en 2D
- La réduction de dimension nécessite le graphe PyNNDescent et les embeddings d’origine
- Le traitement d’un million d’entrées en haute dimension prend environ 1 h 30 sur un CPU à 96 cœurs
- Le résultat de la réduction de dimension permet de visualiser la répartition des centres d’intérêt et de la popularité
Similarité cosinus
- La distance cosinus est couramment utilisée pour calculer la similarité entre embeddings
- La distance cosinus représente l’écart d’angle entre vecteurs et, contrairement à la distance euclidienne, n’est pas affectée par la norme des vecteurs
- Cela convient bien au calcul de similarité de texte, car même une discussion longue et intense doit être cartographiée près d’une autre si le sujet est similaire
- Le calcul de similarité cosinus peut être implémenté simplement via une multiplication matricielle
Création de la carte Hacker News Universe
- Une carte interactive de Hacker News, similaire à Google Maps, a été créée à partir des embeddings
- Elle prend en charge des fonctions comme l’ajustement du nombre de points visibles au zoom, l’étiquetage de certains points et l’affichage de détails au clic
- Comme l’envoi simultané de plusieurs millions de points au navigateur serait trop lourd, un chargement progressif a été mis en place via le tiling et le LOD
- Chaque tuile contient au maximum 1 500 points afin de rester sous les 20 KB, tout en assurant une bonne diversité selon la densité locale
- La web app a été développée avec Canvas et WebWorker, et les fonctions cartographiques ont été conçues en s’inspirant de Google Maps
Ajout d’effets visuels
- Des repères, frontières et reliefs ont été ajoutés comme sur une vraie carte afin d’améliorer l’immersion et le sens de l’orientation
- Des courbes de niveau en clair-obscur ont été tracées selon la densité des points pour représenter les zones les plus suivies sur HN
- Un flou gaussien permet de produire des courbes de niveau douces, converties ensuite en SVG pour un rendu vectoriel sans dégradation
- Des "villes" représentant les grands thèmes ont été ajoutées pour guider l’utilisateur vers certaines zones
Test de la fonction de recherche
- La recherche basée sur des embeddings sémantiques fournit des résultats plus pertinents et plus variés que la recherche par mots-clés
- Elle comprend bien les requêtes formulées sous forme de questions et retrouve des sujets proches même sans correspondance exacte de mots
- Grâce à la grande qualité des publications HN, les résultats de recherche exposent aussi beaucoup d’informations utiles et riches en enseignements
- Le classement des résultats prend en compte non seulement la pertinence, mais aussi le score des publications et une pondération temporelle, afin d’intégrer fiabilité et fraîcheur
Génération automatique de communautés virtuelles
- Il est possible de créer des communautés virtuelles à partir de mots-clés pour voir instantanément des ensembles de publications adaptés à ses centres d’intérêt
- Il est également possible d’explorer non seulement les publications, mais aussi les commentaires qui suscitent de nombreuses discussions autour de ces centres d’intérêt
- On peut aussi identifier les utilisateurs influents et très actifs sur un sujet donné
- Utiliser un filtrage a posteriori au lieu d’un préfiltrage permet de réduire fortement le coût de calcul
Analyse de données à grande échelle
- Un modèle open source d’analyse de sentiment a été utilisé pour classer les sentiments positifs/négatifs de 30 millions de commentaires
- L’analyse temporelle du sentiment d’un topic permet d’observer les variations liées aux événements majeurs
- Il est aussi possible de comparer la popularité entre topics à l’aide de la similarité et des scores
- Pour accélérer les calculs des requêtes, des opérations matricielles sur GPU ont été appliquées, améliorant fortement la vitesse de traitement
Projets à venir
- Prise en charge des mises à jour des données en temps réel
- Développement d’un système de recommandation basé sur le deep learning
- Amélioration de la qualité de recherche via un modèle de reranking
- Renforcement de l’analyse des utilisateurs (similarité, expertise, etc.)
- Recherche d’idées d’amélioration supplémentaires via les retours de la communauté
L’avis de GN⁺
- Ce projet montre très bien le processus de collecte, de nettoyage et d’analyse efficace de données à grande échelle. Les techniques d’optimisation des performances, notamment le traitement parallèle et l’utilisation de GPU, sont particulièrement impressionnantes.
- La carte Hacker News, qui visualise la similarité entre publications en combinant embeddings de texte et UMAP, est un résultat très créatif et passionnant. Elle devrait grandement aider les utilisateurs à explorer des sujets d’intérêt et à découvrir de nouvelles informations.
- Les fonctions de recherche sémantique et de génération automatique de communautés constituent une idée innovante susceptible d’élever l’expérience Hacker News à un niveau supérieur. On peut espérer que les technologies de recherche capables de comprendre le contexte et l’intention, au-delà d’une simple correspondance de mots-clés, se diffusent davantage auprès du grand public.
- La mise en place d’un pipeline de traitement de données massives en temps réel semble être l’enjeu clé. Il faudra examiner avec attention des solutions capables de lever les goulets d’étranglement en performance, comme l’edge computing ou les bases de données en mémoire.
- Étant donné la forte fiabilité des données HN, les résultats de l’analyse de sentiment semblent eux aussi avoir une réelle valeur d’usage. Il faudra toutefois rester attentif aux biais algorithmiques et envisager aussi un apprentissage spécialisé pour ce domaine.
1 commentaires
Le titre manque, apparemment.