Programování II

Užitečné odkazy

Některé jednoduché metody strojového učení

K nejbližších sousedů (k Nearest Neighbours)
Slidy Tima Baldwina.
TiMBL - pěkná implementace pro nasazení v praxi.
Naivní bayesovský klasifikátor (Naive Bayes)
Slidy Tima Baldwina.

Zadané zápočťáky a jejich stav

Pokud se v tomto seznamu nenajdete, nebo se najdete se špatným či žádným tématem, urgujte mne prosím.

Stav zápočťáku značí:
potvrzeno já i vy víme, co budete dělat; průběžně mne sháníte s aktualizacemi a chcete je posvětit
započteno konec iterací, stavte se pro zápočet

Úterý 12.20

Jméno Téma Stav
Čermák Jan Bombičky/přikapávání s dramatickým finále
Demek Radomír
Fiala Pavel
Hejlek Jaroslav
Hlaváček Tomáš Fortunův algoritmus pro Voronoiovy diagramy, ilustrován vč. dat. struktur potvrzeno, dostal alfaverzi, musím otestovat
Hošala Michal
Hromátka Jaroslav
Jiráček Zbyněk Asistent pro hraní min potvrzeno, obdržel, zkontrolovat!
Kolombo Martin Simulace soustavy hmotných bodů + příp. rozšíření na planetární soustavu potvrzeno
Kouřil Andrej Bezztrátová komprese (původně Streamování zvuku přes UDP, i v hustém provozu) potvrzeno, čekám na alfaverzi
Kovář Jaroslav Generování akordů na kytaru potvrzeno, čekám na alfaverzi
Krijt Filip Simulace leteckého provozu + TSP potvrzeno, prosím o rozchození v Rotundě
Křepelka Michal Strojový překlad potvrzeno, čekám na balík s dokumentací a zdrojovým kódem
Lachata Adrián Detekce plagiátů pro texty i zdrojáky
Lišková Martina
Michalik Jindřich Hra číslíčka potvrzeno, čekám na balík obs. i zdrojáky
Pouchová Helena Diář s automatickým plánováním úloh
Vévoda Petr Rozšíření Mongeovského invertoru
Vinárek Jan Kimovy hry s rozpoznáváním kliček
Záhumenský Jakub Grafická kalkulačka s možností kreslit více funkcí potvrzeno

Středa 14.00

Jméno Téma Stav
Karel Foltýn Reversi potvrzeno
Kindermann Hubert Grafické řešení diferenciálních rovnic prvního řádu potvrzeno
Kráčalíková Markéta Gravitační působení těles potvrzeno, započteno
Král Branislav
Kudělková Anna
Mach Pavel Výrazová kalkulačka s přetahováním částí výrazů, mírně grafická
Macháček Matouš Něco z automatického zpracování internetového zpravodajství.
Majerčíková Juliana
Moravčík Ondřej
Rychna Lukáš
Šebesta Michal


Náměty na zápočťáky

Obecně preferuji:

Témata s výhledem do budoucna

Kromě "malých" témat navrhovaných zde se rovnou můžete zaměřit na něco, z čeho by vznikl později ročníkový projekt, bakalářka atd. Viz přehled mých navrhovaných témat v ISu. Čtěte navrhované bakalářky i projekty.

Témata ročníkových projektů a bakalářek samozřejmě omezíme tak, abyste programovali jednu malou ucelenou část, dílčí aplikaci. V řadě případů může být ku prospěchu věci "zápočťák rozchodit, odevzdat, zahodit a začít pak s ročníkovým projektem úplně nanovo" s příslušně upraveným cílem.

Další náměty

Rozličné deskové hry

Předpokládá se, že i počítač bude hrát proti vám nebo sám proti sobě. Rovněž se vyhýbejte hrám jako pexeso, kde je řešení moc snadné.

Automatická identifikace jazyka+kódování dokumentu

Na základě předložené hromádky dokumentů ve známých jazycích a kódování program pozná kódování i jazyk u nového dokumentu. Ve sporných případech řekne třeba víc kandidátských odpovědí.

Automatická identifikace pomocných a plnovýznamových slov

Na vstupu je text (dlouhý, třeba milion vět), nebo i text ve dvou jazycích (a existuje program, který zjistí, která slova ve větě asi překladem odpovídají kterým. Vaším úkolem je navrhnout a implementovat program, který vyrobí automaticky seznam "stop words", tj. pomocných slov, a pak je v (jiném) textu vyznačí. Jako rozšíření lze uvažovat identifikaci pomocných slov v dané větě (protože "být" je někdy pomocné a někdy ne ap.). Testovací data lze vytáhnout z Pražského závislostního korpusu. A s tématem lze pokračovat přes RP k bakalářce.

Genetické programování

Použít techniku genetického programování na jakoukoli rozumnou úlohu. Povšimněte si, že navrhuji genetické programování, nikoli genetické algoritmy. V genetickém programování jsou jedinci strukturovaní, ne jen vektor čísel. Čili například je jedinec funkce v nějakém programovacím jazyce/vašem makrojazyce, která dopadne nejlépe z hlediska predikce vývoje na akciovém trhu. Natrénování proběhne na historickém vývoji kurzy (který slovy banky samozřejmě není zárukou budoucích výnosů).

Triviální strojový překlad

Cílem je implementovat prototyp strojového překladu. Buď může být založen na slovníku a skloňovacích a časovacích pravidlech, nebo na slovníku frází. Neočekává se, že systém bude překládat nějak dobře, ale neměli byste se přestat snažit. Vzorová (trénovací či testovací) data jsou např. korpus CzEng.

Generátor veršovaného slovního salátu

Cílem je vyrobit program vyrábějící básničky. Důraz je na pěkný rytmus a rým (např. podle uživatelem zadaného tvaru básně), volba slov může být víceméně náhodná (ale aspoň dvou či trojsloví za sebou musí vypadat věrohodně).

Generátor pohádek

Uživatel zadá jména postav a požadovaný počet vět. Generátor vytvoří pohádku na libovolné téma s danými postavami. Samotné věty budou náhodně generované, gramaticky pokud možno správné, a s typicky pohádkovým slovníkem.

Veršující Eliza

Cílem je implementovat slavnou psychoanalytičku Elizu. Nemusí ale nutně rozebírat psychické problémy člověka, podstatné je, aby (v libovolném tématu i mimo téma) veršovala, tj. odpovídala (co nejodlišnější) větou v co nejpodobnějším rytmu a do rýmu.

Trénovatelný tokenizér a segmentátor

Cílem je implementovat trénovatelný systém, který daný vstup naláme na slova a větu (viz tokenizace; konce vět jsou typicky, ale ne vždy, vyznačeny nějakým interpunkčním znaménkem). Na základě ukázkově natokenizovaného textu se program pokusí stejné tokenizační a segmentační zásady prosadit v textu novém. Na jazyce textu tedy vlastně nebude záležet.

Obrázkové puzzle

Cílem je zadaný obrázek rozlámat na obdélníky (dle konfigurace stejné či několika málo různých velikostí). Druhý úkol programu je hromádku dílků zase složit dohromady, aby pokud možno vznikl původní obrázek. Uživateli budou postupně předkládány návrhy od nejnadějnějších, aby ověřil, jestli je složení správné.

Doplneni hacku a carek do textu

System se natrenuje na textech s diakritikou a text bez diakritiky pak obohati. Krome toho bude program mit i vyhodnocovaci rezim, kdy text s diakritikou odhackuje, ohackuje a porovna pocet chyb.

Multidiff

Program zpracuje najednou n souboru a usporada je do svazu ("lattice") vyjadrujiciho rozdily mezi soubory. Pro jednoduchost lze uvazovat jen dve operace s textem: uber radek a pridej radek. Svaz nejlepe vykreslit pomoci nastroje GraphViz; rozdily prezentovat napr. po klepnuti na hranu/uzel ve svazu.

Trénovatelné grafiti

Program nabídne malou kreslicí plochu (konfigurací rozdělenou na více částí) pro zadávání znaků tahem myši, tzv. Grafiti (Graffiti). Jaký tah odpovídá jakému písmenku natrénuje uživatel sám v trénovacím režimu, kdy bude kreslit tahy podle diktátu.

Podstatný je minimalistický návrh aplikace, aby spolehlivě a velmi rychle běžela i na mobilních telefonech. (C# možná pro mobilní telefony běžně není, nicméně např. Java pro mobilní telefony trpí stejnými neduhy jako je garbage collector ap., čili C# bude dobrá platforma pro ověření funkčnosti návrhu.)


Ondřej Bojar, $Date: 2009-09-08 13:33:23 $