PLIN015 – Překlenovací seminář
2014-04-17 12:44:08
Seminární úkol z ukoru
makefile
- naším úkolem je vytvořit vertikál se standardními strukturními značkami
- napsat buď třeba v pythonu, nebo v bashi, nebo tak
- po udělání vertu připravit konfigurační soubor (registry soubor)
- popisuje jak se korpus jmenuje, jaké atributy tam jsou a tak
- v ukazce chybi nazev a atribut, ktery rika, kde je vertikal
- využívat co nejvíc strukturu textu, kterou máme na vstupu
- tokenisace – /corpora/ske-toolkit/unitok.py -vyhodi vertikal
- kompilace korpusu:
compilecorp konfiguracni_soubor
Zkušební vytvoření korpusu
- seznamit se s daty
- stojí za to zachovat data uvedená na zdrojovem webu (tabulka s množstvím posic a podobně)
- na albě (některé nástroje nejsou na auroře) v uvedené složce
- přečíst si dokumentaci
- podivat se na data, podle toho, jak jsou strukturovana je chci nejakym scriptem dostat do vertikalu
- pokud jsou data plain text, prohnat tokenisatorem (unitok.py)
- kdy to jsou uz označkovaná data
- vytvořit vertikál
- python / bash / XSLT
- nejlepší asi python
- vytvořit kofigurační soubor
- podívat se třeba do /corpora/registry a zkopirovat z toho nejaky konifgurak pro stejny jazyk a jen lehce upravit popisky
- smazat všechno, čemu nerozumime
- zkompilovat
- compilecorp ./polish_pnk
- --recompile-corpus: prekompiluje
práce s komprimovanými soubory
- normální příkazy ale pro komprimované shity
- z-, vz-, xz-
- zcat, zcav, zcmp, zgrep
- program tar = (tape archiven)
- balík souborů, víc souborů v jednom tar filu
- při komprimování se na balík tar spustí gzip či neco →
- gzip, bzip2, xz
- gunzip, bunzip, …
- všechny tyhle mažou zdroj
- lze rovnou dělat tar a komprimovat
tar xzvf filename
– vytvoří
- creat, gzip,
- pro extract místo 'c' je 'x'
dynamic attribute
awk
words.vert: ann_words.xml.gz \
gunzip ann_words.xml.gz \
epgrep \
sed \
sed …\
> words.vert
$ make
nebo
$ make words.vert
aby šlo ./soubor.py
chmod +x / musi byt spustitelny
prvni radek musi byt shebang
#!/usr/bin/python
paralelni korpusy
Shrnuti
- nejhorsi pripad u algoritmu nas nezajima, pokud neco vime o datech, takze muzeme predpokladat
- obecne polynomialni slozitost je jeste pouzitelna
- kvadraticka slozitost – typicky prochazeni tabulky
- exponencialni slozitost – typicky prolamovani klicu
- u blbych slozitosti nam vadi rychlost rustu vzhledem k delce rustu
- problem – zadani
- slozitost problemu je slozitost optimalniho algoritmu, jenz resi dany problem
- algoritmu – pristupy k reseni problemu
- slozitost alg. je slozitost konkretni instance implementace daneho algoritmu
- hashovaci fce
- neda se zpetne prevest
- maly rozdil na vstupu = velky rozdil na vystupu
- musi byt rychla
- id2str – mam petku (id), co to je v korpusu za slovo
- str2id – mam slovo, co to je v korpusu za id (cislo)
precision and recall ~ pokryti a presnost
mravenci a vcely
chci mravence
chytil jsem x prvku, neco mi zbylo – chytil jsem 4 mravence, 6 vcer
pokryti 4 mravenci ze 6, ale mam i 6 vcel z 9 (mala presnost)
muzu chytit vsechno → pokryti 100%, kdyz pak mravence vydobu, tak presnost taky 100 %