Regex முதல் LLM வரை: இணையத் தரவுகளைப் பிரித்தெடுப்பதில் எனது பயணம்

நான் ஒரு விலை ஒப்பீட்டு கருவியை (price comparison tool) உருவாக்கினேன். டஜன் கணக்கான இ-காமர்ஸ் தளங்களிலிருந்து தயாரிப்புத் தரவுகளைப் பெற வேண்டியிருந்தது. ஒவ்வொரு தளமும் வெவ்வேறு அமைப்பைக் கொண்டிருந்தன. சில தளங்கள் சீரற்ற CSS வகுப்புகளைப் (CSS classes) பயன்படுத்தின. சில தளங்கள் உள்ளடக்கத்தைப் பதிவேற்ற JavaScript பயன்படுத்தின.

முதலில் நான் பாரம்பரிய முறையை முயன்றேன். நான் Regex மற்றும் BeautifulSoup ஆகியவற்றைப் பயன்படுத்தினேன்.

அது இரண்டு தளங்களுக்கு வேலை செய்தது. பின்னர், ஒரு தளம் தனது அமைப்பை (layout) மாற்றியது. எனது குறியீடு (code) செயலிழந்தது. மற்றொரு தளம் டைனமிக் உள்ளடக்கத்தைப் (dynamic content) பயன்படுத்தியது. தரவைப் பயன்படுத்துவதை விட, ஸ்கிராப்பர்களை (scrapers) சரிசெய்வதிலேயே நான் அதிக நேரத்தைச் செலவிட்டேன்.

பிறகு நான் AI-ஐ முயன்றேன். மூல HTML தரவை ஒரு LLM-க்குள் செலுத்தினேன்.

முடிவுகள் மோசமாக இருந்தன. வெளியீடு நிலையற்றதாக இருந்தது. சில நேரங்களில் எனக்கு JSON கிடைத்தது. சில நேரங்களில் பத்திகள் (paragraphs) கிடைத்தன. மாடல் தவறான தரவுகளை உருவாக்கியது (hallucinated data). நான் அதிகப்படியான டோக்கன்களை (tokens) அனுப்பியதால் செலவு மிக அதிகமாக இருந்தது.

நான் ஒரு இடைக்காலத் தீர்வை (middle ground) கண்டறிந்தேன். இப்போது நான் ஒரு கலப்பு அணுகுமுறையை (hybrid approach) பயன்படுத்துகிறேன்.

எனது செயல்முறை இதோ:

  • HTML-ஐ முன்செயலாக்கம் (Preprocess) செய்தல். நான் ஸ்கிரிப்ட்கள் (scripts), ஸ்டைல்கள் (styles) மற்றும் நேவிகேஷன் பட்டுகளை நீக்கிவிடுகிறேன். கண்ணுக்குத் தெரியும் உரையை (visible text) மட்டும் வைத்திருக்கிறேன். இது டோக்கன் எண்ணிக்கையையும் செலவையும் குறைக்கிறது.
  • JSON mode அல்லது function calling பயன்படுத்துதல். இது LLM-ஐ கட்டமைக்கப்பட்ட தரவை (structured data) வழங்கத் தூண்டுகிறது.
  • ஒரு retry logic-ஐப் பயன்படுத்துதல். JSON தவறாக இருந்தால், குறியீடு மீண்டும் முயற்சிக்கும்.
  • முடிவுகளைச் சேமித்து வைத்தல் (Cache results). ஒரே பக்கத்திற்காகத் திரும்பத் திரும்பப் பணம் செலுத்துவதைத் தவிர்க்க, ஒவ்வொரு URL-க்கும் வெற்றிகரமாகப் பிரித்தெடுக்கப்பட்ட தரவைச் சேமிக்கிறேன்.

நிலையான மற்றும் நன்கு கட்டமைக்கப்பட்ட தளங்களுக்கு Regex மற்றும் BeautifulSoup இப்போதும் சிறந்தவை. அவை வேகமானவை மற்றும் இலவசமானவை.

குழப்பமான மற்றும் கணிக்க முடியாத தளங்களுக்கு LLM-கள் சிறந்தவை. ஆனால் செலவைக் குறைக்க நீங்கள் முதலில் தரவைச் சுத்தப்படுத்த வேண்டும்.

நான் கற்றுக்கொண்ட பாடங்கள்:

  • உங்கள் செலவுகள் மற்றும் வெற்றி விகிதங்களைக் கண்காணிக்கவும்.
  • உங்கள் தாமதத்தைக் (latency) கவனியுங்கள். LLM அழைப்புகள் மில்லி விநாடிகள் அல்ல, விநாடிகள் எடுத்துக்கொள்ளும்.
  • வெளியீட்டைச் சரிபார்க்கவும் (Validate). விலை உண்மையான விலையைப் போலவே இருக்கிறதா என்று பார்க்கவும்.
  • ஒரு கலப்பு அமைப்பைப் (hybrid system) பயன்படுத்துங்கள். எளிமையான தளங்களுக்கு ஒரு parser-ஐயும், குழப்பமான தளங்களுக்கு LLM-ஐயும் பயன்படுத்துங்கள்.

இந்த அமைப்பு எனக்கு பல மணிநேர வேலையைச் சேமிக்கிறது. ஒரு மணி நேரத்திற்கும் குறைவான நேரத்தில் என்னால் ஒரு புதிய கடையைச் சேர்க்க முடியும்.

குழப்பமான இணையத் தரவுகளை நீங்கள் எவ்வாறு கையாளுகிறீர்கள்? நீங்கள் parsers-ஐ விரும்புகிறீர்களா அல்லது LLM-களை விரும்புகிறீர்களா?

ஆதாரம்: https://dev.to/__c1b9e06dc90a7e0a676b/from-regex-to-llms-my-journey-extracting-unstructured-web-data-5gmh

விருப்பமான கற்றல் சமூகம்: https://t.me/GyaanSetuAi