2 poin oleh GN⁺ 2023-10-05 | 1 komentar | Bagikan ke WhatsApp
  • Dengan mengumpulkan komentar yang tersebar di thread rekomendasi buku HN, penulis mengekstrak judul, penulis, dan URL buku yang sering direkomendasikan menggunakan Chat Completions API
  • Per 2023, targetnya adalah sekitar 200 story HN yang memiliki kata “book” sebagai kata terpisah di judul dan bukan tautan ke situs eksternal, sementara biaya pemrosesan 57 ribu komentar dengan gpt-3.5-turbo sekitar $40
  • Peringkat teratas diisi buku-buku yang sudah lama berulang kali disebut di HN, seperti Structure and Interpretation of Computer Programs sebanyak 376 kali, Gödel, Escher, Bach 365 kali, dan How to Win Friends and Influence People 292 kali
  • Dalam pemrosesan nyata, kualitas terganggu oleh JSON yang salah, komentar yang hanya menyebut penulis, buku berbeda dengan judul yang sama, salah mengenali teks tautan, dan nondeterminisme yang tetap muncul bahkan pada temperature 0
  • Penulis membagikan output mentah GPT dan CSV input, serta mencoba mengurangi data yang terlewat akibat ketidaksesuaian nama lewat normalisasi seperti lowercasing judul, menghapus “the” di awal, dan menghapus subjudul

Cara mengekstrak informasi buku dari komentar HN

  • Proyek ini dimulai saat membaca thread rekomendasi buku di HN dengan tujuan mengetahui buku mana yang paling sering direkomendasikan atau disebut
  • Per 2023, di HN ada hampir 200 story dengan kata “book” sebagai kata terpisah di judul dan tidak menaut ke halaman lain
  • Dari data yang diambil lewat HN API, dipilih subset yang tampak seperti thread rekomendasi buku lalu teks komentarnya diproses
  • Dari tiap komentar, informasi berikut diekstrak memakai Chat Completions API
    • judul buku
    • penulis
    • URL

Buku yang paling sering disebut

Kesalahan agregasi dan pembersihan data

  • Daftar awal memiliki beberapa kesalahan pencocokan penulis
    • Penulis Dune bukan Brian Herbert, melainkan Frank Herbert
    • Meditations bukan karya Descartes, melainkan Marcus Aurelius
    • Calculus terambil sebagai buku karya Michael Spivak, tetapi agregat itu juga mencakup 14 penyebutan Calculus karya Apostol
  • Query SQL perlu diubah agar tidak mengembalikan min(author) untuk tiap judul, melainkan penulis yang paling sering muncul
  • Pada pembaruan 12 Oktober 2023, daftar 50 besar diperbaiki
    • Javascript dan Calculus dinilai keliru karena beberapa buku dengan nama yang sama tercampur
    • Javascript: The Good Parts berubah namanya menjadi “javascript” di kode pemrosesan data, tetapi ada juga buku lain dengan judul yang sama
    • Setelah deduplikasi, item-item tersebut keluar dari 50 besar

Keterbatasan yang terlihat saat memakai ChatGPT API

  • Kasus ketika JSON valid tidak dikembalikan sering terjadi saat komentar HN sangat pendek seperti “thanks” atau berbentuk pertanyaan
    • Kadang respons bercampur dengan kalimat seperti “I apologize for the confusion…” atau “You’re welcome!”
  • Prompt dirancang agar respons dengan judul kosong bisa dibuang
    • Ini untuk mengurangi masalah ketika ChatGPT memasukkan penyebutan penulis saja sebagai penyebutan buku meski tidak ada judul spesifik
  • Biaya memproses 57 ribu komentar dengan API gpt-3.5-turbo sekitar $40
  • Bahkan saat temperature diatur ke 0, hasil GPT tetap berbeda antar pemanggilan
    • Kasus nondeterminisme GPT-4 sudah dikenal, tetapi gpt-3.5-turbo juga menunjukkan variabilitas yang lebih besar dibanding model GPT-3 sebelumnya
  • Tautan bisa diidentifikasi dari teks, tetapi tag HTML harus dihapus dan hanya URL yang disisakan
    • Jika tidak, GPT mengambil teks tautan yang terpotong alih-alih URL sebenarnya

Format output JSON dan syarat prompt

  • Contoh JSON yang dibuat ChatGPT untuk satu komentar HN sesuai secara format, tetapi semua nilainya salah kecuali tautannya
  • Output berbentuk array dengan field match, title, author, dan link
  • Prompt memuat syarat berikut
    • mengidentifikasi judul buku dan penulis dalam dokumen
    • menampilkan kata yang cocok dengan judul
    • memperluas judul singkatan
    • jika hanya penulis yang disebut dan tidak ada buku, title dikosongkan
    • jika hanya meminta rekomendasi tanpa menyebut buku, kembalikan array kosong
    • tidak menyertakan subjudul

Data publik dan normalisasi judul

  • raw data produced by GPT adalah data mentah output GPT yang diurutkan berdasarkan judul
    • Kolom match memuat sebagian komentar tempat buku berhasil diidentifikasi
  • Judul buku dikenai proses normalisasi
    • lowercasing
    • menghapus “the” di awal judul
    • menghapus subjudul
  • Normalisasi ini dimaksudkan untuk mengurangi item yang terlewat dalam query buku teratas akibat ketidaksesuaian nama yang dibuat GPT
  • Data input tersedia dalam zipped csv format, dan setelah diekstrak menjadi file 24 MB
  • URL Amazon di tabel ditambahkan Amazon affiliate link untuk tujuan pembelajaran

1 komentar

 
GN⁺ 2023-10-05
Komentar Hacker News
  • ChatGPT melewatkan beberapa, dan mungkin masih banyak lagi: https://hn.algolia.com/?q=A+non-standard+book+list+for+softw...
    Ada lebih banyak lagi di komentarnya: https://news.ycombinator.com/item?id=30651273
    Situs web ini tampak seperti cara cerdik untuk menghasilkan banyak klik lewat tautan afiliasi Amazon

    • Memangnya masih ada yang menghasilkan uang dari program afiliasi Amazon? Kukira itu sudah tamat sekitar 10 tahun lalu
  • Dari HN saya mengetahui Hacker Recommended Books [0a] lewat [0b], lalu mulai membaca buku-buku di sana; saya mencoba beberapa dan membaca sekitar 20 buku. Pengalamannya sangat bagus, banyak hal baru yang saya pelajari, dan beberapa buku memperluas cara berpikir saya
    Kalau suka buku, saya sangat merekomendasikan mencari books secara sederhana di HN lalu memfilter dengan tag "Ask HN" [1] atau cukup "books". Sekarang saya hampir selalu memilih buku berbahasa Inggris dengan cara ini, termasuk buku non-teknis. Sudah lebih dari 2 tahun saya melakukannya, dan saya benar-benar menyukai rekomendasi buku dari HN
    Thread HN tentang buku menumpuk bacaan berkualitas tinggi selama bertahun-tahun, jadi hampir seperti tambang emas. Ada juga Hacker News Books [2], dan bagian Top Books of All Time [3] juga layak dilihat
    [0a]: https://hacker-recommended-books.vercel.app/category/0/all-t...
    [0b]: https://news.ycombinator.com/item?id=28595967
    [1]: https://hn.algolia.com/?q=Ask+HN+books
    [2]:https://hackernewsbooks.com
    [3]: https://hackernewsbooks.com/top-books-on-hacker-news

    • Hari ini saya memutuskan untuk mulai membaca buku yang direkomendasikan HN. Di tautan [0a], saya memilih 6 bulan terakhir, dan hasil rekomendasinya ada 58 halaman, masing-masing 15 buku per halaman
      Jadi saya memilih halaman dengan dadu bersisi 15, lalu melempar lagi untuk memilih buku di halaman itu. Buku yang akan saya baca adalah The Very Hungry Caterpillar
    • https://news.ycombinator.com/item?id=28595967 ("Show HN: 40k HN comments mentioning books, extracted using deep learning") sangat bagus, dan saya masih menggunakannya secara rutin
    • “Hacker Recommended Books” terlihat sangat berguna, jadi saya hendak menyimpannya sebagai bookmark di akun pinboard saya, tetapi ternyata muncul pesan “sudah disimpan 2 tahun lalu
      Ini bukan kritik terhadap situsnya, lebih seperti keluhan terhadap diri sendiri karena saya menyimpan layanan semacam ini dengan niat baik, lalu tetap melupakannya
  • Cara membuat spam tautan afiliasi Amazon murahan makin jauh dari kualitas: buat saja dengan “AI”

  • Mengejutkan bahwa Code karya Charles Petzold tidak masuk 50 besar. Itu salah satu buku paling mudah didekati untuk mempelajari bagaimana komputer benar-benar bekerja
    Saya sering melihat Code disebut di HN, meski bisa jadi sampelnya bias ke tautan-tuan yang komentarnya saya baca

    • Ini buku fantastis untuk orang yang sulit tidur. Saya tidak menyangka topik menarik seperti dasar-dasar cara kerja komputer bisa dibuat begitu hambar dan membosankan, dan bahwa untuk melakukannya dibutuhkan begitu banyak kata
      Saya sedang membacanya sekarang, dan lampu biasanya sudah padam sebelum saya melewati lebih dari 3–4 halaman, jadi butuh waktu sangat lama
    • Buku itu agak mirip dengan “silakan gambar sisa kudanya”. Buku yang hebat, tetapi di paruh akhir penulis berasumsi bahwa Anda tidak hanya memahami paruh awal, melainkan juga menghafal komponen-komponennya, sehingga penjelasan sisanya baru masuk akal jika semuanya berada dalam working memory
      Paruh akhirnya jujur saja berat. Karena meskipun saya “mengerti”, saya tidak benar-benar menghafal paruh awalnya
      Meski begitu, saya suka pendekatan mengajar seolah menjelaskan kepada anak 5 tahun. Sekarang orang cenderung ingin melewati dasar-dasar dengan asal-asalan, tanpa melihatnya sebagai sesuatu yang pada dasarnya cukup kompleks
    • Saya sangat menyukai buku itu. Ini buku yang saya rekomendasikan kepada orang non-teknis yang ingin tahu teori tentang bagaimana semuanya bekerja
    • Berdasarkan situs saya HNLikes.com, ini adalah tautan Amazon kedua yang paling sering muncul di komentar HN
    • Buku itu ada di paling atas daftar Hacker News All Time Top Books yang dirujuk rito di atas
  • Mengejutkan juga buku Knuth tidak masuk 5 besar, dan sangat mengejutkan ada Meditations karya Descartes. Di Prancis pun sekarang hampir tak ada yang membacanya, jadi mungkin itu hasil yang tercampur dengan tulisan-tulisan HN tentang meditasi
    Selain itu, Dune ditulis bukan oleh Franck Herbert, melainkan Frank Herbert. Sulit memercayai tulisan ini, dan setelah LLM menjadi populer, praktis hampir tidak ada lagi yang bisa dipercaya di internet

    • Tulisan ini menyertakan data mentah yang diberikan GPT sehingga integritas datanya bisa diverifikasi. Dari sudut pandang metodologi, karena itu cukup dapat dipercaya
      Apa pun medianya dan publikasinya, integritas data dan metode memang selalu harus diverifikasi. Tanggung jawab penulis dan pembaca tidak berubah antara sebelum dan sesudah LLM. Kalau sebelum LLM Anda begitu saja percaya, seharusnya tidak begitu; dan kalau setelah LLM Anda tidak bisa memercayai penulis yang layak dipercaya, itu juga masalah
    • Meditations on First Philosophy karya Descartes adalah salah satu buku terpenting dalam sejarah pemikiran Barat. Mengatakan “di Prancis pun sekarang tak ada yang membacanya” mirip dengan mengatakan The Origin of Species tidak relevan karena Anda tidak melihat orang membacanya di London Underground
    • Karya Knuth lebih mirip The Power Broker di bidang perencanaan kota: kanon per bidang, tetapi hanya sedikit orang yang benar-benar membacanya
      Saya punya beberapa jilid, tetapi itu hadiah, dan saya belum pernah membacanya. Jadi tidak terlalu mengejutkan kalau tidak terlihat di 5 besar
    • Nama penulis Meditations salah. Tautannya menuju buku yang benar, tetapi itu Meditations karya Marcus Aurelius
    • Sepertinya pencantuman Descartes itu keliru. Tautannya mengarah ke Marcus Aurelius
  • Saya tidak mengerti mengapa ChatGPT diperlukan. Algolia dan analisis data saja mestinya sudah cukup; apa pekerjaan baru dan sulit di sini?

    • Akan sangat menarik kalau pengguna yang merekomendasikan tiap buku dianalisis berdasarkan komentar mereka untuk melihat kecenderungannya. Misalnya menampilkan persentase seperti “80% orang yang merekomendasikan Ayn Rand cenderung sayap kanan”
  • Justru alasan rekomendasi buku HN berguna adalah kebalikannya. Di komentar-komentar yang tidak mendapat tabel rekomendasi di bagian bawah, ada rekomendasi buku yang baru pertama kali saya dengar, dan di situlah nilainya. Daftar yang mengumpulkan pilihan populer ini sebagian besar bisa ditebak
    Kalau menelusuri tulisan “tolong rekomendasikan buku”, Anda bisa menemukan rekomendasi yang benar-benar bagus di dekat bagian paling bawah

    • Musik juga sama. Pergilah ke tempat orang membicarakan band yang Anda suka, lalu gulir ke bawah sampai melihat nama-nama yang belum pernah Anda dengar
  • Apakah ada orang lain yang merasa itu sinyal bahaya kalau seseorang menyebut How to Win Friends and Influence People sebagai buku favorit atau salah satu buku yang paling berpengaruh bagi mereka?

    • Saya tidak berpikir begitu. Saya sering melihat reaksi seperti itu dari orang yang sebenarnya belum membaca bukunya. Orang mengira buku ini berisi semacam teknik manipulasi, padahal sebenarnya ini panduan yang sangat mendasar untuk membuat dan mempertahankan pertemanan
      Kalau Anda sudah punya kelompok teman dan tidak khawatir mempertahankannya, besar kemungkinan Anda sudah tahu hampir semua yang ada di buku itu. Sebagai orang yang tumbuh selalu menyendiri, nasihat di buku ini benar-benar berguna. Buku itu seperti ringkasan keterampilan sosial yang seharusnya saya pelajari saat umur 10 tahun, tetapi tidak saya dapatkan
      Satu-satunya “sinyal bahaya” dari orang yang menyebut buku ini adalah kemungkinan besar mereka, seperti saya, pernah sangat canggung secara sosial pada suatu titik di masa lalu. Mungkin masih begitu, tetapi setidaknya sedang berusaha membaik
    • Dampaknya besar bagi orang dengan kecemasan sosial, spektrum autisme, atau campuran keduanya. Buku ini mengajari saya cara berbicara dengan orang, dan mengalihkan hidup saya dari kecemasan sosial dan isolasi yang parah menuju kehidupan di mana saya bisa berbicara dan mengenal manusia lain
      Kebanyakan orang di sekitar saya mungkin tidak membutuhkan buku ini, dan mungkin bahkan merasa buku ini agak konyol. Namun bagi saya ini adalah titik balik, dan saya rasa ada banyak orang di HN yang punya pengalaman serupa
    • Tidak. Itu bacaan yang solid tentang perilaku manusia
  • Meditations dalam daftar ini, kalau melihat data mentah di bagian bawah halaman, tampaknya mengacu pada karya Marcus Aurelius, bukan “Meditations on First Philosophy” karya Descartes
    Ini hanya pemeriksaan sebagian, bukan audit menyeluruh. Dalam data mentah memang ada banyak penyebutan Descartes, tetapi umumnya tentang karya lain. Saya melihatnya sebagai kesalahan yang menarik

  • Pertanyaan yang semakin baik untuk diajukan kepada diri sendiri akhir-akhir ini adalah: bagaimana melakukan ini tanpa menggunakan LLM secara langsung, bahkan tanpa machine learning? Lalu sebagai langkah kedua, barulah tanyakan bagaimana bantuan potensial dari alat generatif atau machine learning bisa memperbaiki solusi itu

    • Saya pernah membuat versi seperti ini dengan teknologi membosankan (Postgres, Django, Python). Caranya menghitung berapa kali bukan hanya tautan buku, tetapi juga video YouTube, makalah arXiv, dan sebagainya muncul di komentar HN, lalu melakukan beberapa perhitungan juga terhadap orang yang memposting tautan dan balasan pada tautan tersebut
      Kenyataannya, dengan teknologi membosankan sulit mendapat perhatian dan partisipasi
    • Menurut saya banyak pekerjaan dasar yang dilakukan dengan LLM juga bisa dilakukan tanpa machine learning. Meski begitu, yang menarik adalah belajar melakukan hal-hal seru dengan LLM, dan batas atasnya jauh lebih tinggi daripada metode tradisional
      Mempelajari cara menerapkan alat baru pada jenis pekerjaan lama juga berguna dan membuka wawasan