Mengekstrak daftar rekomendasi buku Hacker News dengan ChatGPT API
(blog.reyem.dev)- 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
- Dari daftar 50 besar, buku yang paling sering disebut adalah sebagai berikut
- Structure and Interpretation of Computer Programs: Abelson and Sussman, 376 kali
- Gödel, Escher, Bach: Douglas Hofstadter, 365 kali
- How to Win Friends and Influence People: Dale Carnegie, 292 kali
- The C Programming Language: Brian Kernighan, Dennis Ritchie, 284 kali
- Dune: Frank Herbert, 261 kali
- Di peringkat atas tidak hanya ada buku teknis, tetapi juga novel, filsafat, psikologi, sejarah, dan buku terkait startup
- Thinking, Fast and Slow: 244 kali
- The Pragmatic Programmer: 203 kali
- Designing Data-Intensive Applications: 153 kali
- Clean Code: 106 kali
- The Elements of Computing Systems: 104 kali
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, danlink - 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,
titledikosongkan - 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
matchmemuat sebagian komentar tempat buku berhasil diidentifikasi
- Kolom
- 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
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
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
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
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
Saya sedang membacanya sekarang, dan lampu biasanya sudah padam sebelum saya melewati lebih dari 3–4 halaman, jadi butuh waktu sangat lama
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
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
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
Saya punya beberapa jilid, tetapi itu hadiah, dan saya belum pernah membacanya. Jadi tidak terlalu mengejutkan kalau tidak terlihat di 5 besar
Saya tidak mengerti mengapa ChatGPT diperlukan. Algolia dan analisis data saja mestinya sudah cukup; apa pekerjaan baru dan sulit di sini?
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
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?
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
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
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
Kenyataannya, dengan teknologi membosankan sulit mendapat perhatian dan partisipasi
Mempelajari cara menerapkan alat baru pada jenis pekerjaan lama juga berguna dan membuka wawasan