Přejít k obsahu  Přejít k hlavnímu menu

Firemní weblog poradenské společnosti H1.cz

Zobrazit všechny články
Zpět

Clusterizace v OpenRefine

Clusterizace nespojuje jen různé tvary jednoho slova do jedné skupiny, ale může pomoct se zkrácením doby strávené čištěním a klasifikaci klíčových slov během tvorby analýzy klíčových slov. Mrkněte na detailní návod, ve kterém vás všemi taji clusterizace provede naše SEO konzultantka Dominika Mašková.

Co bude potřeba

1) Účet v nástroji Marketing Miner (český nástroj, který používá clickstream data)
2) Stažený OpenRefine v počítači – jak si nastavit OR najdete v návodu od Pavla Ungra

Clusterizace v Open Refine se skládá z několika algoritmů, které porovnávají hodnoty a spojují do skupin takové, které by mohly reprezentovat tu samou věc. Čím větší dataset s klíčovými slovy zpracováváme, tím více nám clusterizace může zkrátit dobu strávenou jak nad čištěním, tak při klasifikaci. Abyste z clusterizace dostali maximum doporučuji si přečíst aspoň něco málo o tom, jak jednotlivé algoritmy fungují a jak je nastavit.

Příprava datasetu

Na začátku máme surový dataset nasbíraných klíčových slov, který není očištěný od nerelevantních klíčových slov. Jediné, co je potřeba udělat, je odmazat duplicity (stejná klíčová slova, která se do datasetu při sběru dostala vícekrát). Můžete k tomu využít rychlou funkci v Excelu nebo to jde také přes OpenRefine. Není potřeba odmazávat nadbytečné mezery, provádět normalizaci nebo odmazávat diakritiku, to vše funkce Cluster and edit v OpenRefine bere v úvahu.

Dataset by měl obsahovat následující sloupečky:

  • klíčová slova
  • celková hledanost (součet Google a Seznam)
  • hledanost Google
  • hledanost Seznam

Původní názvy sloupečků pro hledanost Google a Seznam (Google/Sklik Search Volume) z Marketing Mineru prozatím neměňte.

Abychom mohli později využít některé skripty, vytvoříme si ještě kopii sloupce s klíčovými slovy (na obrázku výše pojmenovaném Keyword). A to tak, že klikneme na sloupeček s klíčovými slovy > Edit column > Add column based on this column. Do pole New column name napíšeme libovolný název sloupce a v poli Expression ponecháme výchozí hodnotu value.

Clusterizaci budeme provádět na původním sloupci.

Jednotlivé algoritmy clusterizace si ukážeme při tvorbě analýzy klíčových slov na téma Pivo. Funkci clusterizace najdeme v Open Refine pod nabídkou sloupečku > Edit cells > Cluster and edit.

TIP: Více o tom, jak pracovat s analýzou klíčových slov a jak ji využít pro tvorbu kvalitního obsahu, i jak s obsahem dál pracovat, aby síla vašeho webu rostla, se dozvíte na našich školeních SEO a link buildingu.

Samotná clusterizace

Clusterizace je jednou z nejsilnějších funkcí OpenRefine. Clustry se vytváří automaticky podle různých clustrových algoritmů, které pracují na základě dvou metod:

Metoda Key Collision

Metoda Key Collision vytváří pro všechny fráze „klíč“. Pokud je tento „klíč“ stejný pro více frází, spojí je dohromady. Výpočet této metody není nějak složitý, a proto je výsledek hotový během několika sekund.

1 Algoritmus Fingerprint

Algoritmus Fingerprint, pracující podle metody Key Collision, je rychlý a jednoduchý. Je u něho nejméně pravděpodobné, že dojde ke špatnému návrhu. Generování „klíče“ probíhá následovně:

  • odmaže vícenásobné mezery, úvodní a koncové mezery
  • převede velká písmena na malá
  • odmaže interpunkci
  • odstraní diakritiku (normalizace) > převod znaků na jejich podobu v ASCII
  • rozpozná rozdílné pořadí slov
  • rozpozná v jedné frázi vícekrát stejné slovo

2 Algoritmus Ngram-Fingerprint

Klasický Fingerprint pracuje s celými frázemi.Algorit­musNgram-Fingerprint vytváří „klíč“ tak, že převede frázi na tzv. n-gramy. N-gram představuje řadu n po sobě jdoucích položek z dané posloupnosti.

Kdo potřebuje praktickou ukázku, tak doporučuji rozklad na n-gramy pomocí generátoru, díky čemuž pochopíte i jak funguje Ngram Size. V praxi to znamená, že se spojí různě dlouhé fráze, které obsahují stejná písmena. Z tohoto důvodu dochází u této metody místy i ke špatným návrhům, je tedy potřeba jednotlivé návrhy trochu zkontrolovat.

Čím víc budeme zvyšovat hodnotu Ngram Size, tím více bude první řádek obsahovat nesmyslných návrhů spojení do clustru. Pro ještě relevantní návrhy je potřeba odscrollovat dolů, jak ukazuje obrázek výše.

3 Algoritmy Key Collision / Metaphone3 (pro angličtinu) & Cologne-phonetic (pro němčinu)

Občas se hodí použít i tento algoritmus, který clusterizuje slova na základě jejich výslovnosti. Často dochází k tomu, že lidé do vyhledávání píšou nesprávné názvy značek, které se obtížně vyslovují.

V češtině může být kromě špatné výslovnosti značek problematické také psaní s/z, f/v, t/d. Konkrétně u českého jazyka nabízí relevantnější clustry spíše Cologne-phonetic.

Předchozí algoritmy pracující podle metody Key Collision jsou na výkon počítače málo náročné a výsledky nevyžadují příliš kontrolovat. Během chvilky je hotovo, takže se vyplatí používat při každé analýze klíčových slov.

Další algoritmy, které chci uvést, už ale potřebují více kontroly, a tedy i více stráveného času. Je na uvážení každého, jak velký má dataset a jak moc se mu vyplatí trávit čas hledáním dalších spojení. Chceme-li ale spojit do jedné skupiny všechny varianty jednoho slova, tedy vezmeme-li v potaz, že čeština pracuje se 7 pády, časováním sloves, jednotným/množným číslem, tak budeme potřebovat i následující algoritmy.

Metoda Nearest Neighbor

Na rozdíl od Key Collision metody, tak metoda Nearest Neighbor umožňuje nastavit vzdálenost či rozdílnost, kterou jsme ochotni tolerovat.

Vzhledem k náročnosti výpočtu dochází ale k „blokování“ (Block Chars). To znamená, že se namísto řetězců porovnávají větší bloky. Dataset s 3 000 klíčovými slovy by bez „blokování“ (nastavení Block Chars) vyžadoval 4,5 milionu výpočtů vzdálenosti. Když byste to zkusili u běžného počítače, tak se sebere a vyskočí z okna. Díky „blokování“ se ale vyžaduje k porovnání jen 45 000 výpočtů. Pokud ale máte dataset o několika tisíci slovech, tak se výsledků nemusíte dočkat ani s „blokováním“. Pokud máte ještě navíc málo výkonný počítač, tak s tím vůbec nepočítejte.

1. Algoritmus Levenshtein

Levenshtein je asi nejúčinnější algoritmus. Levenstein či Levensteinova vzdálenost vkládá, maže a nahrazuje různý počet znaků ve slovech, aby zkusil nalézt spojení. Kolik znaků zkusí nahradit, aby nalezl více návrhů ke spojení, řídíme pomocí hodnoty Radius. Ten určí, kolik algoritmus musí provést editačních změn, aby se z jedné fráze stala druhá. Příklad: „kuře na pivu“ a „kuře na pivě“ má editační vzdálenost 1, protože požaduje jedinou operaci, což je změna „u“ na „ě“, aby se slova shodovala. Více jak 3 editační změny nedávají u klíčovky smysl.

Díky tomuto algoritmu jsme ale schopni skutečně spojit do jednoho clusteru všechny varianty jednoho slova (pády, skloňování, časování a hlavně jednotné/množné číslo). Rozpoznává také překlepy, pravopisné chyby a cokoli, co předchozí metody nezachytily. Je potřeba si však dát pozor, tahle metoda generuje více chybných návrhů. Výsledky je nutné ručně projít.

(Radius = hodnota vzdálenosti / Block Chars = jak velké bloky se mají porovnávat)

Je možné případně snižovat hodnotu Block Chars, abyste získali více návrhů ke spojení do clusterů. V praxi se ukázalo, že jít pod hodnotu 3, je ztráta času.

2. PPM

PPM metoda provádí statistickou analýzu a predikuje pomocí částečné shody, jaký znak bude následovat v řetězci. Tato metoda generuje ale spíš jen špatné výsledky.

Doporučuji dodržovat pořadí metod popsané na této stránce (od přísnější po volnější). Jakmile se dokončí poslední metoda clusterizace, je dobré se ještě vrátit zpět na první Fingerprint, zda se neobjevily nové základní clustery.

Skripty pro dokončení clusterizace

Po clusterizaci doporučuji použít skriptové řešení Martina Žatkoviče a Jirky Jakubce z článku o automatizaci, díky kterému docílíte, že se pro každý cluster automaticky vybere klíčové slovo s nejvyšší hledaností. Nicméně je nutné, aby se sloupce jmenovaly následovně, jinak skript nebude fungovat:

  • Keyword = původní sloupec s klíčovými slovy, na kterém jsme prováděli culsterizaci
  • Keyword-bu = kopie sloupečku „Keyword“
  • Search = celková hledanost, tedy součet hledanosti na Google a na Seznam

Pokud je v datasetu více sloupečků, tak je Martinův skript odmaže. Pro jejich navrácení, stačí jít do Undo/Redo v OpenRefine a vrátit se o dva kroky zpět:

 

Dataset by měl mít následující podobu:

Pro ty, co mají v datasetu jednotlivě sloupečky hledanosti Google a hledanosti Seznamu. Níže je k dispozici dodatečný skript, který hledanosti jednotlivých slov v clustru sečte. Vložte pomocí tlačítka Apply, které najdete v levém horním rohu OpenRefine pod listem Undo / Redo:

 

Pozor, sloupečky s hledaností Google/Seznam musí mít původní název z Marketing Mineru, tedy Google Search Volume a Sklik Search Volume!

Skript k sečtení hledaností v clusteru:

(Skript ke stažení.)

Takto vypadá nová podoba:

Fáze clusterizace je hotová. Stejná slova jsou v jednom clustru se sečtenou hledaností a my máme o to méně práce při následném čištění a klasifikaci.

Sloupeček „Keyword-bu“ můžete smazat (>Edit column > Remove this column). 

Prázdné řádky vymažete tak, že např. u sloupečku Keyword najedete v nabídce na Facet > Customized Facets > Facet by blank (null or empty string). V použitém facetu zvolíte True. Následně v úplně prvním sloupečku celé tabulky využijete nabídku All > Edit rows > Remove all matching rows.

Pomocný sloupec pro čištění a klasifikaci

Pro ještě větší usnadnění čištění a klasifikace doporučuji využít pomocný druhý sloupec, jak radí ve svém článku o čištění a klasifikaci Jakub Kašparů.

Opět si vytvoříme kopii pro sloupec „Keyword“. Na následujícím obrázku pojmenovaném jako sloupec „X“. U tohoto sloupce se zbavíme diakritiky tak, že přes > Edit cells > Transform… vložíme následující kód:

Kód pro zbavení se diakritiky

Nezapomeňte si přepnout jazyk na Python/Jython:

Díky tomu, že se zbavíme diakritiky, získáme menší počet skupin slov, ze kterých musíme vybírat pro čištění a klasifikaci:

Například tato klíčová slova můžeme zaklasifikovat jediným kliknutím:

  • ležák
  • ležak
  • lezák
  • lezak

Na tomto sloupci „X“ pak provádíme klasifikaci pomocí Word facetu (> Facet > Customized facets > Word facet). Návod naleznete už ve videonávodu od Jakuba Kašparů (třetí video v článku v kapitole Třídíme výrazy do skupin).

 

V případě nějakých nesrovnalostí v článku, nebo pokud potřebuje poradit, tak pište na email dominika.maskova@h1.cz.

Zdroje:

Clustering In Depth [online]. 2020 [cit. 2021–02–01]. Dostupné z: https://github.com/…ing-In-Depth

Seriál Marketingová strategie | Čistíme a tagujeme data pomocí Open Refine [online]. 2020 [cit. 2021–02–01]. Dostupné z: https://lynt.cz/…open-refine/ 

  • Jan Oberpfalzer
    09. 07. 2022 / 10:35

    Díky za skvělý a praktický návod Honza.

RSS feed komentářů k tomuto článku
RSS feed komentářů ke všem článkům



(nebude zveřejněn)



Položky označené * jsou povinné
Vaše osobní údaje jsou u nás jako v bavlnce, nikomu je nedáme. Informujte se zde.