2 poin oleh GN⁺ 2024-05-10 | 1 komentar | Bagikan ke WhatsApp
  • Penulis menjalankan proyek untuk menganalisis lebih dari 40 juta postingan dan komentar Hacker News dengan memanfaatkan text embedding
  • Tujuan utama proyek ini adalah membangun fitur pencarian, rekomendasi, dan analisis yang lebih baik
  • Untuk itu, data dikumpulkan menggunakan Hacker News API, dan konteks tambahan diperoleh melalui crawling halaman web
  • Berdasarkan data yang terkumpul, dibuat text embedding lalu dipetakan ke ruang 2D menggunakan UMAP
  • Berdasarkan data yang telah dipetakan, dibuat peta interaktif "Hacker News Universe"
  • Selain itu, embedding juga dimanfaatkan untuk mewujudkan fitur seperti pencarian semantik, komunitas virtual otomatis, serta analisis popularitas/sentimen
  • Untuk memproses data skala besar, digunakan klaster GPU, dan server edge dideploy untuk meningkatkan pengalaman pengguna

Pengumpulan data Hacker News

  • Lebih dari 40 juta data postingan dan komentar dikumpulkan menggunakan Hacker News API
  • Karena respons API lambat, dibuat layanan berbasis Node.js untuk pemrosesan paralel
  • Skor postingan tidak turun di bawah -1, dan skor komentar tidak bisa dilihat melalui API
  • Beberapa postingan dan komentar memiliki judul serta isi yang kosong (kemungkinan diedit oleh moderator)
  • Ada juga kasus ketika ID komentar lebih kecil daripada komentar induknya (kemungkinan moderator memindahkan pohon komentar)

Pembuatan text embedding

  • Karena judul saja tidak cukup untuk merepresentasikan postingan secara semantik, konteks tambahan diperoleh dengan melakukan crawling halaman web
  • Pembuatan text embedding membutuhkan GPU berperforma tinggi, dan memproses 40 juta input bisa memakan waktu hampir satu tahun
  • Dengan menggunakan RunPod, dibangun klaster GPU berbiaya rendah, lalu db-rpc dan queued dikembangkan untuk meningkatkan efisiensi pemrosesan terdistribusi
  • Dengan mengerahkan 150 GPU, embedding untuk 40 juta teks berhasil dibuat hanya dalam beberapa jam

Mendapatkan konteks tambahan lewat crawling halaman web

  • Karena kualitas embedding kurang baik jika hanya mengandalkan judul postingan, halaman web yang ditautkan dicrawl untuk memperoleh konteks tambahan
  • Crawler diimplementasikan dengan Rust dan mencapai performa 10 kali lebih cepat dibanding versi Node.js
  • Banyak tautan yang sudah rusak (link rot), sehingga dipulihkan menggunakan API dari Internet Archive
  • Pada akhirnya, kurang dari 5% halaman dari total 4 juta yang tidak berhasil diambil

Pembuatan text embedding yang ditingkatkan

  • Beralih ke model jina-embeddings-v2-small-en agar seluruh halaman web bisa digunakan sebagai input
  • Untuk postingan yang kekurangan konteks, komentar teratas ditambahkan sebagai pelengkap
  • Untuk komentar, input disusun dengan mempertimbangkan struktur hierarki dan memasukkan komentar leluhur juga

Reduksi dimensi dengan UMAP

  • Embedding 1024 dimensi direduksi menjadi ruang 2D menggunakan UMAP
  • Untuk reduksi dimensi, diperlukan graf PyNNDescent dan embedding asli
  • Memproses satu juta input berdimensi tinggi membutuhkan sekitar satu setengah jam pada CPU 96 core
  • Hasil reduksi dimensi memvisualisasikan distribusi minat dan popularitas

Kemiripan kosinus

  • Perhitungan kemiripan antar-embedding umumnya menggunakan cosine distance
  • Cosine distance menunjukkan perbedaan sudut antar-vektor, dan tidak terpengaruh oleh besar vektor seperti pada Euclidean distance
  • Ini cocok untuk menghitung kemiripan teks, karena diskusi yang panjang dan intens tetap perlu dipetakan berdekatan jika topiknya serupa
  • Perhitungan cosine similarity dapat diimplementasikan dengan mudah melalui perkalian matriks

Pembuatan peta Hacker News Universe

  • Berdasarkan embedding, dibuat peta Hacker News interaktif yang mirip Google Map
  • Mendukung fitur seperti pengaturan jumlah titik yang terlihat saat zoom, pemberian label pada sebagian titik, dan penayangan detail saat diklik
  • Karena mengirim jutaan titik sekaligus ke browser akan terlalu berat, diterapkan progressive loading dengan tiling dan LOD
  • Setiap tile memuat maksimal 1500 titik agar ukurannya tetap di bawah 20KB, sekaligus menjaga keragaman dengan mempertimbangkan kepadatan per wilayah
  • Web app diimplementasikan menggunakan Canvas dan WebWorker, dan fitur petanya dirancang mirip Google Map sebagai referensi

Menambahkan efek visual

  • Seperti peta sungguhan, landmark, batas wilayah, dan topografi ditambahkan untuk meningkatkan imersi dan orientasi
  • Garis kontur terang-gelap digambar berdasarkan kepadatan titik untuk menampilkan area yang paling banyak menarik perhatian di HN
  • Kontur halus digambar dengan Gaussian blur, lalu dikonversi ke SVG agar menghasilkan gambar vektor tanpa pecah
  • "Kota" yang merepresentasikan topik-topik utama juga ditambahkan untuk memandu pengguna ke area tertentu

Pengujian fitur pencarian

  • Pencarian berbasis embedding semantik menunjukkan hasil yang lebih relevan dan beragam dibanding pencarian kata kunci
  • Ia juga memahami kueri dalam bentuk pertanyaan, dan dapat menemukan topik serupa meski tidak ada kata yang sama persis
  • Berkat kualitas tinggi postingan HN, hasil pencariannya juga banyak menampilkan informasi yang penuh wawasan dan berguna
  • Selain relevansi, pemeringkatan hasil juga mempertimbangkan skor postingan dan bobot waktu untuk menilai keandalan dan kebaruan

Pembuatan komunitas virtual otomatis

  • Dengan kata kunci, komunitas virtual bisa dibuat untuk langsung melihat kumpulan postingan yang sesuai minat
  • Selain postingan, komentar dengan diskusi aktif terkait minat tersebut juga bisa ikut ditelusuri
  • Pengguna yang berpengaruh dan aktif pada topik tertentu juga dapat diidentifikasi
  • Menggunakan post-filtering alih-alih pre-filtering dapat sangat menurunkan biaya komputasi

Analisis data skala besar

  • Model analisis sentimen open source digunakan untuk mengklasifikasikan sentimen positif/negatif dari 30 juta komentar
  • Dengan menganalisis sentimen topik sebagai deret waktu, perubahan akibat peristiwa besar dapat diamati
  • Popularitas antar-topik juga bisa dibandingkan menggunakan kemiripan dan skor
  • Untuk mempercepat komputasi kueri, diterapkan operasi matriks berbasis GPU dan kecepatan pemrosesan meningkat drastis

Rencana ke depan

  • Dukungan pembaruan data real-time
  • Pengembangan sistem rekomendasi berbasis deep learning
  • Peningkatan kualitas pencarian melalui model re-ranking
  • Penguatan analisis pengguna (kemiripan, keahlian, dan lain-lain)
  • Menggali ide peningkatan tambahan melalui masukan komunitas

Opini GN⁺

  • Proyek ini merupakan contoh yang baik tentang bagaimana data skala besar dapat dikumpulkan, dibersihkan, dan dianalisis secara efektif. Khususnya, teknik optimisasi performa seperti pemrosesan paralel dan pemanfaatan GPU sangat mengesankan.
  • Peta Hacker News yang memvisualisasikan kemiripan antar-postingan dengan menggabungkan text embedding dan UMAP adalah hasil yang sangat kreatif dan menarik. Ini tampaknya akan sangat membantu pengguna menjelajahi topik yang diminati dan menemukan informasi baru.
  • Fitur pencarian semantik dan pembuatan komunitas otomatis merupakan ide inovatif yang dapat membawa pengalaman menggunakan Hacker News ke level berikutnya. Diharapkan teknologi pencarian yang memahami konteks dan niat, melampaui sekadar pencocokan kata kunci, akan makin luas diadopsi oleh pengguna umum.
  • Kunci ke depan tampaknya adalah membangun pipeline pemrosesan data real-time berskala besar. Solusi untuk mengatasi bottleneck performa seperti edge computing dan in-memory DB perlu dikaji dengan cermat.
  • Mengingat karakteristik data HN yang sangat tepercaya, hasil analisis sentimennya juga tampak cukup bernilai untuk dimanfaatkan. Namun, bias algoritmik tetap perlu diwaspadai, dan pelatihan yang lebih spesifik domain juga layak dipertimbangkan.

1 komentar

 
ggg213 2024-05-10

Judulnya terlewat ya.