Tento repozitář obsahuje kód, data a prezentaci z mé semestrální práce z předmětu NI-HCM na ČVUT FIT.
TL;DR semestrální práce:
- Stáhnout články z vybraných webů (z volebního období pro volby do PS ČR 2025)
- Analyzovat jejich obsah (AI/LLM) - na co mají články pozitiní názor a na co naopak negativní
- Udělat statistiku
Celý kód je ve složce src/ + ve skriptu main.py. Kód (main.py) spustí scrapery, které extrahují články z vybraných webů (a z vybraného časového úseku), pomocí Google AI ananalyzuje narativy ze stažených článků, pročistí získaná data a zapíše do souboru. S finálními daty je pak pracováno uvnitř graphs.ipynb.
Jedna z užitečných funkcí kódu je cachování - vzhledem k množství dat je cachování prakticky nutnost. Kód téměř všechny výsledky (data ze scraperů a z LLM analýz) ukládá průběžně na disk a při dotazu na stejný objekt vrátí již v minulosti získané výsledky.
Pro použití kódu v budoucnu / na jiné učely bude nejspíše potřeba:
- Přidat scraper:
- Vytvořit novou podtřídu
Scraper(viz existující scrapery ve složcesrc/scrapers) - Případně přidat scraper do funkce
get_all_scrapers()vsrc/scrapers/__init__.py
- Vytvořit novou podtřídu
- Upravit prompt:
- Upravit proměnnou
SYSTEM_PROMPTa tříduSingleArticleAnalysisOutputvsrc/analyzer.py - V závislosti na velikosti úprav bude možná potřeba mírně upravit i ostatní funkce v souboru
- Pozor na vhodnost promptu - osobně jsem tuto část pokazil a je dobré LLMku mnohem přesněji říct, co má být výstupem (např. jazyk výstupu)
- Upravit proměnnou
- Nastavit
API_KEYvsrc/analyzer.py- Google má free-tier verze, viz https://aistudio.google.com/api-keys
- Vylepšit/Upravit slučování klíčů, viz
src/key_normalization.py
Data získaná v rámci semestrální práce jsou poskytunuta v archivu data.zip. Archiv obsahuje jak "cache" (tzn. data extrahováná přes scrapery (~125MB) a nezpracované výsledky analýz), tak i výsledná profiltrovaná a zpracovaná data (processed.json (<1MB)).
Zdrojový kód prezentace je ve složce presentation/. Prezentaci možno zobrazit online zde.