Hlavní navigace

Automatické generování štítků pro firemní profily

28. 6. 2022
Doba čtení: 6 minut

Sdílet

 Autor: Depositphotos
Katalog Firmy.cz člení záznamy o pobočkách firem do velkého, ručně udržovaného stromu kategorií. Přestože je možné pobočky na této službě zařadit do více kategorií, existuje řada případů, kdy samotná kategorizace nestačí.

Pro doplnění kategorií je užitečné štítkování (například kategorii „prodejce aut” doplnit o štítky „Citroen”, „Peugeot” nebo kategorii „restaurace” doplnit o „dětský koutek”, „vegan-friendly” apod.). V tomto článku se se čtenáři podělíme o postup, jakým jsme pro náš firemní katalog automaticky vygenerovali velkou databázi štítků z dostupných popisků firemních poboček. V textu budeme pro jednoduchost o záznamech v katalogu – pobočkách firem – psát jako o firmách.

Z produktového pohledu chceme umožnit správci (uživateli spravujícímu firemní profil) přiřadit firmě doplňující štítky, případně štítky automaticky doplňovat na základě textové shody s popiskem v katalogu nebo obsahem webu firmy. Podle nich je možné firmy filtrovat a dále využít jako klíčová slova při vyhledávání. Pro přiřazování štítků je zásadní poskytnout správci od začátku dostatečně širokou nabídku možných kandidátů jako nápovědu, jaké štítky se mohou jím spravovaných firem týkat. Vhodnou cestou, jak získat databázi vhodných štítků, je extrakce klíčových slov z popisků firem a jejich následné ruční protřídění. Je totiž mnohem snazší promazat návrhy na štítky, než je vymýšlet.

Rozhraní pro editaci štítků

Autor: Ondřej Filip

Přehled řešení

Základním postupem, který jsme použili pro tvorbu vhodných štítků, je hledání vhodných sousloví v popiscích firem. Mimo to si pomůžeme zalogovanými dotazy z vyhledávače Seznam.cz, kdy nám hledanost jednotlivých sousloví napoví, jaká je jejich důležitost.

Celkový postup pro zpracování dat se skládá z těchto kroků:

  1. identifikace jmenných frází v popiscích firem
  2. výpočet relativní četnosti jmenných frází pro každou kategorii
  3. získání četných dotazů z Vyhledávání Seznam.cz, které vedou na Firmy.cz
  4. průnik jmenných frází s velkou relativní četností a dotazů z Vyhledávání
  5. ruční anotace vzorku vygenerovaných štítků a následná binární klasifikace pomocí strojového učení

Přehledový diagram řešení

Autor: Ondřej Filip

Extrakce jmenných frází pomocí morfologických značek

Popis firemní pobočky se zvýrazněnými jmennými frázemi. Některé z nich jsou vhodné jako štítky, například hlídané parkoviště či restaurační stravování.

Autor: Ondřej Filip

Přirozenými kandidáty na štítky jsou tzv. jmenné fráze nalezené v popiscích firem. Zjednodušeně řečeno, jmennou frázi ve větě tvoří podstatné jméno s jeho přívlastky. Samozřejmě ne každá jmenná fráze je vhodný štítek, s čímž se vypořádáme později.

Jak lze jmenné fráze identifikovat? Zůstaneme-li u definice jmenné fráze jako podstatného jména s přívlastky, budeme hledat po sobě jdoucí přídavné a podstatné jméno ve stejném pádu, čísle a rodu (přívlastky shodné + podstatné jméno) následované volitelným podstatným jménem v druhém pádě (přívlastek neshodný). Abychom takové skupiny slov mohli identifikovat, potřebujeme u jednotlivých slov určit mluvnické kategorie. Tomuto procesu se říká Part-of-Speech tagging a pro nekomerční použití k tomu můžeme použít například nástroj Morphodita. V Seznamu máme k dispozici tagger vlastní, postavený na Majce.

Slovo POS tag Vysvětlení značky
ubytování k1gNnSc1 podstatné jméno (k1), rod střední (gN), číslo jednotné (nS), první pád (c1)
ve k7c6 předložka (k7), šestý pád (c6)
dvou k4 číslovka (k4)
a k8 spojka (k8)
vícelůžkových k2gMnPc6 přídavné jméno (k2), rod mužský živ. (gM), číslo množné (nP), šestý pád (c6)
pokojích k1gMnPc6 podstatné jméno (k1), rod mužský živ. (gM), číslo množné (nP), šestý pád (c6)

Tabulka 1: Příklad morfologických značek (POS tagů). Znaky na lichých pozicích jsou atributy (k – kind, tedy slovní druh 1–9, g – gender M/I/F/N, n – number (singulár/plurál), c – case neboli pád 1–7). Na sudých pozicích jsou hodnoty atributů malým písmenem nebo číslem. Uvedené značky jsou podmnožinou tzv. brněnských značek.

Jakmile máme v textu označené morfologické značky, můžeme v nich vyhledávat vzory odpovídající jmenným frázím. Například pomocí vzoru „k2cXnYgZ* k1cXnYgZ k1c2?” (viz obrázek 3) lze identifikovat některé jednoduché jmenné fráze skládající se z přídavných a podstatných jmen. Jmenné fráze můžou být složitější – mohou obsahovat zájmena, číslovky, předložky, o které je možné vzor rozšířit. Jmennou frázi nemusí tvořit pouze po sobě jdoucí slova („dvoulůžkové a třílůžkové pokoje”), ale tuto situaci v našem postupu zanedbáváme, protože důležité jmenné fráze se vyskytují ve více popiscích a alespoň v některých z nich je obvykle detekovat dokážeme.

Vzor pro jednoduché jmenné fráze. Odpovídá posloupnosti libovolného počtu přídavných jmen (i žádného, wildcard*) a podstatného jména shodujících se v pádu, čísle i rodu, následované (volitelně, wildcard?) podstatným jménem v druhém pádě. X, Y, Z jsou proměnné.

Autor: Ondřej Filip

Výpočet významnosti jmenné fráze podle její relativní četnosti

Zpracováním databáze firemních popisků získáme seznam všech jmenných frází a jejich četnosti, které nám poslouží k odhadu důležitosti a zprostředkovaně jako skóre „štítkovitosti”. Samotnou četnost nelze použít přímo, protože naším původním záměrem bylo pomocí štítků naopak nabídnout jemné filtrování, takže bychom chtěli detekovat i relativně vzácné sousloví. Pokud si zvlášť spočítáme četnosti pro každou kategorii a porovnáme je s globálními četnostmi, získáme jmenné fráze, které jsou významné pro jednotlivé kategorie a do značné míry tím zredukujeme množství obecných neinformativních frází.

Fráze Rel. četnost ( R ) Četnost – celkem ( N ) Četnost – Auto-moto ( Nc )
s nabídkou aditivovaných 0.99 755 755
zimní řetězy 0.92 83 81
školení referentů 0.87 73 68
mytí motoru 0.72 95 72
IVECO 0.72 183 135
ze zahraničí 0.53 1184 636
stavební spoření 0.00 6238 1

Tabulka 2: Příklady jmenných frází a jejich relativních frekvencí pro kategorii Auto-moto). Relativní četnost se vypočítá pomocí vzorce R = Nc / (N + 5). Konstanta 5 ve jmenovateli ponižuje skóre pro málo četné jmenné fráze.

Průnik jmenných frází a dotazů fulltextového vyhledávání

Z logů ve Vyhledávání Seznam.cz můžeme získat dotazy, pro které uživatelé kliknou na výsledek vedoucí na doménu Firmy.cz. O těchto dotazech jednak víme, že se týkají hledání firem, ale navíc v nich uživatelé často používají klíčová slova, podle kterých by chtěli firmy třídit. Pokud tyto dotazy použijeme pro filtrování jmenných frází z předchozího kroku, získáme množinu štítků, která bude reflektovat potřeby našich uživatelů a správcům profilů nabídne možnost relevantně oštítkovat jejich firmy.

Ve svém projektu jsme použili částečnou shodu jmenné fráze s dotazem a aplikací vhodných prahů na relativní četnost a shodou s dotazem jsme vygenerovali 31 135 kandidátů na štítky napříč 561 kategoriemi.

Závěrečná klasifikace štítků pomocí strojového učení

Relativní četnost se ukázala jako rozumný prvotní filtr, nikoliv ale dokonalý. Například pro štítky, které dávají smysl ve větším množství kategorií z různých podstromů, vyjde poměrně malá. Proto jsme ručně prošli 3 000 kandidátů a označili je podle toho, jestli se jedná o dobrý štítek, nebo ne. S výslednou kvalitou jsme nebyli zcela spokojeni.

Proto jsme tento vzorek využili jako učící data pro finální jednoduchý lineární klasifikátor, který upraví skóre kandidátů na základě 10 jednoduchých signálů (relativní frekvence, četnost dotazu, četnost fráze apod.). Přeskórováním jsme zvýšili podíl vhodných štítků (true positives) o cca 40 % u TOP 20 % kandidátů v porovnání se skórováním relativní četností.

Linux tip

Zbývá ruční práce

Pro katalog Firmy.cz bylo zapotřebí vytvořit prvotní databázi štítků, která administrátorům pomůže k výběru vhodných kandidátů pro zlepšení služby. Vhodným zpracováním popisků z katalogu a logů Vyhledávání Seznam.cz jsme vygenerovali více než 30 tisíc kandidátů na firemní štítky.

Množinu kandidátů následně ručně přebrali a opravili administrátoři služby, čímž vznikla kvalitní databáze štítků pro označení firemních profilů. Takto vytvořená výchozí sada štítků se dále obohacuje o ručně schvalované návrhy správců firemních profilů.

Autor článku

Vystudoval teoretickou informatiku na Matematicko-fyzikální fakultě Univerzity Karlovy. Nyní pracuje ve společnosti Seznam.cz, kde se svým týmem připravuje modely strojového učení pro fulltextové hledání.