Zpracování přirozeného jazyka (angl. natural language processing) je obor na pomezí informatiky (specificky umělé inteligence) a lingvistiky, který zkoumá analýzu a generování psaného či mluveného slova. Mezi úlohy zpracování přirozeného jazyka patří:
- klasifikace textu (detekce spamu, určení žánru, určení autorství)
- shlukování textů (vytvoření skupin podobných zpráv nebo souvisejících soudních případů)
- korektura textu (kontrola pravopisu – spell-check, kontrola gramatiky – grammar check)
- generování textu (odpovídání na otázky, shrnování textu, strojový překlad)
- rozpoznávání řeči (řeč → text) a syntéza řeči (text → řeč)
- popisování obrázků (obrázek → text) a generování obrázků (text → obrázek)
Pravidlový přístup
Dříve se na tyto úlohy využívaly pravidlové přístupy snažící se zachytit pravidla daného jazyka (např. časování sloves). Analýza textu byla rozdělena do několika navazujících úrovní (jazykových rovin): 1. morfologie (konstrukce slov), 2. syntaxe (skládání vět), 3. sémantika (význam vět) a 4. pragmatika (použití vět v kontextu). Postihnout přirozený jazyk pomocí pravidel se však ukázalo jako obtížné.
Komplikace zpracování přirozeného jazyka
Každé pravidlo má řadu výjimek a texty v přirozeném jazyce obsahují překlepy a jiné chyby, které je také potřeba modelovat, chceme-li textu porozumět. Další komplikací je nejednoznačnost na mnoha úrovních: homonyma, tj. slova s více možnými významy (los, stát, koruna), věty s více možnými významy („Sněz rychle chladnoucí polévku.“), zájmena odkazující se na dříve uvedené objekty (anafory) a další odkazy do jiných částí textu nebo i mimo něj (já, teď). Význam vět nelze vždy určit z významu dílčích slov, například při použití idiomů, metafor a metonymií.
Strojové učení
V dnešní době se zpracování přirozeného jazyka řeší téměř výhradně využitím strojového učení, které dosahuje výrazně lepších výsledků než pravidlové přístupy. K učení se využívají rozsáhlé kolekce textových dokumentů označované jako korpusy. Korpusy obsahují například digitalizované knížky, online encyklopedie (Wikipedia), někdy dokonce texty z většiny dostupných webových stránek a mohou tak mít i miliardy slov.
Výstupem strojového učení je jazykový model, který odhaduje pravděpodobnost dalšího slova v rozepsaném textu. Takový model lze pak využít ke generování textu v chatbotech (opakovaným výběrem některého z pravděpodobných dalších slov) nebo výběru nejpravděpodobnější věty z několika kandidátů (to se hodí třeba při rozpoznávání řeči nebo strojovém překladu). Jazykové modely realizované pomocí rozsáhlých neuronových sítí s miliardami parametrů (které se nastavují během učení) se označují jako velké jazykové modely (angl. large language models, LLM).
ChatGPT
Příkladem velkého jazykového modelu je GPT, generativní předtrénovaný transformátor. Jde o generativní model, protože umožňuje generovat text. Je předtrénovaný na rozsáhlém datasetu textů z většiny dostupných webových stránek. Transformátor (angl. transformer) je populární typ neuronové sítě umožňující efektivní učení na takto rozsáhlých datech. ChatGPT je pak název konkrétní aplikace (chatbota) využívající na pozadí tento velký jazykový model.
Reprezentace textu
Základní jednotkou při práci s textem jsou tokeny, což jsou typicky buď známá slova nebo části neznámých slov. Možných tokenů v jednom jazyce je pak třeba několik desítek tisíc. Rozdělení textu na tokeny se označuje jako tokenizace. Pro některé aplikace je výhodné slova převést do jejich základního tvaru, tzv. lemma (jablek → jablko, jsme → být).
Jednotlivá slova se často reprezentují pomocí tzv. vnoření slov (angl. word embeddings) jako vektory reálných čísel v mnohodimenzionálním prostoru. Slova podobného významu jsou v tomto prostoru blízko sebe.
Skupiny slov lze pak reprezentovat buď jako množinu, tedy bez ohledu na pořadí (angl. bag of words), nebo se zachováním pořadí jako tzv. n-gramy (např. bigramy jsou dvojice po sobě jdoucích slov).