ChatGPT API ile Hacker News kitap öneri listesini çıkarmak
(blog.reyem.dev)- HN kitap öneri başlıklarına dağılmış yorumları toplayıp, hangi kitapların sık önerildiğini görmek için Chat Completions API ile başlık, yazar ve URL çıkarıldı
- 2023 itibarıyla, başlığında “book” kelimesi ayrı bir sözcük olarak geçen ve harici bağlantı olmayan yaklaşık 200 HN hikâyesi arasından kitap önerisi gibi görünen gönderiler hedeflendi; 57k yorumun işleme maliyeti gpt-3.5-turbo bazında yaklaşık 40 $ oldu
- Sıralamanın üstlerinde Structure and Interpretation of Computer Programs 376 kez, Gödel, Escher, Bach 365 kez, How to Win Friends and Influence People 292 kez gibi HN’de uzun süredir tekrar tekrar anılan kitaplar yer aldı
- Gerçek işlemede hatalı JSON, yalnızca yazar adı geçen yorumlar, aynı başlığı taşıyan farklı kitaplar, bağlantı metninin yanlış algılanması ve temperature 0’da bile değişen belirlenimsizlik kaliteyi sarstı
- Ham GPT çıktıları ve girdi CSV’leri yayımlandı; başlığı küçük harfe çevirme, baştaki “the”yi kaldırma, alt başlığı çıkarma gibi normalleştirme adımlarıyla ad uyumsuzluğundan kaynaklanan eksiklerin azaltılması amaçlandı
HN yorumlarından kitap bilgisini çıkarma yöntemi
- Çalışma, HN’deki kitap öneri başlıklarını okurken en sık önerilen veya anılan kitapları görmek amacıyla başlatıldı
- 2023 itibarıyla HN’de başlığında ayrı bir sözcük olarak “book” geçen ve başka bir sayfaya bağlantı vermeyen neredeyse 200 hikâye vardı
- HN API’den alınan veriler içinden kitap öneri başlığı gibi görünen bir alt küme seçilerek yorum metinleri işlendi
- Her yorumdan Chat Completions API ile şu bilgiler çıkarıldı
- Kitap başlığı
- Yazar
- URL
En çok anılan kitaplar
- İlk 50 kitap listesinde en çok anılan kitaplar şunlardı
- Structure and Interpretation of Computer Programs: Abelson and Sussman, 376 kez
- Gödel, Escher, Bach: Douglas Hofstadter, 365 kez
- How to Win Friends and Influence People: Dale Carnegie, 292 kez
- The C Programming Language: Brian Kernighan, Dennis Ritchie, 284 kez
- Dune: Frank Herbert, 261 kez
- Üst sıralarda yalnızca teknik kitaplar değil, romanlar ile felsefe, psikoloji, tarih ve girişimcilik kitapları da yer aldı
- Thinking, Fast and Slow: 244 kez
- The Pragmatic Programmer: 203 kez
- Designing Data-Intensive Applications: 153 kez
- Clean Code: 106 kez
- The Elements of Computing Systems: 104 kez
Toplama hataları ve veri temizleme
- İlk listede bazı yazar eşleştirme hataları vardı
- Dune’un yazarı Brian Herbert değil, Frank Herbert
- Meditations’ın yazarı Descartes değil, Marcus Aurelius
- Calculus, Michael Spivak’ın kitabı olarak yakalanmıştı; ancak bu toplamada Apostol’un Calculus kitabına ait 14 anma da bulunuyordu
- SQL sorgusunun her başlık için
min(author)yerine en yaygın yazarı döndürecek şekilde değiştirilmesi gerekiyordu - 12 Ekim 2023 güncellemesinde ilk 50 listesi düzeltildi
- Javascript ve Calculus, aynı adı taşıyan birden fazla kitabın karışması nedeniyle hata olarak değerlendirildi
- Javascript: The Good Parts, veri işleme kodunda “javascript” olarak yeniden adlandırılmıştı; ancak aynı başlığa sahip başka kitaplar da vardı
- Yinelenenler temizlendikten sonra bu kalemler ilk 50’den çıktı
ChatGPT API kullanırken ortaya çıkan sınırlamalar
- Geçerli JSON dönmediği durumlar çoğunlukla HN yorumunun “thanks” gibi kısa olduğu veya soru biçiminde yazıldığı anlardı
- Yanıta “I apologize for the confusion…” ya da “You’re welcome!” gibi cümleler de karışabiliyordu
- Prompt, başlığı boş olan yanıtları atabilecek şekilde tasarlandı
- Bu, yalnızca yazarın anıldığı ve belirli bir kitap başlığının bulunmadığı durumları ChatGPT’nin kitap anması olarak dahil etmesi sorununu azaltmaya yönelik bir önlemdi
- 57k yorumun işlenme maliyeti gpt-3.5-turbo API bazında yaklaşık 40 $ oldu
- Temperature 0’a ayarlansa bile GPT sonuçları her çağrıda değişiyordu
- GPT-4’ün belirlenimsizlik örnekleri bilinse de gpt-3.5-turbo, önceki GPT-3 modellerine göre daha büyük değişkenlik gösterdi
- Bağlantılar metinden ayırt edilebiliyordu, ancak HTML etiketlerinin kaldırılıp yalnızca URL’nin bırakılması gerekiyordu
- Aksi takdirde GPT gerçek URL yerine kırpılmış bağlantı metnini alıyordu
JSON çıktı biçimi ve prompt koşulları
- Bir HN yorumu için ChatGPT’nin ürettiği JSON örneği biçim olarak doğruydu, ancak bağlantı dışındaki tüm değerler yanlıştı
- Çıktı
match,title,author,linkalanlarına sahip bir dizi biçimindeydi - Prompt’ta şu koşullar yer aldı
- Belgedeki kitap başlığını ve yazarı belirle
- Başlıkla eşleşen kelimeleri göster
- Kısaltılmış başlıkları aç
- Yalnızca yazar anılıyor ve kitap yoksa
titlealanını boş bırak - Yalnızca öneri isteniyor ama kitap anılmıyorsa boş dizi döndür
- Alt başlığı dahil etme
Açık veri ve başlık normalleştirme
- GPT tarafından üretilen ham veri, başlığa göre sıralanmış ham GPT çıktısıdır
matchsütunu, kitabın tespit edildiği yorumun bir bölümünü içerir
- Kitap başlıklarına normalleştirme işlemi uygulandı
- Küçük harfe çevirme
- Başlıktaki öndeki “the”yi kaldırma
- Alt başlığı kaldırma
- Bu normalleştirme, GPT’nin ürettiği ad uyumsuzlukları nedeniyle en popüler kitap sorgusunda kalemlerin dışarıda kalmasını azaltmaya yönelikti
- Girdi verileri zipped csv format olarak sunuluyor; sıkıştırma açıldığında 24 MB boyutunda bir dosya oluyor
- Tablodaki Amazon URL’lerine eğitim amaçlı Amazon affiliate link eklendi
1 yorum
Hacker News yorumları
ChatGPT birkaçını kaçırmış, muhtemelen daha fazlası da vardır: https://hn.algolia.com/?q=A+non-standard+book+list+for+softw...
Yorumlarda da daha fazlası var: https://news.ycombinator.com/item?id=30651273
Bu web sitesi, Amazon affiliate linkleri ile çok tıklama üretmenin akıllıca bir yolu gibi görünüyor
HN’de Hacker Recommended Books [0a]’yı [0b] sayesinde öğrendim; oradaki kitapları okumaya başladım, birkaçını denedim ve yaklaşık 20 kitap okudum. Deneyim çok iyiydi, çok şey öğrendim ve bazı kitaplar düşünce ufkumu genişletti
Kitap seviyorsanız HN’de basitçe books diye arama yapıp "Ask HN" etiketi [1] ile ya da sadece "books" diye filtrelemenizi şiddetle öneririm. İngilizce kitapları artık neredeyse böyle seçiyorum; teknik olmayan kitaplar için de aynı. İki yılı aşkın süredir böyle yapıyorum ve HN’nin kitap önerilerini gerçekten seviyorum
Kitaplarla ilgili HN başlıklarında yıllar boyunca birikmiş, yüksek kaliteli birçok okuma önerisi var; neredeyse bir altın madeni. Hacker News Books [2] da var, Top Books of All Time bölümü [3] de bakmaya değer
[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
Bu yüzden 15 yüzlü bir zarla sayfayı seçtim, sonra tekrar atıp o sayfadaki kitabı seçtim. Okuyacağım kitap The Very Hungry Caterpillar
Bu siteye yönelik bir eleştiri değil; daha çok, iyi niyetle böyle bir hizmetin varlığını kaydedip sonra unutmuş olmama yakınmam
Ucuz Amazon affiliate link spam’ini kaliteden daha da uzaklaştırmanın yolu: “AI” ile üretmek
Charles Petzold’un Code kitabının ilk 50’ye girememesi şaşırtıcı. Bilgisayarların gerçekte nasıl çalıştığını öğrenmek için en erişilebilir kitaplardan biri
HN’de Code’dan çok bahsedildiğini gördüm; ama okuduğum yorumların bulunduğu bağlantılara doğru örneklemim kaymış olabilir
Şu anda okuyorum; 3-4 sayfadan fazlasını çeviremeden ışıklar sönüyor, bu yüzden çok uzun sürüyor
İkinci yarısı açıkçası zordu. Çünkü “anlamış” olsam da ilk yarıyı doğru düzgün ezberlememiştim
Yine de 5 yaşındaki birine anlatır gibi öğretme yaklaşımını seviyorum. Günümüzde insanlar temelleri özünde yeterince karmaşık şeyler olarak görmeyip üstünden geçme eğiliminde
Knuth’un kitabının ilk 5’te olmaması da şaşırtıcı; Descartes’ın Meditations’ının yer alması ise çok şaşırtıcı. Fransa’da bile artık kimsenin okumadığı bir kitap olduğundan, HN’deki meditasyonla ilgili yazılarla karışmış bir sonuç gibi görünüyor
Ayrıca Dune’u Franck Herbert değil, Frank Herbert yazdı. Bu yazıya inanmak zor; LLM’ler yaygınlaştıktan sonra internete konan neredeyse hiçbir şeye inanmak zorlaştı
Mecra ne olursa olsun, herhangi bir yayında verinin ve yöntemin bütünlüğünü her zaman doğrulamak gerekiyordu. Yazarın ve okurun sorumluluğu LLM öncesi ve sonrası değişmedi. LLM’lerden önce doğal olarak inanıyorduysanız, inanmamalıydınız; LLM’lerden sonra da güvenilir bir yazara güvenemiyorsanız, bu da bir sorun
Bende birkaç cilt var ama hediye gelmişti; hiç okumadım. Bu yüzden ilk 5’te görünmemesi pek şaşırtıcı değil
ChatGPT’ye neden ihtiyaç olduğunu anlamıyorum. Algolia ve veri analizi yeterli olurdu; burada yeni ve zor olan iş neydi?
HN kitap önerilerinin yararlı olmasının nedeni aslında bunun tersi. Aşağıdaki öneri tablosuna giremeyen yorumlarda adını ilk kez duyduğum kitap önerileri var ve değerli olan da bu. Popüler seçenekleri toplayan bu liste çoğunlukla tahmin edilebilir
“Kitap önerisi istiyorum” gönderilerini deşerseniz, en altlara yakın yerlerde gerçekten müthiş öneriler bulabilirsiniz
How to Win Friends and Influence People’ı en sevdiği ya da kendisini en çok etkileyen kitaplardan biri olarak sayan birini tehlike işareti olarak gören başka kimse var mı?
Zaten bir arkadaş grubunuz varsa ve onu sürdürmek konusunda kaygınız yoksa, kitaptaki şeylerin neredeyse tamamını biliyor olmanız muhtemel. Hep yalnız büyümüş biri olarak bu kitabın tavsiyeleri benim için gerçekten faydalıydı. 10 yaşındayken öğrenmiş olmam gereken ama öğrenemediğim sosyal becerilerin bir özeti gibiydi
Bu kitabı anan birinde görebileceğim tek “tehlike işareti”, benim gibi geçmişte bir noktada sosyal açıdan çok beceriksiz olmuş olma ihtimalinin yüksek olmasıdır. Belki hâlâ öyledir ama en azından iyileştirmeye çalışıyordur
Çevremdeki çoğu kişinin bu kitaba ihtiyacı olmayacaktır; hatta belki biraz aptalca bile gelebilir. Ama benim için bir dönüm noktasıydı ve HN’de benzer deneyim yaşamış çok kişi olduğunu düşünüyorum
Listedeki Meditations, sayfanın altındaki ham verilere bakınca Descartes’ın “Meditations on First Philosophy”sinden ziyade Marcus Aurelius’un eserine işaret ediyor gibi görünüyor
Bu sadece kısmi bir kontrol, tam bir tarama değil. Ham verilerde Descartes’tan söz edilen çok sayıda yer de var ama genelde başka bir eserle ilgili. İlginç bir hata olarak görüyorum
Bugünlerde kendimize sormaya değecek, giderek daha iyi hale gelen soru şu: Bunu LLM’leri doğrudan kullanmadan, hatta makine öğrenmesi olmadan nasıl yapabiliriz? Ardından ikinci adım olarak, üretici araçların ya da makine öğrenmesinin potansiyel desteğinin bu çözümü nasıl iyileştirebileceğini sorabiliriz
Gerçek şu ki sıkıcı teknolojilerle ilgi ve katılım elde etmek zor
Eski tip işlere yeni araçları nasıl uygulayacağını öğrenmek de faydalı ve ufuk açıcı