Regex-ൽ നിന്ന് LLM-കളിലേക്ക്: അൺസ്ട്രക്ചേർഡ് വെബ് ഡാറ്റ വേർതിരിച്ചെടുക്കുന്നതിലെ എന്റെ യാത്ര

ഒരു പ്രൈസ് കമ്പാരിസൺ ടൂൾ നിർമ്മിക്കാൻ ഞാൻ ശ്രമിച്ചു. ഡസൻ കണക്കിന് ഇ-കൊമേഴ്‌സ് സൈറ്റുകളിൽ നിന്നുള്ള ഉൽപ്പന്ന വിവരങ്ങൾ അതിന് ആവശ്യമായിരുന്നു.

ഓരോ സൈറ്റും വ്യത്യസ്തമായ HTML സ്ട്രക്ചറുകളാണ് ഉപയോഗിച്ചിരുന്നത്. ചിലത് ക്രമരഹിതമായ CSS ക്ലാസുകൾ ഉപയോഗിച്ചു. മറ്റു ചിലത് കണ്ടന്റ് ലോഡ് ചെയ്യാൻ JavaScript ഉപയോഗിച്ചു.

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

അടുത്തതായി ഞാൻ ഒരു LLM ഉപയോഗിക്കാൻ ശ്രമിച്ചു. ഞാൻ റോ (raw) HTML ഒരു AI-ക്ക് അയച്ചു കൊടുക്കുകയും ഡാറ്റ ആവശ്യപ്പെടുകയും ചെയ്തു. ഇതും പരാജയപ്പെട്ടു. ഔട്ട്‌പുട്ട് സ്ഥിരതയില്ലാത്തതായിരുന്നു. AI തെറ്റായ വിവരങ്ങൾ (hallucinated values) നൽകി. HTML ഉപയോഗിക്കുമ്പോൾ ടോക്കണുകൾ (tokens) കൂടുതലായി ഉപയോഗിക്കുന്നതിനാൽ എന്റെ API ചിലവ് വർദ്ധിച്ചു.

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

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

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

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

ക്രമരഹിതമായതോ മാറിക്കൊണ്ടിരിക്കുന്നതോ ആയ സൈറ്റുകൾക്ക് LLM-കളാണ് ഏറ്റവും അനുയോജ്യം. അവ മാന്ത്രികവിദ്യയല്ല. പണം ലാഭിക്കാൻ നിങ്ങൾ ആദ്യം ഇൻപുട്ട് ക്ലീൻ ചെയ്യണം.

എന്റെ നിലവിലെ വർക്ക്ഫ്ലോ (workflow):

• എളുപ്പമുള്ള സൈറ്റുകൾക്കായി ഒരു ലൈറ്റ്വെയ്റ്റ് പാഴ്സർ (lightweight parser) ഉപയോഗിക്കുക. • പ്രവചനാതീതമായ സൈറ്റുകൾക്കായി ഒരു LLM ഉപയോഗിക്കുക. • ഓരോ എക്സ്ട്രാക്ഷനും വരുന്ന ചിലവ് നിരീക്ഷിക്കുക. • വിലകൾ കൃത്യമാണെന്ന് ഉറപ്പാക്കാൻ ഔട്ട്‌പുട്ട് പരിശോധിക്കുക.

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

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

സ്രോതസ്സ്: https://dev.to/__c1b9e06dc90a7e0a676b/from-regex-to-llms-my-journey-extracting-unstructured-web-data-5gmh