- Der Autor hat ein Projekt durchgeführt, das mehr als 40 Millionen Hacker-News-Beiträge und -Kommentare mithilfe von Text-Embeddings analysiert
- Das Hauptziel des Projekts war die Umsetzung verbesserter Such-, Empfehlungs- und Analysefunktionen
- Dafür wurden die Daten über die Hacker News API gesammelt und durch Crawling von Webseiten um zusätzlichen Kontext ergänzt
- Auf Basis der gesammelten Daten wurden Text-Embeddings erzeugt und mit UMAP in einen 2D-Raum projiziert
- Auf Grundlage dieser Abbildung wurde eine interaktive Karte des „Hacker News Universe“ erstellt
- Zusätzlich wurden auf Basis der Embeddings Funktionen wie semantische Suche, automatische virtuelle Communities sowie Popularitäts-/Sentiment-Analysen umgesetzt
- Für die Verarbeitung großer Datenmengen wurde ein GPU-Cluster genutzt, und zur Verbesserung der User Experience wurden Edge-Server bereitgestellt
Sammlung von Hacker-News-Daten
- Mithilfe der Hacker News API wurden mehr als 40 Millionen Beiträge und Kommentare gesammelt
- Da die API-Antworten langsam waren, wurde für die parallele Verarbeitung ein Node.js-basierter Service implementiert
- Beitrags-Scores fallen nicht unter -1, und Kommentar-Scores lassen sich nicht über die API prüfen
- Einige Beiträge und Kommentare haben leere Titel und leeren Inhalt (vermutlich von Moderatoren bearbeitet)
- In manchen Fällen ist die Kommentar-ID kleiner als die des übergeordneten Kommentars (vermutlich weil Moderatoren den Kommentarbaum verschoben haben)
Erzeugung von Text-Embeddings
- Titel allein reichen nicht aus, um Beiträge semantisch angemessen darzustellen, daher wurde durch Crawling von Webseiten zusätzlicher Kontext beschafft
- Für die Erzeugung von Text-Embeddings sind leistungsfähige GPUs nötig, und die Verarbeitung von 40 Millionen Eingaben könnte fast ein Jahr dauern
- Mit RunPod wurde kostengünstig ein GPU-Cluster aufgebaut, und durch die Entwicklung von
db-rpc und queued wurde die Effizienz der verteilten Verarbeitung verbessert
- Mit 150 GPUs wurden die Embeddings für 40 Millionen Texte in nur wenigen Stunden erzeugt
Zusätzlichen Kontext durch Crawling von Webseiten beschaffen
- Da die Embedding-Qualität allein mit Beitragstiteln nicht gut genug war, wurden die verlinkten Webseiten gecrawlt, um zusätzlichen Kontext zu gewinnen
- Der Crawler wurde in Rust implementiert und erreichte eine zehnmal höhere Leistung als die Node.js-Version
- Viele Links waren bereits verfallen (
link rot) und wurden mithilfe der API des Internet Archive wiederhergestellt
- Am Ende konnten von 4 Millionen Seiten weniger als 5 % nicht abgerufen werden
Verbesserte Text-Embeddings erzeugen
- Um den vollständigen Inhalt von Webseiten als Eingabe zu nutzen, wurde auf das Modell
jina-embeddings-v2-small-en umgestellt
- Beiträge mit zu wenig Kontext wurden durch Hinzufügen der Top-Kommentare ergänzt
- Bei Kommentaren wurde die Eingabe unter Berücksichtigung der Hierarchie aufgebaut und bis zu den Vorfahren-Kommentaren erweitert
Dimensionsreduktion mit UMAP
- Mit UMAP wurden 1024-dimensionale Embeddings auf einen 2D-Raum reduziert
- Für die Dimensionsreduktion werden ein PyNNDescent-Graph und die ursprünglichen Embeddings benötigt
- Die Verarbeitung von einer Million hochdimensionaler Eingaben dauert auf einer 96-Kern-CPU etwa anderthalb Stunden
- Das Ergebnis der Dimensionsreduktion visualisiert Interessenfelder und die Verteilung von Popularität
Kosinus-Ähnlichkeit
- Zur Berechnung der Ähnlichkeit zwischen Embeddings wird häufig die Kosinus-Distanz verwendet
- Die Kosinus-Distanz beschreibt den Winkelunterschied zwischen Vektoren und wird im Gegensatz zur euklidischen Distanz nicht von der Vektorgröße beeinflusst
- Das eignet sich gut für die Berechnung von Textähnlichkeit, weil selbst lange und intensive Diskussionen nah beieinander liegen sollten, wenn ihr Thema ähnlich ist
- Die Berechnung der Kosinus-Ähnlichkeit lässt sich einfach über Matrixmultiplikation umsetzen
Erstellung der Hacker-News-Universe-Karte
- Auf Basis der Embeddings wurde eine interaktive Hacker-News-Karte ähnlich wie Google Maps erstellt
- Unterstützt werden Funktionen wie die Steuerung der sichtbaren Punktzahl beim Zoomen, die Beschriftung einiger Punkte und die Anzeige von Detailinformationen beim Anklicken
- Da es zu aufwendig wäre, Millionen von Punkten auf einmal an den Browser zu senden, wurde schrittweises Laden mit Tiling und LOD umgesetzt
- Pro Tile wurden maximal 1500 Punkte gespeichert, um die Größe unter 20 KB zu halten und unter Berücksichtigung regionaler Dichte ausreichend Vielfalt zu sichern
- Die Web-App wurde mit Canvas und WebWorker umgesetzt, und die Kartenfunktionen wurden mit Blick auf Google Maps ähnlich implementiert
Zusätzliche visuelle Effekte
- Wie bei einer echten Karte wurden Landmarken, Grenzen und Gelände ergänzt, um Immersion und Orientierung zu verbessern
- Entsprechend der Punktdichte wurden Hell-Dunkel-Konturlinien gezeichnet, um Bereiche mit hohem Interesse auf HN darzustellen
- Mit Gaussian Blur wurden weiche Konturlinien erzeugt und anschließend in SVG umgewandelt, um sie als verlustfreie Vektorgrafik auszugeben
- Zusätzlich wurden „Städte“ eingefügt, die repräsentative Themen anzeigen und als Orientierungspunkte für bestimmte Bereiche dienen
Test der Suchfunktion
- Die Suche auf Basis semantischer Embeddings liefert im Vergleich zur Keyword-Suche relevantere und vielfältigere Ergebnisse
- Auch anfrageartige Fragen werden gut verstanden, und selbst ohne exakt passende Wörter werden ähnliche Themen gefunden
- Dank der hohen Qualität der HN-Beiträge enthalten auch die Suchergebnisse viele aufschlussreiche und nützliche Informationen
- Beim Ranking der Ergebnisse wurden neben Relevanz auch Beitrags-Score und Zeitgewichtung berücksichtigt, um Vertrauenswürdigkeit und Aktualität einzubeziehen
Automatische virtuelle Communities erzeugen
- Mit Keywords lassen sich virtuelle Communities erzeugen, um sofort eine Sammlung von Beiträgen passend zu bestimmten Interessen anzuzeigen
- Dabei können nicht nur Beiträge, sondern auch aktive Kommentare zu einem Interessengebiet gemeinsam betrachtet werden
- Außerdem lassen sich einflussreiche und besonders aktive Nutzer zu einem bestimmten Thema identifizieren
- Durch nachgelagertes Filtern statt Vorab-Filterung lassen sich die Rechenkosten deutlich senken
Analyse großer Datenmengen
- Mit einem Open-Source-Sentiment-Modell wurden bei 30 Millionen Kommentaren positive und negative Stimmungen klassifiziert
- Wird das Sentiment eines Themas als Zeitreihe analysiert, lassen sich Veränderungen rund um wichtige Ereignisse beobachten
- Mithilfe von Ähnlichkeit und Scores ist auch ein Vergleich der Popularität zwischen Themen möglich
- Zur Beschleunigung der Query-Berechnung wurden GPU-basierte Matrixoperationen eingesetzt und die Verarbeitungsgeschwindigkeit deutlich erhöht
Weitere Pläne
- Unterstützung für Echtzeit-Datenupdates
- Entwicklung eines Deep-Learning-basierten Empfehlungssystems
- Verbesserung der Suchqualität durch ein Reranking-Modell
- Ausbau der Nutzeranalyse (Ähnlichkeit, Fachkenntnis usw.)
- Erschließung weiterer Verbesserungsideen durch Feedback aus der Community
Meinung von GN⁺
- Dieses Projekt zeigt sehr gut, wie große Datenmengen effizient gesammelt, bereinigt und analysiert werden können. Besonders beeindruckend sind die Verfahren zur Performance-Optimierung wie Parallelverarbeitung und der Einsatz von GPUs.
- Die Hacker-News-Karte, die mit Text-Embeddings und UMAP die Ähnlichkeit zwischen Beiträgen visualisiert, ist ein sehr kreatives und spannendes Ergebnis. Sie dürfte Nutzern erheblich dabei helfen, interessante Themen zu erkunden und neue Informationen zu entdecken.
- Die semantische Suche und die automatische Erzeugung von Communities sind innovative Ideen, die die Nutzungserfahrung von Hacker News auf ein neues Niveau heben können. Es wäre wünschenswert, wenn Suchtechnologien, die über simples Keyword-Matching hinaus Kontext und Absicht verstehen, sich auch bei allgemeinen Nutzern stärker verbreiten.
- Der Aufbau einer Pipeline zur Echtzeitverarbeitung großer Datenmengen dürfte der entscheidende Punkt sein. Ansätze zur Beseitigung von Performance-Engpässen wie Edge Computing oder In-Memory-Datenbanken sollten sorgfältig geprüft werden.
- Aufgrund der hohen Verlässlichkeit der HN-Daten scheinen auch die Ergebnisse der Sentiment-Analyse durchaus nutzbar zu sein. Allerdings sollte auf algorithmische Verzerrungen geachtet werden, und auch domänenspezifisches Training wäre eine Überlegung wert.
1 Kommentare
Der Titel fehlt offenbar.