why don't you just Google it?

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 facebooku, ale doteď jsem nestahoval celou stránku. Google samotný má velmi elegantní, prostý design bez zbytečných grafických udělátek, ale to bohužel neznamenalo, že měl prostý kód. Vzhledem k tomu, že tam byl vnořený javascript a milion html tagů, bylo hledání odpovědí docela nemocné.

Výstup z curl. Tohle je na pár a4..

Jeden z prvních nálezů byl, že hledané odpovědi jsou často mezi html tagy <span class=_m3b> </span>. "_m3b" mi absolutně nedávalo smysl, ale whatever. Na to můj mentor vykutil příkaz do sedu, který je schopen jednou projít celý dokument a vrátit přesně to, co je mezi zminěnými tagy. Obalil jsem to do bash scriptu, který se ptá Googlu a odpověď takhle zpracuje a následně vytvořil nadstavbu, která načítá seznam našich otázek a pro každou z nich zkusí najít odpověď. Takto jsem našel polovinu odpovědí. Následně jsme však přišli na to, že Google těch odpovědí dává mnohem víc. Musel jsem tedy celý program překopat, aby do něj šly snadno přidávat další tagy (nemluvě o tom,že některé byly vnořené, což se muselo taky ošetřit). Na to už regulární výraz použít nešel. Napsal jsem tedy vlastní rozšiřitelný HTML parser, co odpověď najde. Samozřejmě, ty tagy jsem musel najít ručně v tom nechutným moři kódu. Tím jsem krásně zabil půlku týdne.

Třeba tady je hledaný text mezi tagy <span class="_Tgc"> </span> a jednotlivé odpovědi jsou tučně, tedy schované pod tagy <b> </b>

Mimochodem, takhle strojově pumpovat google je proti podmínkám používání a hrozí za to captcha a jiný voser. Nevadí. Přikázal mi to bývalý manažer Googlu, tak to bylo v pohodě.

Fuck this shit.

Výstupem tohoto výsostného mrdání bylo, že Google vrátí odpověď na 85% otázek a pokud bereme pouze (tučně vyznačené) slovní odpovědi místo celých pasáží, tak odpoví správně na 60%. Dokonce jsem našel několik otázek, které měly v našem datasetu špatnou odpověď. YodaQA je teda někde na 45% s tím, že zatím nejsme schopni vypsat celé seznamy filmů, díky čemuž si Google docela dost nabral. Samozřejmě snažit se konkurovat Googlu v jeho rajonu je dosti sebevražedné, ale je to pěkné porovnání.

Komentáře

Populární příspěvky z tohoto blogu

Creating my own Point of Sale system, Part 0: Start

Creating my own Point of Sale system, Part 1: Design

Asian Squad