Jehla v kupce sena: Thesaurus
V minulých dílech jsme na Lupě psali o situacích, kdy vyhledávač musí překonat problém tzv. máloslovných dotazů, které jsou do něj vkládány. Z těch je totiž velice obtížné zjistit, na co se uživatel vlastně ptá. V tomto článku si popíšeme jednu ze základních technik, jak si stroj může dotaz upravit a "domyslet".
Způsob, jakým si obohatíme dotaz, je založen na principu thesauru. Strukturu thesauru jsme si představili v minulém díle, nyní se zaměříme především na jeho automatické vybudování.
Náš výchozí stav je znalost všech dokumentů a indexovaných slov (termů), naším cílem je umět přidat (automaticky) do uživatelského dotazu slova, která zajistí, že výsledek vrácený strojem bude kvalitnější. V případě dnes prezentované metody se jedná o zkvalitnění v řádu až jedné čtvrtiny (20–25 procent) nad nejméně třemi rozdílnými textovými bázemi. Kromě toho ukážeme, jak nastavit váhy (důležitost) jednotlivých slov nově vytvořeného dotazu.
Zaveďme si nejprve několik označení. Jak jste si již zajisté zvykli, jako N nazýváme počet dokumentů, které držíme v indexu. Četnost výskytu i-tého termu (ki) v j-tém dokumentu jsme označovali fi,j. Počet všech termů nazýváme jako t, a množství unikátních indexovaných termů v dokumentu j jako tj. Podobně jako jsme definovali inverzní frekvenci dokumentu, nadefinujeme i inverzní frekvenci termu v j-tém dokumentu:
itfj=log(t/tj).
Dále budeme postupovat analogicky k vektorovému modelu, který byl již rozebrán v předcházejících kapitolách. Vstupním vektorem do našich úvah bude vektor přidružený ke každému i-tému termu: (wi,1,wi,2,…wi,N).
Narozdíl od běžného vektorového modelu je pro výpočet jeho vah ustálena formule:
wi,j = disperj . itfj / sqrt( sum( p=1..N; disperp2 . itfj2 ) )
kde
disperj = 1/2 ( 1+fi,j/max(j)fi,j )
Podobný vzorec můžete použít i pro stanovování vah term-dokument v jádru vektorového modelu. Její plus je v tom, že lépe využije a rozprostře hodnoty do celého povoleného intervalu. Při tom zároveň silně zvýrazní ty nulové (symbolizující neexistující výskyt).
Podobnost (zde se ale uživá pojem korelace) dvou termů stanovujeme – jak je ostatně zvykem – ve vektorových modelech, prostým skalárním součinem odpovídajících vektorů (viz. výše).
Pro termy ki a kj je korelace:
ci,j = sum( all d; wi,d . wj,d )
Další postup je následovný. Na vstup jsme dostali dotaz, který obsahuje termy q1, q2, … qz s váhami w1,q, w2,q, … wz,q. Pro výpočet těchto vah užijeme vztah, který jsme představili dnes, nebo i některý z dříve uvedených.
Poté zjistíme podobnost, která v základu odpovídá korelaci, a to vůči všem termům.
sim( q, kj ) = sum( all ti; wi,q . ci,j )
Dostali jsme se do stavu, kdy pro uživatelský dotaz můžeme získat TOP-X termů v závislosti na jejich vysoké podobnosti. Ty do původního dotazu přidáme. Kolik si stanovíme tajemné X, je závislé na síle hardware, kterým disponujeme.
Zbývá již jen nastavit váhu nově přidaným termům dotazu.
wi,Q = sim( q, ki ) / sum( all j; wj,q)
Formální upřesnění: Q je nově utvářený dotaz.
Závěr
Technika automaticky spravovaného thesauru není nová. Je výhodné ji použít, pokud vytváříte jeden stroj pro nasazení s více indexy (indexovaní technických, pravních ad. dokumentů). Její použití pro velký a globální internetový index je trošičku sporné.
Protože se v našem seriálu postupně posouváme z teoretické oblasti do praktické, dovolte následující poznámku. Výpočet korelace je časově velmi náročný. Jako takový se proto nerealizuje pokaždé s příchodem nového dotazu do systému, ale v časových intervalech (např. každý den nebo po zaindexovaní dalších 10.000 dokumentů atp.). V těch spočteme najednou všechny korelační hodnoty. Pro připomenutí, ve středně velkém systému není neobvyklé indexovat cca 50.000 termů (po stemmingu), a velikost korelační matice může být proto i paměťově nepříjemně náročná. V takových případech bývá vhodné neuvažovat pro thesaurus všechny dostupné termy, což však může mít zase negativní vliv na slibované zkvalitnění odpovědí.
Platí neochvějná pravda, že při zpracování obrovských bází dochází k vyhlazení potřebných statistických hodnot. Pokud byste chtěli uvedenou metodu použít, bylo by zřejmě vhodné využít uživatelských profilů a sběrů zpětné vazby. Tyto techniky, stejně jako další možnou techniku výroby thesauru, představíme v následujících kapitolách.
Související odkazy
- Recenze vyhledavačů: Seznam.cz
- Recenze vyhledávačů: Empyreum (Uzdroje.cz, Atlas.cz)
- Proč nám fulltextový stroj nerozumí?
- Jak pracuje metavyhledávač?
- Architektury a modely webových strojů
- Jehla v kupce sena: rozšířený boolský model
- Jehla v kupce sena: MnogoSearch
- Jehla v kupce sena: ASPSeek
- Šrotujeme text
Školení SEO (optimalizace pro vyhledávače)

- Jak fungují vyhledávače a co od nich můžete očekávat.
- Analýza klíčových slov - kde hledat, jak slova vybrat, jak optimalizovat.
- Metody linkbuildingu - jak získat zpětné odkazy aniž byste za ně museli platit.
- Vyhodnocování SEO - nesledujte jen pozice.
Další informace o školení SEO »
Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Google Search Plus aneb o tom, co najdete, rozhodnou vaši přátelé?
Google Nákupy přicházejí na český trh
Propojte svůj blog s Google+ a vyhledáváním Google
Yahoo! na prodej
Google dostane lekci v Číně. Od Baidu a Microsoftu.