Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
PLIN015 Proseminář z počítačové lingvistiky II
Miloš Jakubíček
Centrum zpracování přirozeného jazyka
Fakulty informatiky, Masarykova univerzita
xjakub@fi.muni.cz
3. června 2013
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Obsah
1 Organizační pokyny
2 Algoritmická složitost
3 Datové struktury
4 CQL
5 Syntax a syntaktická analýza
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Cíl kursu
navázat na PLIN013, obdobná skladba a cíle
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Požadavky k zápočtu
přiměřená účast (max. 3 neomluvené absence)
vyhotovení 3 průběžných úkolů a složení závěrečného testu
tentokrát zkusíme celkem 60 bodů ;)
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Osnova
ne nutně pevná, máte-li náměty, ozvěte se
algoritmická složitost a její vazba na korpusové databáze pro
ZPJ
vyhledávání v korpusech, jazyk CQL
syntaktická analýza, elementární algoritmy, ukázka gramatik
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
cíl: změřit „výkon“, příp. „náročnost“ programu/algoritmu
výsledky by měly být reprezentativní, odrážet skutečné
vlastnosti algoritmu, ne jeho konkrétní chování na určitém
typu HW
klíčové otázky: Co měřit? Jak měřit?
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Co měřit?
čas – časová složitost: kolik času potřebuje program na své
vykonání?
paměť – prostorová/paměťová složitost: kolik paměti
(úložného prostoru) program ke svému běhu potřebuje?
obě vlastnosti jsou do určité míry komplementární – proč?
budeme se zabývat především časovou složitostí
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Jak měřit?
Uvažujme následující posloupnosti, ve kterých chceme
vyhledat zadaný prvek, např. 3
3 18 1
1 18 3
1 18 2 5 3
1 18 2 5 27 11 3
1 18 1 3 1 1
1 18 2 5 87 12 2 32 45 12 1 3
Kdy nám to potrvá nejdéle? Na čem to závisí?
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Asymptotická složitost
cíl: vyjádřit složitost jako funkci vstupu (resp. jeho velikosti,
délky), tedy říct, jak roste složitost algoritmu vzhledem k
rostoucímu vstupu
Můžeme uvažovat složitost v nejlepším případě, průměrném
případě, nejhorším případě nebo amortizovanou složitost.
3 18 2 5 1
1 18 3 5 1
1 18 2 5 3
V mnoha případech (ale ne vždy!) nás zajímá hlavně složitost
v nejhorším případě.
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Základní složitosti
seřazené od „nejmenší“, s užitím tzv. O-notace
název složitost n = 102, c = 10 n = 106, c = 10
konstantní O(1) = c 10 10
logaritmická O(log n) 6,64 19,9
lineární O(n) 100 1 000 000
lineárnělogaritmická O(n · log n) 664 19 900 000
kvadratická O(n2) 10 000 1012
kubická O(n3) 1 000 000 1018
obecná polynomiální O(nc) 1020 10600
exponenciální O(cn) 10100 101000000
faktoriálová O(n!) moc strašně moc:)
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Složitost problému vs. složitost algoritmu
Složitost algoritmu
Složitostí algoritmu rozumíme složitost konkrétní instance
zadaného algoritmu (implementovatelného v nějakém
programovacím jazyce). Algoritmy pracující s lepší než
exponenciální/faktoriálovou složitostí označujeme jako efektivní.
Složitost problému
Složitostí problému rozumíme složitost optimálního algoritmu
korektně řešícího zadaný problém.
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Vyhledávání v neseřazené posloupnosti
jaká je složitost demonstrovaného algoritmu? O(n).
jaká je složitost problému (tj. jde to lépe) a proč?
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Vyhledávání v seřazené posloupnosti
tzv. binárním vyhledáváním nebo-li půlením intervalů
jaká je složitost demonstrovaného algoritmu? O(log2 n).
jaká je složitost problému (tj. jde to lépe) a proč?
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Vztah asymptotické složitosti a výkonu HW
uvažujme jeden krok výpočtu jako 1 s, 10 min odpovídá 600
krokům
lineární algoritmus složitosti 3 · n: 10 min stačí na vykonání
pro vstup velikosti 200
exponenciální algoritmus 2n: 10 min stačí na vykonání pro
vstup velikosti 9 (29 = 512, 210 = 1024)
uvažujme dvakrát vykonnější HW: jeden krok výpočtu = 0,5
s, 10 min odpovídá 1 200 krokům
lineární algoritmus složitosti 3 · n: 10 min stačí na vykonání
pro vstup velikosti 400
exponenciální algoritmus 2n: 10 min stačí na vykonání pro
vstup velikosti 10 (211 = 2048)
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Indexování
klíč – jednoznačný identifikátor záznamu (např. v relační
databázi – „tabulce“)
index – seřazená posloupnost hodnot pro jeden klíč, s
ukazateli na záznam
vybudování indexu ⇒ rychlé vyhledávání
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Datové struktury
zajímá nás způsob uložení dat
pole, lineární spojový seznam
operace: přístup k n-tému prvku, vložení prvku, odstranění
n-tého prvku
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Pole (array)
uložení n hodnot v souvislé paměťové oblasti
indexování číslem (→ adresou v paměti)
prostorová složitost: O(c · n), kde n je počet záznamů, c
velikost jednoho záznamu (konstanta)
přístup k n-tému prvku: O(1) (adresování v paměti)
vložení prvku: O(n) (realokace)
odstranění prvku: O(n) (realokace)
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Seznam (list) I
uložení n hodnot v nesouvislé paměťové oblasti
s každou hodnotou je asociovaný ukazatel na následníka
prostorová složitost: O(c · n), kde n je počet záznamů, c
velikost jednoho záznamu (konstanta) – ale: záznam zde musí
obsahovat i ukazatel na následníka ⇒ vyšší paměťové nároky
než pole
přístup k n-tému prvku: O(n) (lineární průchod seznamem)
vložení prvku: O(1) (přepojení ukazatelů)
odstranění prvku: O(1) (přepojení ukazatelů)
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Seznam (list) II
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Shrnutí: pole vs. seznam
pole: rychlejší přístup, pomalejší modifikace
seznam: pomalejší přístup, rychlejší modifikace
⇒ vhodnost použití závisí na datech
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Hashování
v předchozích příklade bylo indexem vždy číslo
můžeme ovšem chtít indexovat např. řetězcem („ke každému
slovu přiřaď četnost“)
nutná transformace nečíselné hodnoty na číslo – vytvoření tzv.
hashe pomocí hashovací funkce
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Hashovací funkce I
h : D → N, kde D je doména dat; požadavky:
rychlá
deterministická (pro stejná data vždy stejný výsledek)
uniformní (výstupní hodnoty mají přibližně stejnou
pravděpodobnost, všechny mají stejnou velikost)
výstup volitelné délky
obtížná reverzibilita (použití: hesla)
minimální změna vstupu vyvolá velkou změnu výstupu
Hashovací funkci nazýváme perfektní, je-li její zúžení na
konkrétních vstupních datech injektivní.
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Hashovací funkce II
obecně je hashovací funkce vždy neinjektivní a vznikají kolize
důlěžitý požadavek: neměnnost vstupních dat po vytvoření
hashe (immutability)
Python: list = [], dict = {}
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Fronta
= datová struktura typu FIFO (First In First Out)
implementace pomocí pole nebo spojového seznamu
Python: list.append(), list.pop(0), ale pomalé
(collections.deque)!
př. použití: prohledávání stromu do šířky
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Zásobník
= datová struktura typu LIFO (Last In First Out)
implementace pomocí pole nebo spojového seznamu
Python: list.append(), list.pop()
př. použití: prohledávání stromu do hloubky
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Vyhledávání v korpusech – CQL
Korpus:
poziční atributy – slovo, lemma, značka, . . .
struktury a strukturní atributy – dokument (autor, id, rok,
. . . ), odstavec, věta
vyhledávání: Manatee/Bonito/Sketch Engine
http://corpora.fi.muni.cz
http://the.sketchengine.co.uk
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Today’s Corpora in SkE
LARGE (= billions of tokens, and it’s going to be worse)
complex multi-level multi-value annotation
wide range of languages
growing demand on complex searching – moving from
morphology to syntax and semantics
search API for automatic information retrieval and
post-processing in particular applications needed
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
CQL
= Corpus Query Language (Christ and Schulze, 1994)
positions and positional attributes: [attr="value"]
structures and structural attributes: query:
[tag="N.*"]+ within
and alternative meet/union query:
(meet [lemma="take"] [tag="N.*"] -5 +5)
(union (meet ...) (meet ...))
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
CQL in Manatee/Bonito
ehnancements and differences to the original CQL syntax
within and containing
meet/union (sub)query
inequality comparisons
frequency function
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
within/containing queries
searching for particles:
[tag="PR.*"] within [tag="V.*"] [tag="AT0"]?
[tag="AJ0"]* [tag="(PR.?|N.*)"] [tag="PR.*"]
within
searching for a Czech idiom “hnout někomu žlučí” (“to get
somebody’s goat”):
word-by-word translated as:
hnout “move” [V, infinitive]
někomu “somebody” [N, dative]
žlučí “bile” [N, instrumental].
containing [lemma="hnout"] containing
[tag=".*c3.*"] containing [word="žlučí"]
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
within/containing queries
structure boundaries: begin: , whole structure: ,
end:
changes: within not allowed anymore, use within
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
meet/union queries
combined with regular query:
containing (meet [lemma="have"] [tag="P.*"] -5 5)
containing (meet [tag="N.*"] [lemma="blue"])
changes: meet/union queries can be used on any position,
they can contain labels and no MU keyword is required (and
deprecated):
(meet 1:[] 2:[]) & 1.tag = 2.tag
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Inequality comparisons
former comparisons allowed only equality and its negation:
[attr="value"] [attr!="value"]
inequality comparisons implemented: [attr<="value"]
[attr>="value"] [attr!<="value"] [attr!>="value"]
intended usage:
[tag="AJ.*"] [tag="NN.*"] within ="2009»
sophisticated comparison performed on the attribute value:
10
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Performance evaluation
Tabulka : Query performance evaluation – corpora legend: ◦ BNC (110M
tokens), • BiWeC (version with 9.5G tokens), ∗ Czes (1.2G tokens)
query # of results time (m:s)
◦ [lemma="time"] 179,321 0.07
◦ [lemma="t.*"] 14,660,881 3.12
◦ Ex: particles 1,219,973 33.36
• Ex: particles 97,671,485 32:26.48
∗ Ex: idioms 66 1:6.86
◦ Ex: meet/union 3 8.47
• Ex: meet/union 1457 7:13.12
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Rozhraní systému Manatee
podrobnější dokumentace k CQL: http:
//trac.sketchengine.co.uk/wiki/SkE/CorpusQuerying
corpquery CORPUSNAME QUERY
lsclex CORPUS ATTR
lsslex CORPUS STRUCT ATTR
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Zkuste si
Na korpusu DESAM a czes vyzkoušejte:
hledat výskyty přechodníků (přítomných i minulých)
hledat jmenné fráze s genitivní vazbou
hledat věty obsahující reflexivní slovesa
hledat výskyty svého oblíbeného idiomu
hledat shodné jmenné fráze do délky 4
Termín: do 24. 5. 2013, do odevzdávárny vložte textový soubor s
příslušnými dotazy v CQL
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
sed, diff, comm
sed – zkratka z „stream editor“
sed ’s/REGEX/NAHRADA/’ – provede náhradu regulárního
výrazu REGEX za řetězec NAHRADA
diff – zkratka z „difference“
diff SOUBOR1 SOUBOR2 – porovná soubory a vypíše nalezené
rozdíly
comm – zkratka z „compare“
comm -1 -2 -3 SOUBOR1 SOUBOR2 – vynechá řádky
vyskytující se pouze v souboru 1 / 2 / obou (soubory musí být
seřazené).
ajka, majka, desamb
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Gramatika
→ PLIN004: G = (Σ, N, P, S)
Chomského hierarchie, podle omezení na podobu pravidel
(A, B ∈ N, a ∈ Σ, α, β ∈ (N ∪ Σ)∗):
typ 3: regulární gramatika: A → a, A → aB,
typ 2: bezkontextová gramatika: A → β,
typ 1: kontextová gramatika: α → β, |α| ≤ |β|,
typ 0: frázová gramatika: α → β.
pojetí gramatiky coby generátoru – regulární gramatika
generuje regulární jazyk (a obdobně pro ostatní typy)
potřeba „protikusu“ ke generátoru (syntetizátoru) – analyzátor
→ GRAMATIKA – JAZYK – ANALYZÁTOR
z PLIN004 již znáte: regulární gramatika – regulární jazyk
(popsatelný regulárním výrazem) – konečný automat
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Gramatika a analyzátor
s postupnou relaxací omezení na tvar pravidel roste
vyjadřovací síla gramatiky („složitost“ generovatelného
jazyka)
pochopitelně s tím rostou i nároky na analyzátor, zejména
časová složitost analýzy (n značí délku vstupního řetězce):
regulární gramatika: O(n) – proč?
bezkontextová gramatika: O(n3
)
kontextová gramatika: O(n6
)
komplexní gramatické formalismy, některé zahrnující i
sémantiku (LFG, HPSG, TAG, CCG, . . . ) – viz IB030
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Přirozené jazyky a gramatiky
Jak složité jsou přirozené jazyky?
Lze přímočaře uplatnit Chomského hierarchii?
Co je úkolem syntaktického analyzátoru přirozeného jazyka?
Jaké jsou důsledky teorie formálních jazyků pro syntaktickou
analýzu přirozeného jazyka?
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Bezkontextová gramatika, zásobníkový automat
bezkontextová gramatika = context-free grammar = CFG
konečný automat = finite-state automaton = FSA
zásobníkový automat = pushdown automaton = PDA
podobně jako jazyk generovaný reg. gramatikou lze analyzovat
FSA, můžeme jazyk generovaný CFG analyzovat pomocí PDA
PDA: analýza shora dolů a zdola nahoru
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
ZPJ a teorie formálních jazyků
skripta a slidy (s poděkováním) Shuly Wintner, University of
Haifa: http://cs.haifa.ac.il/~shuly/teaching/09/
nlp/complexity-handout.pdf a ve studijních materiálech
skripta Černá-Kučera-Křetínský – FI:IB005 Formální jazyky a
automaty: http://is.muni.cz/elportal/estud/fi/js06/
ib005/Formalni_jazyky_a_automaty_I.pdf
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Nedeterministická bezkontextová analýza
shora dolů (Lookup-Rewrite)
na začátku analýzy obsahuje zásobník počáteční neterminál
operace: Lookup (najdi shodný prefix zásobníku a vstupu;
odmaž – „přečti“), Rewrite (přepiš vrchol zásobníku podle
pravidla gramatiky – nahraď pravou stranou)
nedeterminismus: vhodná volba pořadí operací Lookup-Rewrite
úspěšná analýza: prázdný zásobník, vstup byl celý přečten
zdola nahoru (Shift-Reduce)
na začátku analýzy je zásobník prázdný
operace: Shift (vlož do zásobníku další slovo ze vstupu),
Reduce (přepiš vrchol zásobníku podle pravidla gramatiky –
nahraď levou stranou)
nedeterminismus: vhodná volba pořadí operací Shift-Reduce
úspěšná analýza: zásobník obsahuje právě počáteční
neterminál, vstup byl celý přečten
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Handling ambiguity
Backtracking – try all options sequentially (usually degrades
to factorial time complexity)
Determinism – choose one option (preferably a good one) and
keep to it
Parallelism – try all options in parallel
Underspecification – do not specify the ambiguous
phenomenon
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Deterministická analýza
CKY / CYK (zdola nahoru, vyžaduje CNF)
Earleyho parser (shora dolů)
GLR (Generalized Left-to-right Right-most derivation parser)
(zdola nahoru)
Chart parser (zdola nahoru / shora dolů / řízený hlavou)
→ IB030
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
složková analýza (phrase structure analysis)
závislostní analýza (dependency analysis)
co je cílem syntaktické analýzy?
metody vyhodnocování (LAA, Parseval)
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II
Obsah Organizační pokyny Algoritmická složitost Datové struktury CQL Syntax a syntaktická analýza
Příprava korpusu
1 Ujasnění obsahu korpusu (K čemu má sloužit? Jak získám
vhodný text?)
2 Získání dat (Crawling, ne Google; wget, links)
3 Základní anotace (dokument, odstavce, specifické atributy)
4 Tokenizace (unitok.py, don’t, A4)
5 Segmentace do vět (tecky.pl, MUDr., atd.)
6 Morfologická anotace / desambiguace (ajka / majka /
desamb)
7 Další specifická anotace (např. syntaktická)
8 Zakódování (Manatee / encodevert; Corpus Architect)
Miloš Jakubíček NLP FI MU Brno
PLIN015 Proseminář z počítačové lingvistiky II