7 puan yazan GN⁺ 2024-09-03 | 1 yorum | WhatsApp'ta paylaş
  • OpenAI'nin yeni yapılandırılmış çıktı özelliğini kullanarak yapay zeka destekli bir web scraper geliştirme deneyimini özetleyen yazı

GPT-4o'dan veri scrape etmesini istemek

  • İlk deney, GPT-4o'dan bir HTML dizgesinden veri çıkarmasını istemek oldu
  • Yapılandırılmış çıktıyı tanımlamak için Pydantic modeli kullanıldı
    from typing import List, Dict  
    class ParsedColumn(BaseModel):  
        name: str  
        values: List[str]  
    
    class ParsedTable(BaseModel):  
        name: str  
        columns: List[ParsedColumn]  
    
  • Sistem prompt'u şöyleydi:

    Sen bir web scraping uzmanısın. HTML tablosunun içeriğini alıp yapılandırılmış veri çıkarman gerekiyor

Karmaşık tabloları parse etmek

  • Basit tablolar denendikten sonra, Weather.com'un 10 günlük hava tahmini gibi daha karmaşık tablolar test edildi
  • GPT-4o, veriyi doğru şekilde parse ederek Day/Night sütununu ekledi
  • Condition sütunu sitede görünmediği için önce halüsinasyon sanıldı, ancak kaynak kod incelendiğinde gerçekten var olan bir etiket olduğu görüldü

Birleştirilmiş satırlar modeli bozuyor

  • Wikipedia'daki basit bir tablo (Human Development Index) test edildi, ancak birleştirilmiş satırlar nedeniyle model başarısız oldu
  • Sistem prompt'u değiştirilse de etkili olmadı

GPT-4o'dan XPath döndürmesini istemek

  • OpenAI API çağrı maliyetini azaltmak için, parse edilmiş veri yerine XPath döndürmesi istendi
  • Ancak model çoğu zaman yanlış XPath döndürdü ya da hiç veri döndürmedi

İki yaklaşımı birleştirmek

  • Veriler çıkarıldıktan sonra, bunları referans alarak XPath isteme yaklaşımı denendi
  • Bu yöntem daha iyi sonuç verdi, ancak görsellerin metne dönüştürülmesi sorunu ortaya çıktı

GPT-4o çok pahalı

  • GPT-4o kullanılarak yapılan scraping yüksek maliyetli
  • HTML dizgesindeki gereksiz verileri kaldıran bir temizleme mantığı eklenerek maliyet düşürüldü

Sonuç ve demo

  • GPT-4o'nun veri çıkarma kalitesi etkileyici bulunsa da maliyet sorunu hayal kırıklığı yarattı
  • Streamlit ile hazırlanmış basit bir demo sunuluyor
  • Daha fazla deneyle geliştirilebilecek çok nokta var

GN⁺ özeti

  • Bu yazı, yapay zeka kullanılan web scraping'in olanaklarını ve sınırlarını inceliyor
  • GPT-4o'nun yapılandırılmış çıktı özelliğiyle karmaşık tablo verilerinin doğru biçimde çıkarılabildiğini gösteriyor
  • Maliyet sorunu ve bazı teknik sınırlamalar olsa da, yapay zeka destekli web scraping araçlarının potansiyelini ortaya koyuyor
  • Benzer işlevler sunan diğer projeler arasında BeautifulSoup ve Scrapy bulunuyor

1 yorum

 
GN⁺ 2024-09-03
Hacker News görüşleri
  • HTML'i basit bir biçime dönüştürdükten sonra (ör. markdown) LLM'e iletmek başarılı oldu

    • Extractus ve dom-to-semantic-markdown denenmiş
    • Magic Loops'u bulutta çalıştırmak için arka planda Apify ve Firecrawl kullanılıyor
    • Chrome Extension'da dom-to-semantic-markdown kullanılıyor
    • Kullanıcı destek akışları üzerinden belirli öğeleri çıkarma yöntemleri araştırılıyor
    • Problem basitleştirilince GPT-4o mini ile de başarı sağlandı
  • Yapılandırılmış içeriklerde (ör. öğe listeleri, basit tablolar) LLM'e gerek yok

    • Web scraper'ın ilk sürümü yapay zeka ile oluşturulmuştu, ancak öğe özellikleri ve konum tabanlı sezgisel yöntemler daha hızlı, daha ucuz ve daha doğru çıktı
    • Çoğu web sitesinde yapay zeka dışı yaklaşım çok iyi çalışıyor
    • Yapay zekanın gerçekten gerekli olup olmadığını kontrol etmek gerekiyor
  • Yazının sahibinin işin %99'unu tamamlayıp kalan %1 için ollama'yı indirip test etmemiş olması şaşırtıcı

    • 7B veya 30B model bu durumda iyi çalışabilir
    • GPT-4o'ya ihtiyaç yok
  • Sayfanın ekran görüntüsünü alıp gereken kısmı kırparak GPT'ye verme yöntemi kullanılıyor

    • Farklı sağlayıcıların fiyatlarını karşılaştırmak için elde yapılması gereken işlerde kullanışlı
    • Pahalı olabilir ama gerçek bir insandan daha ucuz ve insanın daha anlamlı işlere odaklanmasını sağlıyor
  • OpenAI kısa süre önce Batch API'yi duyurdu

    • Tüm prompt'lar hazırlanıp toplu olarak çalıştırılabiliyor
    • Maliyet yarıya iniyor
    • Gerçek zamanlı olmayan uygulamalar için kullanışlı
  • HTML örneği verip beautifulsoup kod parçacığı isteme yöntemi etkili oldu

    • Scrape edilmek istenen yapı aynı kaldı
    • Gerçek parsing için LLM kullanmak aşırıya kaçıyor ve sonuçların bozulması riskini taşıyor
  • Bir "html reducer" olup olmadığı merak ediliyor

    • Sayfa kaynağının %90'ı gereksiz token'lardan oluşuyor
    • DOM parser kullanarak yalnızca metin içeren düğümleri tutmak ciddi tasarruf sağlayabilir
    • readability kullanılıyor ama JS ağırlıklı web sitelerinde kalite düşüyor
  • Doğrudan GPT-4o ile scrape etmek yerine GPT-4o'ya basit bir web scraper script'i yazdırılabilir

    • Sorun çıktığında prompt döngüsü kullanılıyor
    • Kısıt çözücü oluşturup çalıştırmak daha verimli
  • Kadoa'da yapay zeka destekli otomatik web scraping üzerinde çalışılıyor

    • Başlangıçta GPT-3 kullanılmış, ancak maliyet açısından verimli bir çözüm geliştirilmiş
    • CSS seçici veya XPath çıkarma kodu üreten codegen kullanılıyor
    • Veriyi temizlemek ve istenen biçime eşlemek için küçük bir LLM kullanılıyor
    • Veri kalitesini değerlendirmek için LLM jüri olarak kullanılıyor
    • Geleneksel ETL mühendisliği yöntemleri ile küçük LLM adımları birleştiriliyor
  • Klasik müzik veritabanı oluşturuluyor

    • Wikipedia'dan etkinlik listeleri çıkarmak için ChatGPT kullanılıyor
    • Maliyeti düşürmek için chatgpt-mini kullanılıyor
    • Token sayısını azaltmak için BeautifulSoup(html).text kullanılıyor
    • 10.000 sayfa scrape edilirken HTML verip Python kodu yazdırmak daha verimli oldu
    • Pandas'ın from_html özelliği kullanışlı, ancak tüm tablolar <table> etiketi kullanmıyor