Regex ਤੋਂ LLMs ਤੱਕ: ਵੈੱਬ ਡੇਟਾ ਕੱਢਣ ਦਾ ਮੇਰਾ ਸਫ਼ਰ

ਮੈਂ ਇੱਕ ਕੀਮਤ ਤੁਲਨਾ ਕਰਨ ਵਾਲਾ ਟੂਲ (price comparison tool) ਬਣਾਇਆ। ਮੈਨੂੰ ਦਰਜਨਾਂ ਈ-ਕਾਮਰਸ ਸਾਈਟਾਂ ਤੋਂ ਉਤਪਾਦ ਦਾ ਡੇਟਾ ਕੱਢਣ ਦੀ ਲੋੜ ਸੀ। ਹਰ ਸਾਈਟ ਦਾ ਢਾਂਚਾ ਵੱਖਰਾ ਸੀ। ਕੁਝ ਸਾਈਟਾਂ ਰੈਂਡਮ CSS classes ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਸਨ। ਕੁਝ ਕੰਟੈਂਟ ਲੋਡ ਕਰਨ ਲਈ JavaScript ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਸਨ।

ਮੈਂ ਪਹਿਲਾਂ ਰਵਾਇਤੀ ਤਰੀਕਾ ਅਜ਼ਮਾਇਆ। ਮੈਂ Regex ਅਤੇ BeautifulSoup ਦੀ ਵਰਤੋਂ ਕੀਤੀ।

ਇਹ ਦੋ ਸਾਈਟਾਂ ਲਈ ਕੰਮ ਕਰ ਗਿਆ। ਫਿਰ, ਇੱਕ ਸਾਈਟ ਨੇ ਆਪਣਾ ਲੇਆਉਟ (layout) ਬਦਲ ਦਿੱਤਾ। ਮੇਰਾ ਕੋਡ ਖਰਾਬ ਹੋ ਗਿਆ। ਇੱਕ ਹੋਰ ਸਾਈਟ ਨੇ ਡਾਇਨਾਮਿਕ ਕੰਟੈਂਟ ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਮੈਂ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰਨ ਨਾਲੋਂ ਸਕ੍ਰੇਪਰਸ (scrapers) ਨੂੰ ਠੀਕ ਕਰਨ ਵਿੱਚ ਜ਼ਿਆਦਾ ਸਮਾਂ ਬਿਤਾਇਆ।

ਫਿਰ ਮੈਂ AI ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਮੈਂ raw HTML ਨੂੰ ਇੱਕ LLM ਵਿੱਚ ਪਾਇਆ।

ਨਤੀਜੇ ਮਾੜੇ ਸਨ। ਆਉਟਪੁੱਟ ਅਨਿਸ਼ਚਿਤ ਸੀ। ਕਦੇ ਮੈਨੂੰ JSON ਮਿਲਦਾ ਸੀ। ਕਦੇ ਮੈਨੂੰ ਪੈਰੇ (paragraphs) ਮਿਲਦੇ ਸਨ। ਮਾਡਲ ਨੇ ਗਲਤ ਡੇਟਾ (hallucinated data) ਦਿੱਤਾ। ਲਾਗਤ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸੀ ਕਿਉਂਕਿ ਮੈਂ ਬਹੁਤ ਜ਼ਿਆਦਾ tokens ਭੇਜੇ ਸਨ।

ਮੈਨੂੰ ਇੱਕ ਵਿਚਕਾਰਲਾ ਰਸਤਾ ਮਿਲ ਗਿਆ। ਹੁਣ ਮੈਂ ਇੱਕ ਹਾਈਬ੍ਰਿਡ (hybrid) ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹਾਂ।

ਇੱਥੇ ਮੇਰੀ ਪ੍ਰਕਿਰਿਆ ਹੈ:

  • HTML ਨੂੰ ਪ੍ਰੀਪ੍ਰੋਸੈਸ (preprocess) ਕਰੋ। ਮੈਂ scripts, styles, ਅਤੇ navigation bars ਨੂੰ ਹਟਾ ਦਿੰਦਾ ਹਾਂ। ਮੈਂ ਸਿਰਫ਼ ਦਿਖਾਈ ਦੇਣ ਵਾਲਾ ਟੈਕਸਟ ਹੀ ਰੱਖਦਾ ਹਾਂ। ਇਸ ਨਾਲ token ਦੀ ਗਿਣਤੀ ਅਤੇ ਲਾਗਤ ਘਟ ਜਾਂਦੀ ਹੈ।
  • JSON mode ਜਾਂ function calling ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ LLM ਨੂੰ structured data ਵਾਪਸ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ।
  • Retry logic ਦੀ ਵਰਤੋਂ ਕਰੋ। ਜੇਕਰ JSON ਗਲਤ ਹੈ, ਤਾਂ ਕੋਡ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ।
  • ਨਤੀਜਿਆਂ ਨੂੰ ਕੈਸ਼ (cache) ਕਰੋ। ਮੈਂ ਇੱਕੋ ਪੇਜ ਲਈ ਦੋ ਵਾਰ ਭੁਗਤਾਨ ਕਰਨ ਤੋਂ ਬਚਣ ਲਈ ਹਰ URL ਲਈ ਸਫਲ ਐਕਸਟਰੈਕਸ਼ਨ (extractions) ਨੂੰ ਸੇਵ ਕਰਦਾ ਹਾਂ।

ਸਟੈਟਿਕ (static) ਅਤੇ ਚੰਗੀ ਤਰ੍ਹਾਂ ਬਣੇ ਹੋਏ ਢਾਂਚੇ ਵਾਲੀਆਂ ਸਾਈਟਾਂ ਲਈ Regex ਅਤੇ BeautifulSoup ਅਜੇ ਵੀ ਸਭ ਤੋਂ ਵਧੀਆ ਹਨ। ਉਹ ਤੇਜ਼ ਅਤੇ ਮੁਫ਼ਤ ਹਨ।

LLMs ਗੜਬੜ ਵਾਲੀਆਂ ਅਤੇ ਅਨਿਸ਼ਚਿਤ ਸਾਈਟਾਂ ਲਈ ਬਿਹਤਰ ਹਨ। ਪਰ ਲਾਗਤ ਘੱਟ ਰੱਖਣ ਲਈ ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਡੇਟਾ ਸਾਫ਼ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।

ਮੇਰੇ ਸਿੱਖੇ ਹੋਏ ਸਬਕ:

  • ਆਪਣੀ ਲਾਗਤ ਅਤੇ ਸਫਲਤਾ ਦੀ ਦਰ ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ।
  • ਆਪਣੀ ਲੇਟੈਂਸੀ (latency) 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ। LLM ਕਾਲਾਂ ਵਿੱਚ ਸੈਕਿੰਡ ਲੱਗਦੇ ਹਨ, ਮਿਲੀਸੈਕਿੰਡ ਨਹੀਂ।
  • ਆਉਟਪੁੱਟ ਦੀ ਪੁਸ਼ਟੀ (validate) ਕਰੋ। ਚੈੱਕ ਕਰੋ ਕਿ ਕੀ ਕੀਮਤ ਅਸਲੀ ਕੀਮਤ ਵਾਂਗ ਲੱਗ ਰਹੀ ਹੈ।
  • ਹਾਈਬ੍ਰਿਡ ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਸੌਖੀਆਂ ਸਾਈਟਾਂ ਲਈ parser ਅਤੇ ਗੜਬੜ ਵਾਲੀਆਂ ਸਾਈਟਾਂ ਲਈ LLM ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਇਹ ਸੈੱਟਅੱਪ ਮੇਰੇ ਕੰਮ ਦੇ ਕਈ ਘੰਟੇ ਬਚਾਉਂਦਾ ਹੈ। ਮੈਂ ਇੱਕ ਘੰਟੇ ਤੋਂ ਵੀ ਘੱਟ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਨਵਾਂ ਸਟੋਰ ਜੋੜ ਸਕਦਾ ਹਾਂ।

ਤੁਸੀਂ ਗੜਬੜ ਵਾਲੇ ਵੈੱਬ ਡੇਟਾ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਦੇ ਹੋ? ਕੀ ਤੁਸੀਂ parsers ਨੂੰ ਪਸੰਦ ਕਰਦੇ ਹੋ ਜਾਂ LLMs ਨੂੰ?

Source: https://dev.to/__c1b9e06dc90a7e0a676b/from-regex-to-llms-my-journey-extracting-unstructured-web-data-5gmh

ਵਿਕਲਪਿਕ ਲਰਨਿੰਗ ਕਮਿਊਨਿਟੀ: https://t.me/GyaanSetuAi