Regex ನಿಂದ LLM ಗಳವರೆಗೆ: ವೆಬ್ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯುವಲ್ಲಿ ನನ್ನ ಪ್ರಯಾಣ

ನಾನು ಬೆಲೆ ಹೋಲಿಕೆ ಸಾಧನವನ್ನು (price comparison tool) ನಿರ್ಮಿಸಿದೆ. ಡಜನ್‌ಗಟ್ಟಲೆ ಇ-ಕಾಮರ್ಸ್ ಸೈಟ್‌ಗಳಿಂದ ಉತ್ಪನ್ನದ ಡೇಟಾವನ್ನು ಪಡೆಯಬೇಕಾಗಿತ್ತು. ಪ್ರತಿಯೊಂದು ಸೈಟ್ ವಿಭಿನ್ನ ರಚನೆಯನ್ನು ಹೊಂದಿತ್ತು. ಕೆಲವು ಸೈಟ್‌ಗಳು ಯಾದೃಚ್ಛಿಕ CSS classes ಬಳಸುತ್ತಿದ್ದವು. ಕೆಲವು ಸೈಟ್‌ಗಳು ಕಂಟೆಂಟ್ ಲೋಡ್ ಮಾಡಲು JavaScript ಬಳಸುತ್ತಿದ್ದವು.

ನಾನು ಮೊದಲು ಸಾಂಪ್ರದಾಯಿಕ ವಿಧಾನವನ್ನು ಪ್ರಯತ್ನಿಸಿದೆ. ನಾನು Regex ಮತ್ತು BeautifulSoup ಬಳಸಿದೆ.

ಇದು ಎರಡು ಸೈಟ್‌ಗಳಿಗೆ ಕೆಲಸ ಮಾಡಿತು. ನಂತರ, ಒಂದು ಸೈಟ್ ತನ್ನ ಲೇಔಟ್ ಬದಲಾಯಿಸಿತು. ನನ್ನ ಕೋಡ್ ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿತು. ಮತ್ತೊಂದು ಸೈಟ್ ಡೈನಾಮಿಕ್ ಕಂಟೆಂಟ್ ಬಳಸುತ್ತಿತ್ತು. ಡೇಟಾವನ್ನು ಬಳಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಸ್ಕ್ರೇಪರ್‌ಗಳನ್ನು (scrapers) ಸರಿಪಡಿಸಲು ನಾನು ಹೆಚ್ಚು ಸಮಯ ವ್ಯಯಿಸಿದೆ.

ನಂತರ ನಾನು AI ಅನ್ನು ಪ್ರಯತ್ನಿಸಿದೆ. ನಾನು ರ (raw) HTML ಅನ್ನು LLM ಗೆ ನೀಡಿದೆ.

ಫಲಿತಾಂಶಗಳು ಕೆಟ್ಟದಾಗಿದ್ದವು. ಔಟ್‌ಪುಟ್ ಅಸ್ಥಿರವಾಗಿತ್ತು. ಕೆಲವೊಮ್ಮೆ ನನಗೆ JSON ಸಿಗುತ್ತಿತ್ತು. ಕೆಲವೊಮ್ಮೆ ಪ್ಯಾರಾಗ್ರಾಫ್‌ಗಳು ಸಿಗುತ್ತಿದ್ದವು. ಮಾಡೆಲ್ ಡೇಟಾವನ್ನು ಹ್ಯಾಲ್ಯುಸಿನೇಟ್ (hallucinated) ಮಾಡುತ್ತಿತ್ತು. ನಾನು ಅತಿಯಾದ ಟೋಕನ್‌ಗಳನ್ನು ಕಳುಹಿಸಿದ್ದರಿಂದ ವೆಚ್ಚವು ತುಂಬಾ ಹೆಚ್ಚಾಗಿತ್ತು.

ನಾನು ಮಧ್ಯಮ ಮಾರ್ಗವನ್ನು ಕಂಡುಕೊಂಡೆ. ಈಗ ನಾನು ಹೈಬ್ರಿಡ್ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತಿದ್ದೇನೆ.

ನನ್ನ ಪ್ರಕ್ರಿಯೆ ಇಲ್ಲಿದೆ:

  • HTML ಅನ್ನು ಪ್ರಿ-ಪ್ರೊಸೆಸ್ (Preprocess) ಮಾಡಿ. ನಾನು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು, ಸ್ಟೈಲ್‌ಗಳು ಮತ್ತು ನ್ಯಾವಿಗೇಷನ್ ಬಾರ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇನೆ. ನಾನು ಕೇವಲ ಕಾಣಿಸುವ ಪಠ್ಯವನ್ನು ಮಾತ್ರ ಇರಿಸಿಕೊಳ್ಳುತ್ತೇನೆ. ಇದು ಟೋಕನ್ ಸಂಖ್ಯೆ ಮತ್ತು ವೆಚ್ಚವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
  • JSON mode ಅಥವಾ function calling ಬಳಸಿ. ಇದು LLM ಅನ್ನು ರಚನಾತ್ಮಕ ಡೇಟಾವನ್ನು (structured data) ನೀಡುವಂತೆ ಮಾಡುತ್ತದೆ.
  • 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