𝗙𝗿𝗼𝗺 𝗥𝗲𝗴𝗲𝘅 𝘁𝗼 𝗟𝗟𝗠𝘀: 𝗠𝘆 𝗝𝗼𝘂𝗿𝗻𝗲𝘆 𝗘𝘅𝘁𝗿𝗮𝗰𝘁𝗶𝗻𝗴 𝗪𝗲𝗯 𝗗𝗮𝘁𝗮

ഞാൻ ഒരു പ്രൈസ് കമ്പാരിസൺ ടൂൾ (price comparison tool) നിർമ്മിച്ചു. ഡസൻ കണക്കിന് ഇ-കൊമേഴ്‌സ് സൈറ്റുകളിൽ നിന്ന് ഉൽപ്പന്ന വിവരങ്ങൾ ശേഖരിക്കേണ്ടതുണ്ടായിരുന്നു. ഓരോ സൈറ്റിനും വ്യത്യസ്തമായ ഘടനയായിരുന്നു. ചിലത് റാൻഡം CSS ക്ലാസുകൾ ഉപയോഗിച്ചു. ചിലത് കണ്ടന്റ് ലോഡ് ചെയ്യാൻ JavaScript ഉപയോഗിച്ചു.

ആദ്യം ഞാൻ പരമ്പരാഗതമായ രീതി പരീക്ഷിച്ചു. ഞാൻ Regex-ഉം BeautifulSoup-ഉം ഉപയോഗിച്ചു.

ഇത് രണ്ട് സൈറ്റുകളിൽ പ്രവർത്തിച്ചു. എന്നാൽ, പിന്നീട് ഒരു സൈറ്റ് അതിന്റെ ലേഔട്ട് മാറ്റി. എന്റെ കോഡ് പരാജയപ്പെട്ടു. മറ്റൊരു സൈറ്റ് ഡൈനാമിക് കണ്ടന്റ് (dynamic content) ഉപയോഗിച്ചു. ഡാറ്റ ഉപയോഗിക്കുന്നതിനേക്കാൾ കൂടുതൽ സമയം സ്ക്രാപ്പറുകൾ (scrapers) ശരിയാക്കാൻ എനിക്ക് ചിലവഴിക്കേണ്ടി വന്നു.

പിന്നീട് ഞാൻ AI പരീക്ഷിച്ചു. ഞാൻ റോ HTML (raw HTML) ഒരു LLM-ലേക്ക് നൽകി.

ഫലങ്ങൾ മോശമായിരുന്നു. ഔട്ട്പുട്ട് സ്ഥിരതയില്ലാത്തതായിരുന്നു. ചിലപ്പോൾ എനിക്ക് JSON ലഭിച്ചു, ചിലപ്പോൾ ഖണ്ഡികകൾ (paragraphs) ലഭിച്ചു. മോഡൽ തെറ്റായ വിവരങ്ങൾ നൽകി (hallucinated data). ഞാൻ ഒരുപാട് ടോക്കണുകൾ (tokens) അയച്ചതുകൊണ്ട് ചിലവ് വളരെ കൂടുതലായിരുന്നു.

ഞാൻ ഇതിനിടയിൽ ഒരു മധ്യമാർഗ്ഗം കണ്ടെത്തി. ഇപ്പോൾ ഞാൻ ഒരു ഹൈബ്രിഡ് സമീപനം (hybrid approach) ആണ് ഉപയോഗിക്കുന്നത്.

എന്റെ പ്രക്രിയ ഇതാ:

  • HTML പ്രീപ്രോസസ്സ് ചെയ്യുക. ഞാൻ സ്ക്രിപ്റ്റുകൾ, സ്റ്റൈലുകൾ, നാവിഗേഷൻ ബാറുകൾ എന്നിവ നീക്കം ചെയ്യുന്നു. ദൃശ്യമായ ടെക്സ്റ്റ് മാത്രം ഞാൻ നിലനിർത്തുന്നു. ഇത് ടോക്കൺ എണ്ണവും ചിലവും കുറയ്ക്കുന്നു.
  • JSON മോഡോ ഫംഗ്ഷൻ കോളിംഗോ (function calling) ഉപയോഗിക്കുക. ഇത് LLM-നെ സ്ട്രക്ചർ ചെയ്ത ഡാറ്റ നൽകാൻ നിർബന്ധിക്കുന്നു.
  • ഒരു റീട്രൈ ലോജിക് (retry logic) ഉപയോഗിക്കുക. JSON തെറ്റാണെങ്കിൽ കോഡ് വീണ്ടും ശ്രമിക്കും.
  • റിസൾട്ടുകൾ കാഷെ (cache) ചെയ്യുക. ഒരേ പേജിന് തന്നെ വീണ്ടും പണം നൽകുന്നത് ഒഴിവാക്കാൻ ഓരോ URL-നും വിജയകരമായ എക്സ്ട്രാക്ഷനുകൾ ഞാൻ സേവ് ചെയ്യുന്നു.

സ്റ്റാറ്റിക് ആയതും കൃത്യമായ ഘടനയുള്ളതുമായ സൈറ്റുകൾക്ക് Regex-ഉം BeautifulSoup-ഉം ഇപ്പോഴും മികച്ചതാണ്. അവ വേഗതയുള്ളതും സൗജന്യവുമാണ്.

ക്രമരഹിതവും പ്രവചനാതീതവുമായ സൈറ്റുകൾക്ക് LLM-കൾ ആണ് നല്ലത്. എന്നാൽ ചിലവ് കുറയ്ക്കാൻ നിങ്ങൾ ആദ്യം ഡാറ്റ ക്ലീൻ ചെയ്യണം.

ഞാൻ പഠിച്ച പാഠങ്ങൾ:

  • നിങ്ങളുടെ ചിലവും വിജയ നിരക്കും നിരീക്ഷിക്കുക.
  • ലേറ്റൻസി (latency) ശ്രദ്ധിക്കുക. LLM കോളുകൾ എടുക്കുന്നത് സെക്കൻഡുകളാണ്, മില്ലിസെക്കൻഡുകളല്ല.
  • ഔട്ട്പുട്ട് പരിശോധിക്കുക (validate). വില യഥാർത്ഥ വിലയാണോ എന്ന് പരിശോധിക്കുക.
  • ഒരു ഹൈബ്രിഡ് സിസ്റ്റം ഉപയോഗിക്കുക. എളുപ്പമുള്ള സൈറ്റുകൾക്കായി ഒരു പാഴ്സറും (parser) സങ്കീർണ്ണമായവയ്ക്കായി ഒരു LLM-ഉം ഉപയോഗിക്കുക.

ഈ സംവിധാനം മണിക്കൂറുകളുടെ ജോലി എനിക്ക് ലാഭിച്ചുതരുന്നു. ഒരു മണിക്കൂറിനുള്ളിൽ തന്നെ എനിക്ക് പുതിയൊരു സ്റ്റോർ ചേർക്കാൻ കഴിയും.

നിങ്ങൾ ക്രമരഹിതമായ വെബ് ഡാറ്റ എങ്ങനെ കൈകാര്യം ചെയ്യുന്നു? നിങ്ങൾ പാഴ്സറുകൾക്കാണോ അതോ LLM-കൾക്കാണോ മുൻഗണന നൽകുന്നത്?

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

Optional learning community: https://t.me/GyaanSetuAi