Přeskočit na obsah

AI v každodenní práci · lekce 7 z 8 · 12 min čtení

Analýza dat a dokumentů

Jak s AI shrnovat dlouhé dokumenty a smlouvy, vytahovat z nich data do tabulek a analyzovat tabulky. Proč má model počítat kódem, a ne „z hlavy“, proč chtít postup, ne jen výsledek, a jak čísla rychle zkontrolovat vzorkem.

Na stole máš čtyřicetistránkovou smlouvu s dodavatelem, kterou je potřeba do zítřka projít. Vedle ní tabulku s dvěma tisíci řádky prodejů, ze které má šéf do pátku dostat „pár čísel a závěrů“. Přesně tohle jsou úlohy, u kterých si lidé od AI slibují nejvíc, a právem: model přečte smlouvu za pár vteřin a s tabulkou umí pracovat rychleji než většina z nás.

Jenže tady chyba nebolí jen esteticky jako u e-mailu. Vynechaná výpovědní lhůta nebo špatně sečtený sloupec se propíše do rozhodnutí. V téhle lekci uvidíš, jak s dokumenty a daty pracovat tak, aby ti AI ušetřila čas a přitom jsi věděl, čemu můžeš věřit.

Shrnutí dlouhých dokumentů

Shrnutí vypadá jako nejbezpečnější úloha: všechno potřebné je přece v dokumentu. Částečně to tak je. Když model pracuje s dodaným textem, halucinuje méně, než když odpovídá z paměti. Shrnutí má ale jednu vlastnost, na kterou se zapomíná: shrnout znamená vybrat. Model rozhoduje, co je důležité, a jeho „důležité“ se nemusí krýt s tvým.

Co se může pokazit

  • Vynechání. Model zařadí, co v podobných dokumentech bývá podstatné. Nestandardní ujednání, které je pro tebe klíčové právě proto, že je nestandardní, se do shrnutí nemusí dostat.
  • Ztraceno uprostřed. Jak víš z lekce Kontextové okno, modely využívají začátek a konec dlouhého textu lépe než jeho střed. U smlouvy je přitom uprostřed často právě to zajímavé: sankce, odpovědnost, výjimky.
  • Doplnění „obvyklého“. Model do shrnutí přidá to, co ve smlouvách tohoto typu bývá, i když ve tvé smlouvě je to jinak. Typicky lhůty, záruky, automatické prodloužení.
  • Ztracené výjimky a zápory. „Dodavatel odpovídá za škodu, s výjimkou…“ se ve shrnutí snadno zkrátí na „dodavatel odpovídá za škodu“. Věta je kratší a úplně jiná.
  • Promíchání stran nebo období. Povinnost odběratele se připíše dodavateli, cena pro druhý rok se uvede jako cena pro první.

Jak to dělat lépe

Řekni, k čemu shrnutí potřebuješ. „Shrň tuhle smlouvu“ dá obecné shrnutí. „Jsem odběratel a rozhoduji, jestli smlouvu podepsat. Vypiš všechno, co nás zavazuje, všechny lhůty a sankce a podmínky ukončení“ dá shrnutí, které ti k něčemu je.

Chtěj odkazy na místo v dokumentu. Ke každému bodu ať model uvede článek nebo stranu, odkud ho vzal, ideálně s doslovnou citací. Doslovnou citaci najdeš v originále přes Ctrl+F za pár vteřin. Tenhle postup doporučuje i Anthropic ve své dokumentaci: u dlouhých dokumentů nejdřív nechat vytáhnout doslovné citace a teprve z nich odvozovat odpověď.

Dlouhé dokumenty rozděl. Místo celé smlouvy najednou se ptej po částech (články 1–5, 6–10…), nebo se ptej cíleně: „Co přesně říká smlouva o ukončení? Cituj.“ Menší kus textu znamená menší riziko, že se něco ztratí uprostřed.

Zeptej se i na to, co v dokumentu není. „Je ve smlouvě ujednání o smluvní pokutě? Pokud ne, napiš výslovně, že není.“ Když model musí výslovně odpovědět „není tam“, je menší šance, že ti chybějící věc tiše doplní z obecných znalostí.

Vytahování dat z dokumentů do tabulek

Druhá velmi užitečná úloha je opačná: z hromady nestrukturovaných dokumentů udělat tabulku. Třicet faktur v PDF do přehledu dodavatel – datum – částka. Padesát životopisů do tabulky s praxí a jazyky. Odpovědi z e-mailů do seznamu požadavků.

Extrakce dat(data extraction)
Vytažení konkrétních údajů (jména, data, částky, kategorie) z textu nebo dokumentu do pevné struktury, typicky tabulky. Model tu nic nevymýšlí ani nehodnotí, jen najde a přepíše, co v dokumentu je.

Pár pravidel, díky kterým extrakce funguje:

  • Přesně urči sloupce a formát. „Datum ve formátu RRRR-MM-DD, částka jako číslo bez měny, měna ve zvláštním sloupci.“ Jak modelu zadat pevnou strukturu výstupu, rozebírá lekce Strukturovaný výstup.
  • Řekni, co dělat, když údaj chybí. „Pokud údaj v dokumentu není, nech buňku prázdnou. Nic neodhaduj.“ Bez toho model občas doplní věrohodnou hodnotu.
  • Přidej sloupec se zdrojem. Název souboru a strana, nebo krátká citace. Při kontrole pak víš, kam se podívat.
  • Zkontroluj počet. Třicet faktur má dát třicet řádků. Když jich je dvacet osm, model dvě vynechal (nebo je spojil), a to je nejčastější chyba u větších dávek.

Tabulky a čísla: proč má model počítat kódem

Teď to nejdůležitější z celé lekce. Když vložíš do chatu tabulku a zeptáš se „jaký je celkový obrat za březen“, může se stát dvojí věc a na výsledku to často nepoznáš.

Varianta A: model „počítá z hlavy“. Tabulku přečte jako text a výsledek napíše tak, jak píše všechno ostatní: odhadem dalšího tokenu. Z lekcí Tokeny a Předpověď dalšího slova víš, proč je to zrádné. Model nevidí číslo 1 287 450 jako hodnotu, ale jako několik kousků textu. A když píše součet, nesčítá: odhaduje, jaká číslice by na tom místě věrohodně následovala. U malých příkladů se trefí, u stovek řádků vyrobí číslo, které vypadá správně.

Varianta B: model napíše a spustí kód. Mnohé AI nástroje dnes umí spouštět kód (code execution). Model napíše krátký program, obvykle v jazyce Python, ten program skutečně načte tvůj soubor a spočítá výsledek. Model pak jen přečte, co program vrátil, a popíše to. Sčítání tady dělá počítač, ne odhad dalšího tokenu.

Spouštění kódu(code execution)
Funkce AI nástroje, kdy model napíše program (typicky v Pythonu) a ten se spustí v izolovaném prostředí. V době psaní ji v ChatGPT najdeš jako analýzu dat (data analysis), v Claudovi jako tvorbu a úpravy souborů; názvy se ale mění. Výpočty pak dělá program, ne jazykový model.

Rozdíl v přesnosti je zásadní, a proto pravidlo: na čísla, na kterých záleží, vždy chtěj výpočet kódem. Napiš to výslovně („spočítej to v Pythonu“, „použij analýzu dat“) a ověř si, že to nástroj opravdu udělal. Poznáš to tak, že v odpovědi je blok s kódem nebo odkaz „zobrazit analýzu“, který můžeš rozbalit. Které nástroje to umí a jak se funkce zapíná, probírá lekce Když nestačí chat.

Vyzkoušej si: jak model vidí text

Napiš cokoli. Každý barevný dílek je jeden token, číslo pod ním je jeho ID ve slovníku modelu.

… tokenů13 slov59 znaků

Načítám tokenizér…

Znak ␣ je mezera, která patří k tokenu. Tokenizér je skutečný (modely GPT-4o od OpenAI); jiné modely dělí text trochu jinak, princip je stejný.

Zkus si v ukázce výše, jak model vidí čísla. Velká čísla se rozpadají na několik tokenů a mezery a desetinné čárky jsou další samostatné kousky. Když z takových útržků má model „z hlavy“ sečíst stovky řádků, není divu, že se plete.

Do hloubkyProč ani kód nezaručí správný výsledek

Spouštění kódu odstraní chyby v samotném počítání. Nechrání ale před chybami v tom, co se počítá. Program udělá přesně to, co mu model napsal, a model ho napsal podle toho, jak pochopil zadání a data. Typické chyby:

  • Špatné načtení souboru. Česká CSV používají často středník jako oddělovač a desetinnou čárku. Program nastavený na anglický formát pak přečte „1 299,50“ jako text, ne číslo, nebo rozdělí sloupec ve špatném místě. Řádky s chybou může tiše vynechat.
  • Špatný sloupec nebo filtr. Model sečte „cena“ místo „cena celkem“, nebo do „března“ započítá i první dubnový den kvůli časovému pásmu.
  • Nevyjasněné definice. Co je „aktivní zákazník“? Počítají se vratky jako záporné tržby, nebo se vynechávají? Program nějakou definici použije vždycky, jen ti ji nemusí říct.
  • Duplicity a chybějící hodnoty. Dvakrát exportovaný řádek se sečte dvakrát, prázdná buňka se počítá jako nula nebo se vynechá.

Proto nestačí, že výsledek spočítal kód. Musíš vědět, jak ho spočítal, a to je téma další části.

Chtěj postup, ne jen výsledek

Číslo samo o sobě nejde zkontrolovat. Postup ano. Ke každé analýze proto chtěj, aby model napsal:

  1. Jak data načetl. Kolik řádků a sloupců našel, jaké jsou názvy sloupců a jaké typy dat (číslo, datum, text). Pokud čekáš 2 000 řádků a model hlásí 1 940, něco se ztratilo.
  2. Co s daty udělal, než začal počítat. Odstranil duplicity? Jak naložil s prázdnými buňkami a vratkami? Převáděl měny?
  3. Jaké definice použil. Co přesně považoval za „tržby“, „měsíc“, „aktivního zákazníka“.
  4. Jaké předpoklady udělal tam, kde zadání nebylo jasné.

Tohle všechno můžeš chtít předem: „Než začneš počítat, popiš, jak rozumíš datům, a zeptej se, pokud je něco nejasné.“ Často tím odhalíš nedorozumění dřív, než z něj vzniknou čísla v prezentaci.

Kontrola čísel vzorkem

Nemusíš přepočítávat všechno. Stačí pár rychlých testů, které odhalí většinu chyb. Říká se tomu kontrola vzorkem (spot check).

  • Celkový součet. Jedno číslo (třeba celkové tržby) si spočítej sám v Excelu funkcí SUMA. Když nesedí, nesedí nic dalšího.
  • Počet řádků. Sedí s tím, kolik jich má soubor?
  • Jeden konkrétní případ ručně. Vyber jednoho zákazníka nebo jeden den a dohledej jeho čísla v tabulce sám.
  • Extrémy. Největší a nejmenší hodnota. Často prozradí chybu v načtení (záporná cena, objednávka na deset milionů).
  • Selský rozum. Rostly tržby o 400 %? Je to možné, nebo je někde chyba? Když výsledek překvapí, je to důvod ověřovat víc, ne méně.
Analýza CSV s prodeji

Situace: máš export z e-shopu prodeje_2025.csv se sloupci datum, číslo objednávky, region, produkt, kusy, cena za kus, stav (dokončeno / vráceno / zrušeno). Šéf chce vědět, který region roste nejrychleji a které produkty táhnou.

Prompt:

V příloze je CSV s prodeji (oddělovač středník, desetinná čárka, ceny v Kč). Prosím:

  1. Načti ho pomocí Pythonu a napiš mi počet řádků, sloupce a jejich datové typy. Upozorni na prázdné hodnoty a duplicitní čísla objednávek.
  2. Tržby počítej jako kusy × cena za kus, jen u objednávek ve stavu „dokončeno“.
  3. Spočítej tržby po regionech a měsících a meziměsíční růst. Vypiš top 5 produktů podle tržeb.
  4. Na konci shrň, jaké předpoklady jsi udělal a co mám ověřit.

Všechny výpočty proveď kódem, ne odhadem.

Na co se v odpovědi podívat:

  • Odpovídá počet načtených řádků souboru? Pokud model hlásí, že sloupec cena za kus je „text“, špatně přečetl desetinnou čárku a výsledky nebudou sedět.
  • Našel duplicitní objednávky? Pokud ano, rozhodni ty, jestli jsou to chyby exportu, nebo skutečné opakované nákupy.
  • Celkové tržby porovnej se součtem v Excelu (se stejným filtrem na „dokončeno“).
  • Jeden region a jeden měsíc spočítej ručně přes filtr.

Kde je hranice: čísla spočítá kód. Ale vysvětlení, proč region roste, model jen odhaduje z toho, co v datech vidí. Napíše třeba „růst je pravděpodobně způsoben sezónností“, a to je hypotéza, ne zjištění. Ber ji jako tip, co prověřit, ne jako závěr do prezentace.

Otevřené odpovědi z dotazníku

Situace: 400 zaměstnanců odpovědělo na otázku „Co by ti nejvíc ulehčilo práci?“ volným textem.

Postup ve dvou krocích:

  1. Kategorizaci dělá model. „Navrhni 6–8 kategorií odpovědí. Pak každou odpověď přiřaď do jedné kategorie a výsledek vrať jako tabulku ID odpovědi – kategorie.“ Tady je jazykový model opravdu silný: chápe, že „věčně padající VPN“ a „pomalé připojení z domu“ patří k sobě.
  2. Počítání dělá kód. Četnosti kategorií ať spočítá program z té tabulky, ne model při psaní shrnutí.

Kontrola: projdi náhodně 20–30 odpovědí a podívej se, jestli sedí jejich kategorie. Pokud se mýlí u třetiny, kategorie jsou špatně navržené a je potřeba je upravit, ne jen přepočítat.

Citlivá data: nejdřív se zeptej, kam to posíláš

Smlouvy, mzdové tabulky, zákaznické databáze a výsledky interních průzkumů patří k nejcitlivějším datům ve firmě. Přesto jsou to přesně ty soubory, které lidé do AI vkládají nejčastěji, protože právě s nimi je nejvíc práce.

Než nahraješ dokument nebo tabulku, ověř si, jestli tvůj nástroj a tarif odpovídají tomu, co v souboru je. Osobní bezplatný účet a firemní plán se smlouvou o zpracování dat jsou dva různé světy, jak podrobně rozebírá lekce Kam putují tvoje data. Pokud firemní plán nemáš:

  • Anonymizuj. Jména nahraď kódy (Zákazník 001), odstraň e-maily, rodná čísla, čísla účtů. Pro analýzu trendů jména stejně nepotřebuješ.
  • Pošli jen sloupce, které jsou potřeba. Na tržby po regionech nepotřebuješ adresy.
  • Pracuj se vzorkem nebo s vymyšlenými daty stejné struktury. Model ti napíše postup nebo vzorce, které pak sám spustíš na skutečných datech u sebe.

Co si odnést

  • Shrnout znamená vybrat. Řekni modelu, k čemu shrnutí potřebuješ, chtěj odkaz na článek nebo citaci u každého bodu a dlouhé dokumenty rozděl.
  • Hlídej vynechané výjimky, „obvyklé“ údaje doplněné z tréninku a informace ztracené uprostřed dlouhého textu. Shrnutí smlouvy nenahrazuje právníka.
  • Při extrakci do tabulky urči sloupce, řekni, co dělat s chybějícím údajem, a zkontroluj počet řádků.
  • Model „z hlavy“ nepočítá, ale odhaduje další token. Na čísla používej spouštění kódu a chtěj vidět postup: jak data načetl, co vyčistil, jaké definice a předpoklady použil.
  • Čísla ověřuj vzorkem: celkový součet, počet řádků, jeden případ ručně, extrémy, selský rozum.
  • Citlivá data nahrávej jen do nástroje s odpovídajícím tarifem. Jinak anonymizuj, posílej jen potřebné sloupce, nebo pracuj s ukázkovými daty.

Zdroje a další čtení