Příspěvky

Zobrazují se příspěvky se štítkem FEL

Co všechno jsem se naučil v Summer Campu

Už je půlka září a příští týden máme poslední meeting. Byla to fantastická příležitost, za kterou jsem eClubu nesmírně vděčný. Naučil jsem se toho spoustu, zvlášť v programování. Používal jsem střídavě Javu, Bash a Python. Python jsem asi procvičil nejvíc, tam jsem dělal všechno možné, včetně webového serveru. Dále jsem měl to potěšení být trestán za věci, co si na univerzitě tolik neosaháte, jako je korektní dokumentace, formátování kódu nebo smysluplné názvy proměnných. Kurz Programování 2 je oproti skutečnému pracovnímu prostředí docela hovno. Mám nově PTSD z kódu, kde chybí mezery mezi operandy (i.e. i+=1 místo i += 1), protože jsem jednou dostal přes 60 připomínek na opravu formátování. Dozvěděl jsem se ale také mnohé lidské poznatky z mého pobytu mezi autisty . programátory. Například: Pozdní příchod na meetingy lze snadno kompenzovat tím, že něco upečete. Je vhodné si pamatovat jména lidí, co sedí u pití. Z veřejné kofoly se velmi snadno stane kofola týmová Nad...

In Soviet Russia, QA systems ask YOU

Poslední dobou dělám samé meniální práce. V jistém smyslu mi to i vyhovuje, ale blbě se tím vytahuje. Teď jsem musel ručně zpracovat 542 otázek . Přišlo mi vtipné, že se tentokrát ptal systém mě. YodaQA ke každé otázce vygeneruje několik clues (předmět otázky, sousloví) a pokusí se v databázi najít k nim náležící koncepty. Například když se ptáte na "Who directed X-Men: Days of Future Past", tak mimo jiné najde koncept "X-Men: Days of Future Past". Nebo nenajde. A pak to je průser. Mým nejnovějším úkolem (zahrnutým v pojmu entity linking) bylo projít nějaký dataset (který jsem předtím vytvořil..) a tam ručně přiřadit koncepty. Občas to bylo lehký, protože ty koncepty vybral správně. Jindy jich namatchoval tucet, protože na jména bez příjmení to najde spoustu mrdek. Nejhorší bylo, když to nenašlo nic, protože ručně hledat koncepty je docela peklo. Musel jsem kvůli tomu pracovat s jazykem SPARQL, který slušně řečeno nedává smysl. Zpočátku jsem to dělal v textovém ...

why don't you just Google it?

Obrázek
Předminulý týden jsem od samotného šéfa dostal za úkol porovnat naší performance s Googlem. Vlastně to probíhalo tak, že se o tom spolu bavili s mým mentorem, který mu na to řekl "Určitě, Roman to zařídí." A tak jsem to zařídil. Nejprve jsem teda netušil, že google nějaký question answering performance vůbec má. Musel jsem kvůli tomu tomu nastavit jazyk v opeře na angličtinu s pomocí přepínače &hl=en. Teď jsme schopni si to nechat zobrazit, ale nejraději bychom to chtěli jako čistý text. Er. Na to se používá nástroj curl, který stáhne celou stránku tak, jak jí dostane prohlížeč. Musel jsem pak řešit fakt, že Google dává pro různé prohlížeče různé výsledky, takže jsem musel zfalšovat můj tkz. user agent. Prostě musel curl při dotazu předstírat, že je firefox. Vpravo je v rámečku přímo odpověď od Googlu Ok, tak jsme schopni stáhnout stránku jako prohlížeč. Koukali jste se někdy na zdrojový kód stránky? Já se maximálně díval na nějaký element, nebo fotku ve facebook...

(Computer) science, bitch

Poslední dobou neřeším přímočaré úkoly, ale naopak věci, které jsou progresivně horší a horší. Začalo to tak, že jsem měl implementovat tkz. fuzzy search v seznamu názvů. To je vyhledávání, které vám vrátí výsledek, i když napíšete otázku s nějakou chybou. Dělá se to tak, že spočítáte editační vzdálenost pro všechna slova a vyberete ta s nejmenší. Editační vzdálenost jenom znamená, kolik změn musíte udělat, abyste přeměnili řetězec A na řetězec B. Například X-Men a X-men má editační vzdálenost 1, protože musíte změnit velké M na malé m. Samozřejmě, ten algoritmus na počítání editační vzdálenosti je přímo úměrný délce slov a těch slov máte řadově 10 na sedmou (10 000 000), takže pro každý dotaz počítat 10^7 editačních vzdálenosti je dosti nemocné. A co teď. Vědecký článek, podle kterého jsem to implementoval, uváděl dvě možnosti. Jedna byla aproximační (tj. nemá zaručeno, že slovo najde, přestože existuje) a rychlá, druhá kompletní ale 100 krát pomalejší. První fungovala na bázi b...

YodaQA, týden třetí

Včera jsem si odchodil dalších 24 hodin, co mám týdně. (3 krát 8 hodin)  Dvakrát se něco rozbilo a já to musel trochu v panice opravovat, protože už jsem to odeslal do hlavní větve. Nakonec jsem ale to webové rozhraní vylepšil, teď se u jednotlivých odpovědí zobrazují odkaz strategie, jak k nim YodaQA dospěl, což v praxi znamená jenom "hledal jsem v celém dokumentu, hledal jsem v názvu, hledal jsem v strukturované databázi. Přímo důvody mě ještě čekají, to bude trvat déle.  Vtipné bylo, že v úterý jsem musel místo programování testovat naší filmovou odnož a to spočívalo v tom, že jsem měl otevřený spreadsheet a do toho si zaznamenával otázky a odpovědi. Vtipné to vlastně není. Je to příšerný vopruz. U generických otázek to alespoň občas dá nějakou překvapivou otázku, ale tady strojově (chápete? strojově, hahahaha) hledáte mezi 25 nabízenými větami správnou odpověď. Zatím náš systém docela selhává, i otázky typu "kdo režíroval X" občas posere. Problém je trochu v...

YodaQA

Obrázek
Tohle bude takové menší neoficiální povídání o mém působení v summer campu eClubu, kam jsem se letos přihlásil. To je taková brigáda, kdy vám dají 8000,- měsíčně za to, že spolupracujete na všemožných projektech souvisejících s big data, machine learningem, domácí automatizací, cloudem či mobilních aplikací. Přiznám se, že můj vstupní pohovor dopadl příšerně. Přišel jsem fakt nepřipravený a asociální a hned při první otázce jsem zamrzl. Bylo to "Co vás baví?" Ach jo. Tohle musím natrénovat. Každopádně ze mě vypáčil, že vím, co je to quicksort a linked list a rovnou mě přiřadil. Nevím, jestli mě tím odbyl, ale tvářil se, že to je dobrá nabídka. Doteď nevím, jestli se ke mně Big Boss chová ironický, nebo ne. Každopádně můj projekt je (zatím..) YodaQA, neboli "Yet anOther Deep Answering pipeline", což je ve zkratce (open source!) systém, kterému dáte nějakou konkrétní otázku, jako například "Who wrote Neuromancer" a ono to tu otázku analyzuje a dá vám kon...