Hlavní navigace

Seznam Prohlížeč dostal vylepšený překladač, nově funguje na neuronových sítích

19. 10. 2021
Doba čtení: 6 minut

Sdílet

 Autor: Seznam.cz
Do budoucna Seznam plánuje kromě webových stránek i třeba překlad e-mailů.

Překladač integrovaný v Seznam Prohlížeči prošel radikální technologickou proměnou. Nově překládá celé stránky na jeden klik za pomoci neuronových sítí, které Seznamu dodává brněnská společnost Lingea. Nabízí tak konkurenci k dnes populárním DeepL, CUBBITTu nebo Překladači Google. Kromě nutnosti vycvičit neuronové sítě museli programátoři vyřešit i řadu technických problémů, například jak zajistit, aby se přeložená stránka zobrazovala správně a aby byl překlad dostatečně rychlý.

„Náš nástroj překládá celé webové stránky, a to ze šesti jazyků. Uživatel přijde na cizojazyčný web, nahoře se mu v adresním řádku objeví náš oblíbený pejsek Krasty a říká: Tuto stránku já umím přeložit do češtiny. A uživatel, pokud chce, jedním klikem překlad získá. Technicky se stránka rozpadne na jednotlivé části, ty putují na server k překladu nejmodernějšími technologiemi, které jsou v pozadí velmi podobné, jako jsou běžné neuronové překladače, a nakonec stránku zase složíme zpět z odstavců, které jsme dostali z našeho překladače,“ vysvětluje princip fungování nástroje Jiří Kvapil, vedoucí týmu vývoje Seznam Prohlížeče.

Samotná funkce překladu na jeden klik funguje v Seznam Prohlížeči už od roku 2016. Dříve ale firma využívala frázový překlad, kdy nástroj překládal jen jednotlivá slova, maximálně fráze. Neuronové sítě ale pracují s kontextem celých vět, a překlad je proto kvalitnější. 

„Lingea vytváří model na základě trénovacích dat, která roky sbírají a mají v tom velké zkušenosti. Používají Marian NMT, což je neuron machine translation framework a pracuje na pozadí celého modelu. A nad tím je spousta jejich know-how. Jejich původním záměrem ale nebyl překlad webových stránek, takže téměř celý poslední rok společnými silami trénujeme model tak, aby dobře fungoval i v rámci našeho nástroje,“ dodává Kvapil.

Na překladače v prostředí webových stránek čeká řada záludností, které člověku nedělají nejmenší problém pochopit, ale stroj se v nich může snadno splést. Třeba tlačítko Home pro uživatele automaticky znamená návrat na hlavní stránku. Překladač jej ale zpravidla přeloží jako „domov“ a překlad tak může působit matoucím dojmem. 

„Neuronový překladač je výborný v dlouhých větách, ale stále mu posíláme i jednoslovné výrazy. Typicky právě tlačítko Home nebo seznamy, jako například výčet kantonů ve Švýcarsku. V takovýchto případech je totiž stroj někdy až příliš kreativní a musíme neuronku trochu krotit a říct ji, že jde o frázi a není na místě využívat modely natrénované na beletrii,“ vysvětluje Adam Raška, senior product manager v Seznamu.

Aby překlad dával smysl

Vývoj neuronové sítě měla na starosti Lingea, samotnou integraci do Seznam Prohlížeče a vývoj metody překladu webů pak museli vyřešit vývojáři Seznamu. Podle Kvapila je proces samotného překladu hodně složitý. „Nejdříve musíme webovou stránku kompletně rozebrat na elementy, které nejenže posíláme překladači, ale musíme zajistit, aby stránka byla srozumitelná i poté, co se do prohlížeče vrátí přeložený text. Elementy míří na překladačový server, který obsah webu rozebere na menší části, aby překlad netrval příliš dlouho. V tu chvíli se zapojí naše kubernetí síť se spoustou malých překladačů, které přeloží jednotlivé věty. Překladače vrátí překlady na server, který je složí zpět do celku pochopitelného pro frontend a výstup pošle zpět na do Prohlížeče, který uživateli ukáže výsledek v podobě přeložené webové stránky. Takže nejdřív musíme web kompletně rozebrat až na jednotlivé věty a z jednotlivých vět zase složit zpět kompletní webovou stránku,“ vysvětluje princip fungování překladače Kvapil.

Nástroj zároveň na začátku celého procesu rozebere celou stránku na HTML prvky, které otaguje, aby překladač věděl, kam přesně má přeložené výrazy vrátit. Tagy zároveň určují, v jakém formátu se jednotlivé prvky stránky zobrazují, tedy zda jsou například tučně nebo kurzívou. Prohlížeč díky tomu i nepomíchá přeložený text s originálem. 

„Oproti předchozí verzi jsme překladač vylepšili i v tom, že nově umí pracovat s dynamickým obsahem, což je dnes běžná praxe webovek. Jde o obsah třeba na e-shopech, kdy se různá menu zobrazují až po najetí myší a do té doby pro prohlížeč neexistují. Pokud bychom s tímto obsahem nepočítali, tak pro uživatele po kliknutí na překlad zůstane tento obsah v originálním jazyce,“ dodává Raška. Nástroj k překladu dynamického obsahu využívá javascriptové mutation observery, které umožní překladači zjistit, že se na webu něco změnilo a je třeba překlad doplnit.

Celý proces podle Jiřího Kvapila zabere i u dlouhých vět maximálně tři vteřiny, ale nástroj zvládá překládat cizojazyčné weby většinou za vteřinu až vteřinu a půl. Vývojáři zároveň počítají s tím, že rychlost překladu se bude časem zvyšovat spolu s tím, jak Seznam bude postupně cachovat jednotlivé weby. „Máme extrémně rychlou cache, kterou postupně rozšiřujeme a která zvládá odpovědět maximálně za sto milisekund. Samozřejmě to vyžaduje, aby alespoň nějaký uživatel na té stránce byl.“

Překladač má stovky vlastních serverů

Překladač využívá cache v prohlížeči i na serveru. Prohlížeč uchovává originální znění aktuálně zobrazené stránky pro případ, že by si ji uživatel chtěl přečíst v původním jazyce. Na serveru pak zůstávají všechny weby navštívené uživateli Seznam Prohlížeče s výjimkou soukromého obsahu. Překladač pak při opětovné návštěvě webu zkontroluje, které části už v minulosti překládal, a ty uživateli zobrazí z cache. Celý proces je díky tomu ještě rychlejší, protože server překládá jen ten obsah, který je na stránce nový.

„V případě stránek cachujeme pod unikátním ID vždy tu konkrétní část, kterou pošleme do překladače. Takže pokud proběhnou i drobné změny na stránce, typicky přidá se do Wikipedie jeden odstavec na konec, tak přeložíme jen tento nový odstavec a zbytek vezmeme z cache. Takový překlad je potom velmi rychlý a časem se bude ještě zrychlovat spolu s tím, jak budou uživatelé navštěvovat a překládat jednotlivé weby. Velmi dobře to může fungovat u vědomostních zdrojů, které se příliš nemění. U zpravodajských serverů to bude těžší, protože mají každý den mnoho nového obsahu. Na straně serverů na to ale jsme připraveni,“ říká Raška.

Vývojáři doposud nasbírali 30 GB čistého textu, což představuje asi 400 tisíc stránek. „Cache je extrémně rychlá. Používáme Scylla DB. Je optimalizovaná na extrémní množství dotazů, připraveni jsme na desítky tisíc requestů každou vteřinu,“ dodává Kvapil.

Seznam zpravidla využívá kubernetes, ale cache běží na samostatném serveru, který je pro toto využití optimalizovaný a jakákoliv virtuální vrstva je nechtěná. Podle Kvapila je také zajímavé, na kolika strojích překladač momentálně běží. „Maximální běžná hodnota, kterou bychom teď byli schopní odbavit, je 1600 procesorových jader nebo threadů. A kdyby šlo opravdu do tuhého, tak 3,5 tisíce jader. S tím, že k tomu máme běžně připraveno asi 2,5 terabajtů paměti.“

„Jádra optimalizujeme vůči tomu, jak uživatelé systém používají, takže maximální dostupnou kapacitu věnujeme konkrétně překladům z angličtiny a máme to odškálované. V jiných jazycích, které naši uživatelé nepoužívají tak často, přece jenom ta rychlost nemusí být taková, protože 90 % našich uživatelů využívá překladač na překlady z angličtiny do češtiny. Tam chceme dosahovat těch čísel, která tady zazněla. U zbylých jazyků nemáme tak vysoké nároky,“ vysvětluje Raška.

I menší jazykové modely ale vývojáři chtějí do budoucna posunout na lepší úroveň. Lingea má například velmi pokročilou neuronovou síť pro překlady z ruštiny. Překladač ale v případě Seznamu zřejmě nezůstane jen u překladů webových stránek. Firma do budoucna přemýšlí i o dalších službách typu oboustranného překladače nebo překladů e-mailů také z češtiny do cizích jazyků.

Autor článku

Novinář a moderátor, redaktor Lupa.cz a spolupracovník Českého rozhlasu Plus. Dříve působil také v marketingu a pracoval ve státní správě.