Zkratka proNatural Language Processingnatural language processing se čte nečrl lengvidž prosesingTakéNLP, natural language processing, počítačová lingvistikaPokročilý
Definice
Zpracování přirozeného jazyka je obor na pomezí informatiky a lingvistiky, který umožňuje počítačům číst, analyzovat a generovat lidský text a řeč. Zahrnuje úlohy jako klasifikace textu, rozpoznávání pojmenovaných entit, strojový překlad, shrnování nebo odpovídání na otázky. Dnes se opírá především o neuronové modely trénované na velkých textových korpusech.
Proč je jazyk pro stroje těžký
Přirozený jazyk je nejednoznačný na každé úrovni. Slovo „kohoutek“ znamená ptáka i vodovodní armaturu, věta „viděl muže s dalekohledem“ má dvě čtení a ironie obrací význam celé výpovědi. Navíc čeština patří k jazykům s bohatou flexí: jeden lemma může mít desítky tvarů, takže naivní porovnávání řetězců selhává. Zpracování přirozeného jazyka řeší právě tenhle rozpor mezi tvárností jazyka a doslovností počítače.
Od pravidel ke statistice a k transformerům
Vývoj oboru proběhl ve třech vlnách. Nejdřív se psala ruční pravidla a gramatiky, které fungovaly v úzké doméně a rozpadly se na reálných datech. Následovaly statistické metody: n-gramové jazykové modely, skryté Markovovy modely pro značkování slovních druhů, později klasifikátory nad ručně navrženými příznaky. Třetí vlnu odstartovaly hustá vektorová vnoření slov a poté architektura Transformer s mechanismem pozornosti, na které stojí dnešní large language modely.
Typický pipeline
- Tokenizace: rozdělení textu na jednotky, dnes většinou na podslovní kousky (BPE, WordPiece), aby model zvládl i neznámá slova.
- Normalizace: lemmatizace nebo stemming, sjednocení diakritiky a velikosti písmen.
- Reprezentace: převod tokenů na vektory (embeddingy), které zachycují význam a kontext.
- Úloha: klasifikace, sekvenční značkování, generování nebo vyhledávání podle podobnosti vektorů.
Nejčastější úlohy v praxi
Mezi úlohy, které firmy nasazují nejčastěji, patří klasifikace (spam, tonalita recenzí, směrování ticketů), rozpoznávání pojmenovaných entit (jména, částky, čísla smluv), extrakce informací z faktur a smluv, strojový překlad, shrnování, přepis řeči a sémantické vyhledávání nad firemní dokumentací. Většina těchto úloh dnes běží nad předtrénovaným modelem, který se doladí na relativně malém anotovaném datasetu.
Čím se měří kvalita
Volba metriky rozhoduje o tom, co model doopravdy optimalizuje. U klasifikace se používá přesnost, úplnost a F1, protože samotná správnost klame u nevyvážených tříd. Strojový překlad se tradičně hodnotí BLEU nebo chrF, shrnování metrikou ROUGE. Generativní modely se čím dál častěji posuzují lidským hodnocením nebo srovnávacím testem, protože automatické metriky neodhalí smyšlený, ale plynulý výstup.
Kde to naráží v češtině
Modely trénované převážně na angličtině mají pro češtinu horší tokenizaci: jedno české slovo se rozpadne na víc tokenů, což zdražuje volání API a zkracuje efektivní kontext. Chybí také rozsáhlé anotované korpusy pro specifické domény, například právní nebo zdravotnickou terminologii. Praktický důsledek: řešení, které se v demu na anglických datech tváří skvěle, může na české zákaznické korespondenci ztratit několik procentních bodů přesnosti a je nutné ho vyhodnotit na vlastních datech.
Samostatnou kapitolou je ochrana osobních údajů. Texty od zákazníků typicky obsahují osobní údaje, takže jejich posílání do externího modelu spadá pod GDPR a vyžaduje odpovídající smluvní zajištění.
Příklady z praxe
Automatické směrování zákaznických e-mailů
E-shop dostává denně stovky zpráv na jednu adresu. Klasifikační model rozřadí zprávy do kategorií reklamace, dotaz na dopravu a fakturace a přiřadí je správnému týmu. Trénink proběhl na dvou tisících ručně oštítkovaných historických e-mailů, přičemž kvalita se sleduje přes F1 pro každou třídu zvlášť, protože reklamací je řádově méně.
Extrakce entit z textu smlouvy
Právní oddělení potřebuje z PDF smluv vytáhnout jména stran, částky a data účinnosti. Model pro rozpoznávání pojmenovaných entit označí příslušné úseky textu a výsledek se ukládá do databáze ke kontrole. Ukázka používá knihovnu spaCy s českým modelem.
import spacy nlp = spacy.load("cs_core_news_sm") doc = nlp("Smlouvu uzavřela Alza.cz a.s. dne 3. dubna 2024 na částku 250 000 Kč.") for ent in doc.ents: print(ent.text, "->", ent.label_) # Alza.cz a.s. -> ORG # 3. dubna 2024 -> DATE
Časté omyly
- MýtusNLP je dneska prostě ChatGPT, nic jiného není potřeba.
- Ve skutečnostiVelké jazykové modely jsou jen jedna část oboru. Pro úlohy typu klasifikace tisíců zpráv denně nebo vyhledávání ve vlastní dokumentaci bývá menší doladěný model levnější, rychlejší a snáz vyhodnotitelný než volání generativního API.
- MýtusKdyž model umí anglicky, česky to zvládne taky.
- Ve skutečnostiKvalita v češtině bývá znatelně nižší kvůli menšímu zastoupení češtiny v trénovacích datech a horší tokenizaci flektivních tvarů. Bez vyhodnocení na vlastních českých datech jde jen o odhad.
- MýtusStačí modelu dodat víc dat a přesnost poroste.
- Ve skutečnostiRozhodující je kvalita a konzistence anotací, nikoli objem. Rozporuplně oštítkovaná data stropí přesnost bez ohledu na jejich množství a chybu často nejde odladit ničím jiným než revizí anotačních pravidel.
Časté dotazy
- Jaký je rozdíl mezi NLP a strojovým učením?
- Zpracování přirozeného jazyka je aplikační obor definovaný typem dat, tedy textem a řečí, zatímco strojové učení je sada metod, jak se model učí ze vzorků. Většina dnešního NLP strojové učení používá, ale ne všechno NLP je strojové učení: regulární výrazy, morfologické analyzátory nebo pravidlové normalizace adres jsou také NLP. A naopak, strojové učení se stejně dobře uplatní na obrázcích, časových řadách nebo tabulkových datech, kde o jazyk vůbec nejde.
- Jaké nástroje se pro NLP v Pythonu používají?
- Pro zpracování přirozeného jazyka v Pythonu se nejčastěji sahá po knihovně spaCy pro tokenizaci, lemmatizaci a rozpoznávání entit, po ekosystému Hugging Face Transformers pro předtrénované neuronové modely a po scikit-learn pro klasické klasifikátory nad textovými příznaky. Trénink neuronových modelů běží nad PyTorch nebo TensorFlow. Pro sémantické vyhledávání se přidává vektorová databáze, která umí rychle najít nejbližší embeddingy. Volba závisí na tom, jestli potřebujete lingvistickou analýzu, nebo generování textu.
- Kolik anotovaných dat je potřeba na doladění modelu?
- U doladění předtrénovaného jazykového modelu na klasifikační úlohu často stačí několik set až několik tisíc příkladů na třídu, protože model už jazyk umí a učí se jen rozhodovací hranici. Rozhodující je konzistence anotací a pokrytí okrajových případů. U složitějších úloh, jako je extrakce entit ve specializované doméně, se počty pohybují výš. Praktický postup je začít s malým datasetem, změřit metriku a přidávat data právě tam, kde model chybuje.
- Lze zpracování přirozeného jazyka provozovat lokálně bez cloudu?
- Zpracování přirozeného jazyka lze provozovat plně lokálně a u citlivých dat to bývá jediná průchodná varianta. Menší modely pro klasifikaci nebo rozpoznávání entit běží i na běžném serveru bez grafické karty. Otevřené jazykové modely v kvantizované podobě zvládne jedna GPU s dostatkem paměti. Cenou je vlastní provoz, aktualizace modelů a obvykle nižší kvalita generování než u největších komerčních modelů. Rozhodnutí je tedy kompromis mezi kontrolou nad daty a kvalitou výstupu.
Zdroje
- Natural language processing(otevře se v novém okně)
- Attention Is All You Need(otevře se v novém okně)
- Hugging Face Transformers documentation(otevře se v novém okně)
- PyTorch Documentation(otevře se v novém okně)