AI-For-Beginners/translations/sk/lessons/5-NLP/13-TextRep
localizeflow[bot] 3c760d21ff chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00
..
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00
TextRepresentationPyTorch.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
TextRepresentationTF.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
assignment.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00

README.md

Reprezentácia textu ako tenzorov

Kvíz pred prednáškou

Klasifikácia textu

V prvej časti tejto sekcie sa zameriame na úlohu klasifikácie textu. Použijeme dataset AG News, ktorý obsahuje spravodajské články ako napríklad:

  • Kategória: Veda/Technológie
  • Názov: Ky. spoločnosť získala grant na štúdium peptidov (AP)
  • Text: AP - Spoločnosť založená chemickým výskumníkom na Univerzite v Louisville získala grant na vývoj...

Naším cieľom bude klasifikovať spravodajský článok do jednej z kategórií na základe textu.

Reprezentácia textu

Ak chceme riešiť úlohy spracovania prirodzeného jazyka (NLP) pomocou neurónových sietí, potrebujeme spôsob, ako reprezentovať text ako tenzory. Počítače už reprezentujú textové znaky ako čísla, ktoré mapujú na fonty na vašej obrazovke pomocou kódovaní, ako sú ASCII alebo UTF-8.

Obrázok zobrazujúci diagram mapovania znaku na ASCII a binárnu reprezentáciu

Zdroj obrázku

Ako ľudia rozumieme, čo každý znak reprezentuje, a ako všetky znaky spolu tvoria slová vo vete. Počítače však samy o sebe takému porozumeniu nemajú, a neurónová sieť sa musí naučiť význam počas tréningu.

Preto môžeme použiť rôzne prístupy pri reprezentácii textu:

  • Reprezentácia na úrovni znakov, keď reprezentujeme text tak, že každý znak považujeme za číslo. Ak máme C rôznych znakov v našom textovom korpuse, slovo Hello by bolo reprezentované ako tenzor 5xC. Každé písmeno by zodpovedalo stĺpcu tenzora v one-hot kódovaní.
  • Reprezentácia na úrovni slov, pri ktorej vytvoríme slovník všetkých slov v našom texte a potom reprezentujeme slová pomocou one-hot kódovania. Tento prístup je o niečo lepší, pretože každé písmeno samo o sebe nemá veľký význam, a tak použitím vyšších semantických konceptov - slov - zjednodušujeme úlohu pre neurónovú sieť. Avšak vzhľadom na veľkosť slovníka musíme pracovať s vysoko dimenzionálnymi riedkymi tenzormi.

Bez ohľadu na reprezentáciu musíme najskôr konvertovať text na sekvenciu tokenov, pričom jeden token môže byť znak, slovo alebo dokonca časť slova. Potom token konvertujeme na číslo, zvyčajne pomocou slovníka, a toto číslo môže byť vložené do neurónovej siete pomocou one-hot kódovania.

N-Gramy

V prirodzenom jazyku je presný význam slov možné určiť iba v kontexte. Napríklad významy neurónová sieť a rybárska sieť sú úplne odlišné. Jedným zo spôsobov, ako to zohľadniť, je vytvoriť model na základe dvojíc slov a považovať dvojice slov za samostatné tokeny slovníka. Týmto spôsobom bude veta Rád chodím na ryby reprezentovaná nasledujúcou sekvenciou tokenov: Rád chodím, chodím na, na ryby. Problémom tohto prístupu je, že veľkosť slovníka sa výrazne zväčšuje a kombinácie ako na ryby a na nákupy sú reprezentované rôznymi tokenmi, ktoré nezdieľajú žiadnu semantickú podobnosť napriek rovnakému slovesu.

V niektorých prípadoch môžeme zvážiť použitie tri-gramov -- kombinácií troch slov -- tiež. Tento prístup sa často nazýva n-gramy. Tiež má zmysel používať n-gramy s reprezentáciou na úrovni znakov, v takom prípade n-gramy približne zodpovedajú rôznym slabikám.

Bag-of-Words a TF/IDF

Pri riešení úloh, ako je klasifikácia textu, musíme byť schopní reprezentovať text jedným vektorom pevnej veľkosti, ktorý použijeme ako vstup pre konečný hustý klasifikátor. Jedným z najjednoduchších spôsobov, ako to urobiť, je kombinovať všetky individuálne reprezentácie slov, napr. ich sčítaním. Ak sčítame one-hot kódovania každého slova, skončíme s vektorom frekvencií, ktorý ukazuje, koľkokrát sa každé slovo objaví v texte. Takáto reprezentácia textu sa nazýva bag of words (BoW).

Obrázok od autora

BoW v podstate reprezentuje, ktoré slová sa objavujú v texte a v akých množstvách, čo môže byť dobrým indikátorom toho, o čom text je. Napríklad spravodajský článok o politike pravdepodobne obsahuje slová ako prezident a krajina, zatiaľ čo vedecká publikácia by mala niečo ako urýchľovač, objavené, atď. Frekvencie slov môžu v mnohých prípadoch byť dobrým indikátorom obsahu textu.

Problémom BoW je, že určité bežné slová, ako a, je, atď., sa objavujú vo väčšine textov a majú najvyššie frekvencie, čím zakrývajú slová, ktoré sú skutočne dôležité. Môžeme znížiť dôležitosť týchto slov tým, že zohľadníme frekvenciu, s akou sa slová vyskytujú v celej kolekcii dokumentov. Toto je hlavná myšlienka prístupu TF/IDF, ktorý je podrobnejšie pokrytý v notebookoch pripojených k tejto lekcii.

Avšak žiadny z týchto prístupov nedokáže plne zohľadniť semantiku textu. Na to potrebujeme výkonnejšie modely neurónových sietí, o ktorých budeme diskutovať neskôr v tejto sekcii.

✍️ Cvičenia: Reprezentácia textu

Pokračujte vo svojom učení v nasledujúcich notebookoch:

Záver

Doteraz sme študovali techniky, ktoré môžu pridať váhu frekvencie rôznym slovám. Nie sú však schopné reprezentovať význam alebo poradie. Ako povedal slávny lingvista J. R. Firth v roku 1935: "Úplný význam slova je vždy kontextový a žiadna štúdia významu mimo kontextu nemôže byť braná vážne." Neskôr v kurze sa naučíme, ako zachytiť kontextové informácie z textu pomocou jazykového modelovania.

🚀 Výzva

Vyskúšajte niektoré ďalšie cvičenia s bag-of-words a rôznymi dátovými modelmi. Môžete sa inšpirovať touto súťažou na Kaggle

Kvíz po prednáške

Prehľad & Samoštúdium

Precvičte si svoje zručnosti s textovými embeddingmi a technikami bag-of-words na Microsoft Learn

Úloha: Notebooky