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) Image

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 Image

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
July 27, 2018 |