7 पॉइंट द्वारा GN⁺ 2024-09-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • OpenAI के नए structured output फीचर का उपयोग करके AI-सहायित वेब स्क्रैपर बनाने के अनुभव का सारांश देने वाला लेख

GPT-4o से डेटा स्क्रैप करने के लिए कहना

  • पहला प्रयोग GPT-4o से HTML string में से डेटा निकालने के लिए कहने का था
  • structured output सेट करने के लिए Pydantic model का उपयोग किया गया
    from typing import List, Dict  
    class ParsedColumn(BaseModel):  
        name: str  
        values: List[str]  
    
    class ParsedTable(BaseModel):  
        name: str  
        columns: List[ParsedColumn]  
    
  • system prompt इस प्रकार था:

    आप वेब स्क्रैपिंग विशेषज्ञ हैं। आपको HTML table की सामग्री लेकर structured data निकालना है

जटिल टेबल को पार्स करना

  • सरल टेबल पर प्रयोग के बाद, Weather.com के 10-दिवसीय मौसम पूर्वानुमान जैसे जटिल टेबल का परीक्षण किया गया
  • GPT-4o ने Day/Night कॉलम जोड़कर डेटा को सटीक रूप से पार्स किया
  • Condition कॉलम वेबसाइट पर दिखाई नहीं दे रहा था, इसलिए पहले इसे hallucination समझा गया, लेकिन source code की जाँच करने पर पता चला कि वह टैग वास्तव में मौजूद था

merged rows मॉडल को बिगाड़ देती हैं

  • Wikipedia की एक सरल टेबल (Human Development Index) का परीक्षण किया गया, लेकिन merged rows की वजह से मॉडल विफल रहा
  • system prompt को बदलकर देखा गया, लेकिन इसका कोई असर नहीं हुआ

GPT-4o से XPath लौटाने के लिए कहना

  • OpenAI API कॉल की लागत कम करने के लिए, parsed data के बजाय XPath लौटाने के लिए कहा गया
  • लेकिन मॉडल अक्सर गलत XPath लौटाता था या डेटा लौटाने में विफल रहता था

दोनों तरीकों को मिलाना

  • डेटा निकालने के बाद, उसे संदर्भ के रूप में इस्तेमाल करके XPath माँगने वाला तरीका आज़माया गया
  • इस तरीके ने बेहतर परिणाम दिए, लेकिन images के text में बदल जाने की समस्या आई

GPT-4o बहुत महंगा है

  • GPT-4o का उपयोग करके स्क्रैपिंग करना महंगा पड़ता है
  • HTML string से अनावश्यक डेटा हटाने वाली cleanup logic जोड़कर लागत घटाई गई

निष्कर्ष और डेमो

  • GPT-4o की data extraction quality ने चकित किया, लेकिन लागत की समस्या ने निराश किया
  • Streamlit का उपयोग करके एक सरल डेमो दिया गया
  • आगे और प्रयोगों के माध्यम से सुधार की काफी गुंजाइश है

GN⁺ का सार

  • यह लेख AI का उपयोग करने वाली वेब स्क्रैपिंग की संभावनाओं और सीमाओं की पड़ताल करता है
  • यह दिखाता है कि GPT-4o के structured output फीचर का उपयोग करके जटिल टेबल डेटा को सटीक रूप से निकाला जा सकता है
  • लागत संबंधी समस्याएँ और कुछ तकनीकी सीमाएँ मौजूद हैं, लेकिन AI-सहायित वेब स्क्रैपिंग टूल्स की संभावनाएँ स्पष्ट दिखती हैं
  • समान सुविधाएँ देने वाले अन्य प्रोजेक्ट्स में BeautifulSoup, Scrapy आदि शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-09-03
Hacker News की राय
  • HTML को किसी सरल फ़ॉर्मैट (जैसे markdown) में बदलकर फिर LLM को देना सफल रहा

    • Extractus और dom-to-semantic-markdown इस्तेमाल करके देखा गया
    • अंदरूनी तौर पर Apify और Firecrawl का उपयोग करके Magic Loops को cloud में चलाया गया
    • Chrome Extension में dom-to-semantic-markdown का उपयोग किया जाता है
    • user support flow के ज़रिए specific elements निकालने के तरीकों की पड़ताल की जा रही है
    • समस्या को सरल बनाकर GPT-4o mini के साथ भी सफलता मिली
  • structured content (जैसे item lists, simple tables) के लिए LLM की ज़रूरत नहीं होती

    • web scraper का शुरुआती version AI से बनाया गया था, लेकिन element attributes और position-based heuristics ज़्यादा तेज, सस्ते और सटीक निकले
    • ज़्यादातर websites पर non-AI approach बहुत अच्छी तरह काम करती है
    • यह ज़रूर जाँचना चाहिए कि AI सच में चाहिए भी या नहीं
  • यह हैरानी की बात है कि पोस्ट के लेखक ने 99% काम पूरा कर लिया, लेकिन बाकी 1% के लिए ollama डाउनलोड करके टेस्ट नहीं किया

    • 7B या 30B model इस मामले में अच्छी तरह काम कर सकते हैं
    • GPT-4o की ज़रूरत नहीं है
  • page का screenshot लेकर, ज़रूरी हिस्से को crop करके GPT को देने का तरीका इस्तेमाल किया गया

    • अलग-अलग vendors की pricing compare करने के लिए जब manual काम करना पड़े, तब यह उपयोगी है
    • यह महँगा पड़ सकता है, लेकिन असली इंसान से सस्ता है और इंसान को ज़्यादा meaningful काम करने देता है
  • OpenAI ने हाल ही में Batch API जारी की है

    • सारे prompts तैयार करने के बाद उन्हें batch में चलाया जा सकता है
    • लागत आधी रह जाती है
    • non-realtime applications के लिए उपयोगी है
  • HTML example देकर beautifulsoup code snippet माँगने का तरीका असरदार रहा

    • जिस structure को scrape करना है, वह एक जैसा बना रहता है
    • actual parsing के लिए LLM का उपयोग overkill है और इससे नतीजे बिगड़ने का जोखिम है
  • यह जिज्ञासा है कि क्या कोई "html reducer" मौजूद है

    • page source का 90% हिस्सा बेकार tokens होता है
    • अगर dom parser का उपयोग करके सिर्फ text वाले nodes रखे जाएँ, तो काफ़ी बचत हो सकती है
    • readability का उपयोग किया जाता है, लेकिन JS-heavy websites पर इसकी quality गिर जाती है
  • GPT-4o से सीधे scraping कराने के बजाय GPT-4o से एक simple web scraper script लिखवाई जा सकती है

    • समस्या आने पर prompt loop का उपयोग किया जाता है
    • constraint solver बनाकर चलाना ज़्यादा efficient है
  • Kadoa में AI automation web scraping पर काम चल रहा है

    • शुरुआत में GPT-3 का उपयोग किया गया था, लेकिन बाद में cost-effective solution विकसित किया गया
    • CSS selector या XPath extraction code generate करने वाले codegen का उपयोग किया जाता है
    • छोटे LLM का उपयोग करके data को साफ़ किया जाता है और उसे मनचाहे format में map किया जाता है
    • data quality का आकलन करने के लिए LLM को judge की तरह इस्तेमाल किया जाता है
    • पारंपरिक ETL engineering तरीकों को छोटे LLM steps के साथ जोड़ा जाता है
  • एक classical music database बनाया जा रहा है

    • ChatGPT का उपयोग करके Wikipedia से event lists निकाली गईं
    • chatgpt-mini का उपयोग करके लागत घटाई गई
    • BeautifulSoup(html).text का उपयोग करके token count कम किया गया
    • 10,000 pages scrape करते समय HTML देना और Python code लिखवाना ज़्यादा efficient था
    • Pandas का from_html feature उपयोगी है, लेकिन सभी tables <table> tag का उपयोग नहीं करतीं