Náš první devel stroj byl poslán do křemíkového nebe

Nedávno jsme vyřadili náš první stroj určený pro vývoj fulltextového vyhledávání.

Nedávno jsme z našeho vývojového prostředí vyřadili náš první vývojový stroj, na kterém jsme vyvíjeli naši první verzi fulltextového vyhledávače. … Tedy přesněji řečeno, tento kus nebyl úplně první – před ním jsme měli prakticky dva stejné, akorát jsme je nestačili nikdy použít…

… Vždycky, když stroj dorazil a nainstaloval se, tak na službě email.cz začlo shodou okolností docházet místo (tou dobou velmi častý jev ;-), a náš stroj putoval jako výpomoc do provozu. Pak se objednal další a když dorazil, tak se celý cyklus znovu opakoval (asi tak ještě 2x :-)).

Stroj se jmenoval vs-rocket, byl pořízen v roce 2004 a běžel prakticky bez přestávky až do teď – teda spíš donedávna, chvíli mi trvalo než jsem napsal tento blogpost. V roce 2004 to byla nabušená konfigurace: 2x (single core) Xeon 3GHz, 4 GB RAM, 14x 72GB SCSI disk; stroj byl samozřejmě plně funkční, akorát z dnešního pohledu se nám už nezdál tak nabušený jako tenkrát… ;-)

I tak je to ale úctyhodné, v provozu se nám stroje průměrně obměňují tak po 2-3 letech. I když se to nezdá, tak po 3 letech už server většinou sežere více elektriky než udělá práce.

Důvod, proč vs-rocket vydržel tak dlouho, byl zřejmě ten, že v něm bylo 14 SCSI disků. Výkon disků – narozdíl od výkonu processorů – se totiž postupem doby zas tak moc nevyvíjí. Zvětšuje se akorát kapacita a rychlost připojení, ale třeba seek time je tak nanejvýš 2x lepší než před 10 lety.

Za všechny pozůstalé,
s nostalgickou slzou v oku,
vzpomínáme…

 

Rubrika: Osobní a ostatní | Komentáře: 4

Expanze zkratek ve víceslovných dotazech

Jednou z činností, která se provádí během zpracování dotazu, je expanze zkratek. Expanze zkratek v tomto případě znamená, že se kromě samotné zkratky hledá také její význam. Zjednodušeně řečeno, v případě, že uživatel zadá například dotaz [PPC], hladá se také například Pay Per Click. V ostrém hledání máme v současné době zapnutou pouze expanzi zkratek v jednoslovných dotazech a právě připravujeme také expanzi zkratek v dotazech víceslovných.

V minulosti jsme již expanzi zkratek ve víceslovných dotazech zapnutou měli, ale vzhledem k tomu, že nám způsobovala v určitých případech problémy, rozhodli jsme se pro její vypnutí. V nové a vylepšené verzi jsme se museli například vypořádat se situacemi, ve kterých dotaz obsahuje víceznačnou zkratku, případně s vahou, kterou zkratka do hledání dostane. Abych vám problém trochu přiblížil, vysvětlím jej na dotazu [PPC]. PPC je zkratka, která má minimálně 3 významy:

  • PowerPC
  • Pocket PC
  • Pay Per Click

Abychom uživateli poskytli ucelený přehled o významu zkratky PPC, museli bychom zobrazit z každé expandované formy pár nejrelevantnějších výsledků. Ne vždy je ovšem tento stav vhodný a v určitých případech je dokonce nežádoucí. V každém případě se ovšem musíme vždy podle nějakého kritéria rozhodnout, jakou váhu expandovaná forma zkratky dostane. Jestliže například uživatel preferuje na dotaz [PPC] výsledky pro Pay Per Click, musí dostat Pay Per Click vyšší váhu, než zbylé dva expandované tvary. Váha expandované zkratky má vliv na výslednou relevanci dokumentu.

Jak by mohl například vypadat strom jednoslovného dotazu [PPC]? Konkrétní podoba stromu dotazu může být různá, ale jednou z možných variant je například tato:

strom dotazu PPC

 

A jak je to s víceslovnými zkratkami? Tady je situace poněkud jiná, než v případě zkratek jednoslovných. V rozhodnutí, kterou expandovanou formu zkratky zvolit, nám pomáhá její okolí v dotazu. K čemu nám okolí zkratky v dotazu je? Jednou z podmínek pro doplnění konkrétní expandované formy zkratky do stromu dotazu je tematická příbuznost jejího okolí v dotazu s okolím expandovaného tvaru zkratky v korpusu. Korpusem v tomto případě můžeme rozumět konkrétní množinu indexovaných dokumentů. Tematická příbuznost například zajistí, že na dotaz [PPC reklama] budeme s nejvyšší váhou hledat kombinaci slova reklama právě s expandovaným tvarem Pay Per Click, případně, že zbylé expandované tvary Pocket PC a PowerPC nebudeme hledat vůbec.

A jak by mohl vypadat strom dotazu právě u dotazu [PPC reklama]? Stejně jako v případě jednoslovného dotazu, může i tento strom vypadat různě. Jedna z možných variant je znázorněna níže:

strom dotazu PPC reklama

 

A proč to vlastně řešíme, když se problém vyřeší v dlouhém dotazu sám tím, že dokument musí obsahovat všechna slova v dotazu a těžko se na stránce o Pay Per Click reklamě objeví slova spadající do odvětví kapesního počítače (Pocket PC)? Jelikož tomu tak není, což si můžete ověřit sami, po zadání dotazu [Pocket PC reklama]. Ve výsledcích zjistíte, že existují i stránky o Pocket PC, na kterých se slovo reklama vyskytuje. Přitom dotaz [PPC reklama] by měl spíše mířit na stránky o Pay Per Click reklamě. Kdybychom v tomto případě dotaz [PPC reklama] rozložili chybně do tvaru zobrazeného níže, hledali bychom i netematické dokumenty.

strom dotazu obsahující pocket PC reklama a pay per click

 

Co si o tomto vylepšení myslíte vy? Uvítáte aktuálně připravovanou změnu? Máte nějaké další nápady jak zvýšit relevanci dotazů obsahující zkratku? Napište nám vaše názory do komentářů pod článkem.

Rubrika: Vyhledávání | Komentáře: 22

Sémantická analýza textů (6)

Tématem dnešního dílu seriálu je další metoda pravděpodobnostní sémantické analýzy textů, která se jmenuje Latentní Dirichletova alokace.  Jedná se o jednu z nejpokročilejších, a v současnosti zřejmě vůbec nejpoužívanější, metodu identifikace skrytých témat v textech.

V předchozím dílu seriálu jsme si představili metodou nazvanou Pravděpodobnostní latentní sémantická analýza a seznámili se s jejími hlavními výhodami a nevýhodami. Mezi její největší nedostatky patří tendence k přeučování a především nemožnost odvození témat nových dokumentů, které nebyly součástí trénovací množiny. Oba tyto problémy řeší metoda nazvaná Latentní Dirichletova Alokace (LDA).

Dříve než se pustíme do vysvětlení principu LDA si připomeňme dvě základní rozdělení pravděpodobnosti, která budeme pro pochopení LDA potřebovat. Prvním z nich je binomické rozdělení, které popisuje četnost výskytu náhodného jevu v n nezávislých pokusech. Příkladem použití může být n hodů „cinknutou“ mincí, která má pravděpodobnost 1/4 pro padnutí panny a 3/4 pro orla, a zajímá nás, jaká je pravděpodobnost, že padne k-krát panna. Rozdělení pravděpodobnosti je dáno následujícím vztahem: kde p^k vyjadřuje pravděpodobnost, že k-krát padne panna, (1-p) ^ (n-k) pravděpodobnost, že (n-k)-krát padne orel a kombinační číslo n nad k zajišťuje normalizaci tak, aby byl součet přes všechny hodnoty k roven jedné. Histogram rozdělení pro hodnoty n = 10 a p = 1/4 je pro názornost zobrazen na následujícím obrázku:

Situace se začne komplikovat v případě, že neznáme pravděpodobnost p. Pokud však o ní máme částečnou představu, můžeme její hodnotu modelovat pomocí dalšího rozdělení pravděpodobnosti. Vhodným rozdělením pravděpodobnosti pro modelování parametru p binomického rozdělení je takzvané beta rozdělení, které je definováno následovně:

Rozdělení má dva parametry – alfa a beta, podle jejichž volby se zásadně mění podoba rozdělení, jak je vidět na následujících grafech:

Obrázek vlevo nahoře zobrazuje případ, kde alfa = beta = 1, ve kterém jsou všechny hodnoty p stejně pravděpodobné. Oba obrázky dole představují případy, kde jsou alfa i beta  > 1 a existuje nějaká hodnota p, která je nejpravděpodobnější. Z hlediska LDA je však nejzajímavější graf vpravo nahoře, kde platí alfa = beta = 0,1. V tomto případě je nejpravděpodobnější, že p je buď 0 nebo 1, ale obě možnosti mají pravděpodobnost stejnou. Pokud se vrátíme k našemu příkladu s mincí, znamená to, že víme, že mince je s největší pravděpodobností „cinknutá“, jen nevíme na kterou stranu.

Tato dvě rozdělení představují základ LDA. Jediné, co ještě budeme potřebovat je zobecnění ze dvou rozměrů (panna, orel) do n rozměrů. Vícerozměrná varianta binomického rozdělení se nazývá multinomické rozdělení a vícerozměrná varianta beta rozdělení Dirichletovo rozdělení. Rozdíl je v tom, že už neházíme mincí, ale n-stěnnou kostkou a zajímá nás např. jaká je pravděpodobnost, že ze dvaceti hodů padne 3x jednička, 8x šestka a 9x pětka. Pro detailnější vhled do zmiňovaných rozdělení pravděpodobnosti lze doporučit libovolnou učebnici statistiky, pro pochopení LDA by nám však měly stačit výše popsané základy.

Nyní se již můžeme pustit do vysvětlení principu samotné Latentní Dirichletovy alokace. Stejně jako u pLSA předpokládejme, že v naší množině dokumentů chceme identifikovat k témat. Budeme postupovat stejným způsobem jako u pLSA. Tedy postupně vyjádříme pravděpodobnost generování naší kolekce dokumentů, a poté budeme hledat takové parametry, které tuto pravděpodobnost maximalizují. Pomocí těchto parametrů již bude možné vyjádřit vše, co potřebujeme, tedy především vektor témat pro každý dokument a rozdělení pravděpodobnosti slov pro každé téma. Tomuto postupu se říká generativní model a pro LDA vypadá následovně:

  1. Pro každý dokument i z kolekce všech dokumentů vyber parametry multinomického rozdělení theta(i) z Dirichletova rozdělení s parametry alfa. Obě rozdělení mají k dimenzí – tedy tolik, kolik témat chceme identifikovat. Alfa je vektor k reálných čísel menších než 1, která jsou společná pro všechny dokumenty a jedná se o tzv. hyperparametr LDA modelu. Pro každý dokument tedy vybereme pravděpodobnosti pro všechna z k témat. Díky volbě parametrů Dirichletova rozdělení menších než 1 bude zajištěno, že s největší pravděpodobností bude mít pouze několik málo témat nezanedbatelnou pravděpodobnost, neříkáme však, která to budou. To odpovídá skutečnosti, kde dokument většinou pojednává pouze o několika málo tématech.
  2. Pro každou pozici slova j v dokumentu i vyber z Dirichletova rozdělení s parametry theta(i) téma z(i,j). Pro každou slovní pozici v dokumentu si tedy hodíme k-stěnnou kostkou, jejíž pravděpodobnosti jsou dány parametry theta(i) a přiřadíme pozici příslušné téma.
  3. Pro každou pozici (i, j) vyber slovo w(i, j)  z multinomického rozdělení phi(z(i,j)). Multinomické rozdělení phi slov pro témata je globální a podobně jako theta má parametry generované z Dirichletova rozdělení, tentokrát s parametrem beta.

Pro nalezení parametrů LDA, a tudíž i požadovaných vektorů témat pro dokumenty, je stejně jako u pLSA třeba maximalizovat pravděpodobnost modelu pro poskytnutá trénovací data. Na rozdíl od pLSA by však bylo použití Expectation-Maximization algoritmu příliš složité, proto se pro inferenci v LDA využívají aproximativní metody. Mezi nejčastěji používané patří variační metody a Gibbsovo vzorkování.

Oproti pLSA má LDA řadu výhod, především řeší jeho nejpalčivější problémy. Díky tomu, že má LDA fixní počet parametrů, jejichž počet s přibývajícími dokumenty neroste, nedochází k přeučování a dosahuje tak výrazně vyšší kvality. Hlavní výhoda ale spočívá v tom, že lze díky generativnímu přístupu odhadovat témata i pro nové dokumenty, které nebyly přítomny v trénovací množině. Z těchto důvodů se pLSA téměř nepoužívá a v praktických aplikacích převažuje LDA.

Jak pLSA, tak LDA má řadu rozšíření a modifikací, těmi se ale v tomto seriálu zabývat nebudeme. V příštím, a současně posledním dílu, si ukážeme příklady toho, jak lze sémantické analýzy textů využít v praktických aplikacích nejen ve fulltextových vyhledávačích.

Rubrika: Výzkum | Komentáře: 5

Nové generické top level domény

Možná jste už slyšeli, že od ledna 2012 bude možné žádat o registrace nových top level domén. O co přesně jde a jak to ovlivní náš fulltextový vyhledávač?

Pojmenování domén se řídí hierarchickým systémem. Například v url  http://videa.seznam.cz je cz doména první úrovně (top level doména – TLD), seznam je doména druhé úrovně a videa doména třetí úrovně. Top level domény se dělí na národní (country-code: ccTLD) a obecné, nadnárodní domény (generické: gTLD). Národní domény jsou dvoupísmenné a v současné době jich je 293. Ve většině případů jsou shodné s mezinárodním kódem daného státu (.at, .pl, .sk, .de,…). Nadnárodních domén je 23 (.aero, .arpa, .asia, .biz, .cat, .com, .coop, .edu, .gov, .info, .int, .jobs, .mil, .mobi, .museum, .name, .net, .org, .post, .pro, .tel, .travel, .xxx). Každou TLD spravuje její správce, který jednotlivým subjektům přiděluje (většinou za poplatek) domény druhých úrovní. Majitel domény druhé úrovně si pak může na své doméně libovolně vytvářet domény dalších úrovní. Celý systém je zastřešen organizací ICANN (Internet Corporation for Assigned Names and Numbers).

Od ledna 2012 bude možné si u ICANN požádat o vlastní gTLD a v případě schválení se stát jejím správcem. V první fázi se očekává přidělení 200 až 300 nových domén. Co si od toho ICANN slibuje? Především rozšíření možností pro nové subjekty (neregulované domény .com, .info, .net a .org jsou již přebrané) a zpřehlednění internetu. Vlastní gTLD si budou moci vytvořit velké zavedené značky (.canon), města (.london, .berlin), geografické celky (.provence) a podobně. Zároveň by se noví správci měli stát konkurencí pro správce současných top level domén.

Ozývají se však i kritické hlasy. Majitelé zavedených značek si sice budou moci zaregistrovat vlastní TLD, zároveň však budou nuceni si koupit spoustu domén druhých úrovní na spekulativních TLD, které pravděpodobně vzniknou (například .cheap, .free, .shop a podobně). To je bude stát nemalé náklady nejen na poplatcích, ale i kvůli případným soudním sporům o ochranu značky. Výrazně se rozšíří prostor pro spammery a cybersquattery a je možné, že nastane přesný opak toho, co ICANN očekává: celý systém se znepřehlední a uživatelům to přinese jen další zmatky.

Co to bude znamenat pro náš vyhledávač? V podstatě nic moc nového. Sice očekáváme nárůst problémů v některých oblastech, ale všechno to jsou problémy, se kterými se pereme už nyní.

  • přibude duplicitních stránek a přesměrovávání (firmy si budou držet více domén a buďto na nich budou mít stejný obsah nebo z nich budou uživatele přesměrovávat na svoji hlavní stránku)
  • přibude spamů, obzvláště cybersquatterů
  • poklesne důvěryhodnost jména domény druhé úrovně
  • uživatelé budou zadávat i dotazy, u kterých by nyní rovnou uhádli správnou url (Když uživatelé hledají například firmu Canon, zkusí zadat do prohlížeče rovnou www.canon.com. Po přidání nových gTLD budou Canon pravděpodobně hledat raději přes fulltextový vyhledávač.)

Ať už to dopadne jakkoli, bereme nové generické domény jako výzvu a budeme připravení najít to, co naši uživatelé hledají.

A co si o této změně myslíte vy? Vítáte vznik nových generických top level domén nebo si myslíte, že převládne jejich negativní vliv? Dejte nám vědět svůj názor a hlasujte v naší anketě.

Anketa

Budou nové generické top level domény přínosem?

  • Zavádět nové gTLD je zbytečné.
  • Bylo by fajn mít nové gTLD, ale ve výsledku jejich nevýhody převáží nad výhodami.
  • Nové gTLD jsou potřebné. Čím dřív budou, tím líp.

Zobrazit výsledky

Nahrávání ... Nahrávání ...

Kdo by se chtěl o nových gTLD a podmínkách jejich registrace dozvědět více, najde užitečné informace (anglicky) v článku „New gTLDs – Impact on ccTLDs“.

Rubrika: Vyhledávání | Komentáře: 5

Zpracování uživatelského dotazu

Zpracování dotazu je základní součástí vyhledávače, které podstatnou měrou ovlivňuje relevanci výsledků. Provádí se s každým dotazem na vyhledávání a je nutné ji provést i 500 krát za jedinou vteřinu.K základním úlohám zpracování dotazu patří oháčkování a doplnění skloňovaných tvarů slov. Kromě těchto operací se v dotazu provádí detekce čísel a jejich typů (desetinné číslo, datum, apod.), vygenerování podobných slov, desambiguace, detekce zkratek a mnoho dalších činností, kterým se jedna z komponent našeho hledání věnuje.

Zpracování dotazů prochází neustálým vývojem. Aktuálně se náš výzkum zaměřuje na detekci odlišně psaných slov se stejným významem. Tato úloha se dá rozdělit do následujících kategorií:

Podobná slova: Jsou významově shodná slova, která se vzájemně liší svým zápisem, jejich editační vzdálenost je malá a změna se netýká jen mluvnické kategorie. Do kategorie podobných slov patří například dvojice slov universita / univerzita, dále olympie / olympia, nebo kasino / casino a mnoho dalších.

Dvojice, nebo n-tice slov, které do této kategorie nepatří, jsou například vlas / hlas, případně cop / kop, jelikož se význam těchto slov vzájemně liší. Asi již tušíte, že pouze pravidlové metody záměny písmen nefungují a je potřeba využít sofistikovanějších metod výzkumu.

Spojená / rozdělená slova: jsou opět významově shodná slova, ale liší se spojeným – rozděleným zápisem částí slov. K takovým slovům se řadí například babybox / baby box, paypal / pay pal, turbodiesel / turbo diesel a další.

Dvojice, nebo obecně n-tice slov, která do této kategorie nepatří je například ale na (ve významu spojka, předložka) / alena (jméno).

Synonyma: jsou úlohou výzkumně nejnáročnější, poněvadž je obtížné detekovat v korpusu slova, jejichž tvar ani přibližně neznáme a jsou kdykoliv vzájemně zaměnitelná ve všech kontextech – úplná synonyma. Ještě obtížnější je generovat slova, která jsou zaměnitelná pouze v rámci určité množiny kontextů – částečná synonyma. Do kategorie synonym patří například slova přeprava / transport, báječný / senzační, benzín / pohonná hmota, apod.

Obtížnost výzkumu částečných synonym vysvětlím na slovu tank, které je v určitých kontextech zaměnitelné se slovem cisterna. V první fázi je nutné detekovat, že slovo tank má význam shodný právě se slovem cisterna. Ve fázi druhé je nutné detekovat kontext, ve kterém jsou slova vzájemně zaměnitelná. Chcete znát další významy slova tank?

Proč se této činnosti vlastně věnujeme a z jakého důvodu chceme hledat i jiná slova, než zadal uživatel? Vysvětlím vám důvod na příkladu hledání dotazu [felicie ojeté vozy]. Kdybychom v tomto případě nehledali i podobné slovo felicia, uživatel by přišel o část výsledků, na jejichž stránkách se slovo ve tvaru felicie nevyskytuje a místo něj stránka obsahuje pouze slovo felicia. Stejný důvod má hledání slova babybox, na dotaz zadaný ve tvaru baby box, nebo naopak.  Do nejnáročnější kategorie patří dotazy typu [ceny pohonných hmot], na které bych jako uživatel chtěl najít i stránky, obsahující jen spojení ceny benzínu.

Věřím, že jsem vám pomohl pochopit náročnost zpracování dotazu a důvod významného vlivu na relevanci výsledků. Jestliže se vám článek líbil, ocením vaše nápady a připomínky.

Rubrika: Vyhledávání | Komentáře nejsou povoleny