Text Processing Kokořín
Počítačové zpracování přirozeného jazyka
Kokořín, léto 2018
O mně
- informatika, specializace ZPJ na MU
- hudební věda na FF MU
- výzkum na FI MU (2009–)
- lektor na FF MU (2010–)
- vývoj v Lexical Computing (2012–)
- korpusová lingvistika a lexikografie
Motivace
- NLP jedna z nejstarších IT disciplín
- text jako sekvence znaků (slov)
- nebo jako složitá syntakticko-sémantická struktura
Osnova
- získávání dat
- reprezentace, příprava, zpracování dat
- analýza dat
- jazykové modely
Získávání dat
Web, web, web
- největší zdroj (velké jazyky)
- crawling: pravidelný, jednorázový (ukázka)
- HTML mizí (Ctrl+U, headless browser)
- SpiderLing (výtěžnost stahování)
- spam, link farmy, deduplikace
- PDF a další proprietární formáty nejsou vhodné
Významné zdroje textů
- Wikipedie, Wikizdroje a další Wiki*
- projekt Gutenberg
- diskuzní fóra, feedy, twitter (?)
- EUR-Lex (ukázka)
Bigger is better
- co je hodně dat?
- en 17, es 8, cs 6, fr 12, ru 20
- čím více dat, tím přesnější výsledky
- chceme jednoduché a rychlé nástroje
- miliardy slov ~ GB dat
- pro základní analýzy ~ 1 miliarda slov
Reprezentace, příprava a zpracování dat
Plaintext
- plaintext je základ – snadné zpracování
- konverze z HTML (čištění, boilerplate, struktura)
- jusText (ukázka)
- komprese asi 90 %
- CSV je taky plaintext
Kódování textu
- všechno jsou bajty (256 hodnot)
- dnes většina v UTF-8 (1–4 B na znak)
- Windows1250 1B, ASCII pouze anglické znaky
- UNICODE obsahuje i emotikon pro supervillain woman, black skin
- ne zcela triviální detekce (jazyk je známý?)
- na webu zmatek (HTTP, <meta>, XML, Chrome, …)
Malá a velká písmena (case)
- unicameral písma (gruzínština, čínština, hebrejština)
- truecase, case uprostřed věty
- lowercase snižuje velikost slovníku
- lowercase podle UNICODE tabulky
- camelCase, ČKD, iTunes
Tokenizace
- rozdělení na mezeře nestačí
- jednotky označujeme tokeny
- čísla, kódy, interpunkce, URL, emaily, ASCII art
- glue tag pro rekonstrukci <g /> originálu
- unitok (ukázka)
- normalizace speciálních znaků (pomlčky, uvozovky)
- chceme zmenšit slovník
- nutné rozhodnout: don’t, červeno-černý
Tokenizace může být těžká
- thajština, tádžičtina (tokenizace ~ sémantická analýza)
Vertikální formát
- jednoduchý formát pro strukturované uložení textů
- vhodný pro další proudové zpracování
- trochu XML, hodně TXT (
vertikal.vert
) - struktury a atributy
- lingvistické anotace v dalších sloupcích (tab)
- indexuje se do databáze (Sketch Engine, ukázka)
Analýza dat
Wordlisty (seznamy slov)
- vyhledání anomálií
- funkční slova (která lze ignorovat)
- základ slovníků
- what3words
- s frekvencemi základ jazykových modelů
Zipfův zákon (dobré vědět)
rank * frekvence = konstanta
V angličtině tvoří první položka 7 % textu. Která?
Velikost a složitost jazyků
- angličtina považována za nejbohatší jazyk (slovníky)
- čeština ji předčí do počtu slovních tvarů (derivace)
- jsou i bohatší jazyky (ugrofinská rodina)
- jsou ještě bohatší jazyky (tádžiština)
- tj: chončaam (můj domek)
- hu: legeslegmagasabb (úplně nej-vyš-ší)
Segmentace vět, odstavců
- odstavce bývají explicitní v HTML
- věty obvykle podle interpunkce
- zkratky, interpunkce neukončující (!) větu
- hodí se pro některé další zpracování (zarovnání)
- existují vhodné nástroje
N-gramy
- sekvence slov (tokenů) o délce N
- hodí se pro jazykové modelování
- hledání klíčových frází
- exponenciální nárůst vůči délce n-gramu
- Google Books N-grams
- souvisí s MWE (víceslovné výrazy)
N-gramy, příklad angličtina
řád | slovník | singleton | % |
---|---|---|---|
unigram | 86 700 | 33 447 | 38.6 % |
bigram | 1 948 935 | 1 132 844 | 58.1 % |
trigram | 8 092 798 | 6 022 286 | 74.4 % |
4-gram | 15 303 847 | 13 081 621 | 85.5 % |
5-gram | 19 882 175 | 18 324 577 | 92.2 % |
Morfologická analýza, disambiguace, lemmatizace
- další zmenšení velikosti slovníku
- dělení na morfémy, nejmenší jednotky významu
- přiřazování gramatických kategorií
- morfologická analýza pomocí slovníku (analyzer)
- morfologická disambiguace (tagger)
- lemmatizace (základní slovníkové tvary) (lemmatizer)
- neznámá slova, novotvary (guesser)
- různé jazyky různá úspěšnost (en vs. cs)
Příklad
slovo | analýzy | disambiguace |
---|---|---|
Pravidelné | k2eAgMnPc4d1, k2eAgInPc1d1, k2eAgInPc4d1, k2eAgInPc5d1, k2eAgFnSc2d1, k2eAgFnSc3d1, k2eAgFnSc6d1, k2eAgFnPc1d1, k2eAgFnPc4d1, k2eAgFnPc5d1, k2eAgNnSc1d1, k2eAgNnSc4d1, k2eAgNnSc5d1, … (+ 5) | k2eAgNnSc1d1 |
krmení | k2eAgMnPc1d1, k2eAgMnPc5d1, k1gNnSc1, k1gNnSc4, k1gNnSc5, k1gNnSc6, k1gNnSc3, k1gNnSc2, k1gNnPc2, k1gNnPc1, k1gNnPc4, k1gNnPc5 | k1gNnSc1 |
je | k5eAaImIp3nS, k3p3gMnPc4, k3p3gInPc4, k3p3gNnSc4, k3p3gNnPc4, k3p3gFnPc4, k0 | k5eAaImIp3nS |
pro | k7c4 | k7c4 |
správný | k2eAgMnSc1d1, k2eAgMnSc5d1, k2eAgInSc1d1, k2eAgInSc4d1, k2eAgInSc5d1, … (+ 18) | k2eAgInSc4d1 |
růst | k5eAaImF, k1gInSc1, k1gInSc4 | k1gInSc4 |
důležité | k2eAgMnPc4d1, k2eAgInPc1d1, k2eAgInPc4d1, k2eAgInPc5d1, k2eAgFnSc2d1, k2eAgFnSc3d1, k2eAgFnSc6d1, k2eAgFnPc1d1, k2eAgFnPc4d1, k2eAgFnPc5d1, k2eAgNnSc1d1, k2eAgNnSc4d1, k2eAgNnSc5d1, … (+ 5) | k2eAgNnSc1d1 |
Klíčová slova, terminologie
- často se používá pouze absolutní (rel.) četnost
- wordcloud
- předpoklad: specifický vs. obecný jazyk
- srovnání četností v dokumentu a v jazyce
- (fdoc + N) / (flang + N)
- ideálně základní tvary (MWE jsou těžší)
- OneClick Terms, keywords (ukázka)
Kolokace a souvýskyty
- souvýskyty, co-occurrence
- logDice, mutual information, T-skóre
$$logDice(x, y) = log (2\times fxy / (fx + fy))$$
- word sketch, kolokační profil (ukázka)
- bilingual terminology (ukázka)
Sémantika
- reprezentace významu na počítači
- thesaurus, synonyma, word embedding
Korpusová lingvistika
- daty podložené bádání o jazyce
- data = kolekce textů = korpus (corpus, corpora)
- stovky korpusů v různých jazycích
- různé žánry, typy dokumentů, anotací
- chybové korpusy, mluvené korpusy, paralelní korpusy
- historické, časosběrné (ukázka)
Jazykové modely
Jazykové modely
- pravděpodobnost věty
- předpověď následujícího slova
- využití:
- plynulost ve strojovém překladu
- generování textu
- komprese textu
- prediktivní psaní
- OCR, ASR
- abstrakce od lingvistických informací
Jazykové modely II
- pravděpodobnostní rozložení sekvencí slov
- pomocí n-gramů a jejich kombinací (vyhlazování)
- měření kvality jazykového modelu
- Shannonova hra
Neuronové sítě a jazykové modely
- díky vývoji hardware (GPU)
- reprezentace slov pomocí vektorů čísel (0 až 1)
- word embedding
- rekurentní modely
- deep learning
Další témata v NLP
- syntaxe (parsing)
- sémantická analýza
- strojový překlad
- sumarizace textů
- anafora resolution
- information retrieval
Ještě další témata v NLP
- sentiment analysis
- information / relation extraction
- topic modelling
- automatic correction, spellcheck
- dialogové systémy
- převod řeči na text (a zpět)
- authorship recognition/attribution
- spam detection
Pracoviště v ČR
- Centrum zpracovní přirozeného jazyka MU
- Ústav formální a aplikované lingvistiky UK
- Plzeň, Liberec, Brno VÚT (reč)
- FF UK, FF MU
Další zdroje
- Statistical NLP
- Text processing with Python
- NLTK, gensim
- Sketch Engine
Shrnutí
- you shall know your data
- keep it simple
- bigger is better
- plaintext rulezz
- Linux, bash, Python
- zbytek je Google Search
published: 2018-07-27
last modified: 2023-11-20
https://vit.baisa.cz/notes/learn/kokorin/
last modified: 2023-11-20
https://vit.baisa.cz/notes/learn/kokorin/