Regex থেকে LLM: অসংগঠিত ওয়েব ডেটা সংগ্রহের আমার যাত্রা

আমি একটি দাম তুলনা করার টুল (price comparison tool) তৈরি করার চেষ্টা করেছিলাম। এর জন্য ডজন ডজন ই-কমার্স সাইট থেকে পণ্যের ডেটা প্রয়োজন ছিল।

প্রতিটি সাইট ভিন্ন ভিন্ন HTML স্ট্রাকচার ব্যবহার করত। কিছু সাইট এলোমেলো CSS ক্লাস ব্যবহার করত। অন্যগুলো কন্টেন্ট লোড করার জন্য JavaScript ব্যবহার করত।

আমার প্রথম পরিকল্পনা ছিল Regex এবং BeautifulSoup ব্যবহার করা। এটি দুটি সাইটের জন্য কাজ করেছিল। তারপর সবকিছু ভেঙে পড়ল। একটি সাইট তার লেআউট পরিবর্তন করে ফেলল। অন্য একটি সাইট ডায়নামিক কন্টেন্ট ব্যবহার করা শুরু করল। আমি ডেটা ব্যবহারের চেয়ে স্ক্র্যাপার (scraper) ঠিক করতেই বেশি সময় ব্যয় করছিলাম।

এরপর আমি একটি LLM ব্যবহার করার চেষ্টা করলাম। আমি একটি AI-এর কাছে র (raw) HTML পাঠিয়ে ডেটা চেয়েছিলাম। এটিও ব্যর্থ হলো। আউটপুট ছিল অসামঞ্জস্যপূর্ণ। AI ভুল বা কাল্পনিক মান (hallucinated values) তৈরি করছিল। HTML অনেক বেশি টোকেন ব্যবহার করার কারণে আমার API খরচ বেড়ে গেল।

আমি একটি মধ্যপন্থা খুঁজে পেয়েছি। এখন আমি একটি হাইব্রিড পদ্ধতি (hybrid approach) ব্যবহার করি।

আমার প্রক্রিয়াটি নিচে দেওয়া হলো:

  • HTML প্রি-প্রসেস করা। আমি স্ক্রিপ্ট, স্টাইল এবং নেভিগেশন বারগুলো বাদ দিয়ে দিই। আমি শুধুমাত্র দৃশ্যমান টেক্সট রাখি। এতে টোকেন সংখ্যা কম থাকে।
  • JSON মোড ব্যবহার করা। আমি LLM-কে স্ট্রাকচার্ড ডেটা প্রদান করতে বাধ্য করতে function calling ব্যবহার করি।
  • একটি রিট্রাই লজিক (retry logic) যোগ করা। JSON ব্যর্থ হলে আমি সর্বোচ্চ তিনবার চেষ্টা করি।
  • ফলাফল ক্যাশ (cache) করা। বারবার খরচ এড়াতে আমি URL অনুযায়ী সফলভাবে সংগ্রহ করা ডেটা সেভ করে রাখি।

স্ট্যাটিক এবং সুগঠিত পেজের জন্য Regex এবং BeautifulSoup এখনও সেরা। এগুলো দ্রুত এবং বিনামূল্যে ব্যবহার করা যায়।

অগোছালো বা পরিবর্তনশীল সাইটের জন্য LLM সবচেয়ে ভালো। তবে এগুলো কোনো জাদু নয়। খরচ কমাতে আপনাকে অবশ্যই ইনপুট আগে পরিষ্কার (clean) করে নিতে হবে।

আমার বর্তমান কাজের ধারা (workflow):

• সহজ সাইটগুলোর জন্য একটি লাইটওয়েট পার্সার (lightweight parser) ব্যবহার করা। • অনিশ্চিত বা পরিবর্তনশীল সাইটগুলোর জন্য LLM ব্যবহার করা। • প্রতিবার ডেটা সংগ্রহের খরচ পর্যবেক্ষণ করা। • দামগুলো সঠিক কিনা তা নিশ্চিত করতে আউটপুট যাচাই করা।

এই পরিবর্তনের ফলে আমি এক দিন সময় ব্যয় না করে মাত্র এক ঘণ্টার মধ্যে নতুন স্টোর যুক্ত করতে পারছি।

অগোছালো ওয়েব ডেটার জন্য আপনার কৌশল কী? আপনি কি LLM ব্যবহার করেন নাকি প্রথাগত স্ক্র্যাপার ব্যবহার করেন?

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