DIPLOMOVÁ PRÁCE. VyhledávaË zaloæen na formální konceptuální anal ze. 2012 Lukáπ Havrlant



Podobné dokumenty
1 - Prostředí programu WORD 2007

Příprava na 1. čtvrtletní písemku pro třídu 1EB

10 je 0,1; nebo taky, že 256

Formální konceptuální analýza

6. Matice. Algebraické vlastnosti

Matematický model kamery v afinním prostoru

Maturitní otázka - optimalizace webových stránek

DATABÁZE DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

Algoritmizace a programování

Vyplňte API klíč, který si vygenerujete v Nastavení obchodu v profilu Uloženky v části Nastavit klíč pro API.

Metoda zpracování dat s filozofickým pozadím. Michal Krupka. Palacky University, Olomouc, Czech Republic

Semestrální práce Testování uživatelského rozhraní

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Jak pracovat s absolutními hodnotami

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Manuál Kentico CMSDesk pro KDU-ČSL

Inovace výuky prostřednictvím šablon pro SŠ

Uživatelský manuál pro práci se stránkami OMS a MS provozované portálem Myslivost.cz. Verze 1.0

Modul informačního systému SPŠSE Liberec

11 Soustavy rovnic a nerovnic, Determinanty a Matice

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Řešení: Dejme tomu, že pan Alois to vezme popořadě od jara do zimy. Pro výběr fotky z jara má Alois dvanáct možností. Tady není co počítat.

3.5.8 Otočení. Předpoklady: 3506

Tisíce uživatelů v bance pracují lépe díky využití okamžitých informací o stavu kritických systémů

ZW3D Tréninkový manuál pokročilá animace sestavy

V této části manuálu bude popsán postup jak vytvářet a modifikovat stránky v publikačním systému Moris a jak plně využít všech možností systému.

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

Operace nad celými tabulkami

Divadelní/Hudební fakulta Katedra/Ateliér Studijní obor. Název práce

GRAFY A GRAFOVÉ ALGORITMY

Strojové uení. typy učení: Metody učení: učení se znalostem (knowledge acquisition) učení se dovednostem (skill refinement).

Rukodělná činnost. příručka pro účastníky kurzu pracovní text ke studiu. Pojďme spolu CZ.1.07/1.2.17/

3. Polynomy Verze 338.

1 Seznámení s Word 2010, karty, nejčastější činnosti. 2 Tvorba dokumentu

Uživatelské postupy v ISÚI Založení ulice a změna příslušnosti adresního místa k ulici

Management projektů. Programová podpora auditu sytému managementu kvality HOT 4IT. Návrh

Konzistence databáze v nekonzistentním světě

Databáze Caché CSP Custom Tags

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

9 METODICKÉ POKYNY AD HOC MODUL 2010: Sladění pracovního a rodinného života

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

1. PROSTŘEDÍ PROGRAMU. Pás karet se záložkami (na obrázku aktivovaná karta Domů ) Hlavní okno, ve kterém se edituje aktuální snímek prezentace

Kolaborativní aplikace

Praktické úlohy- zaměření specializace

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Základní nápověda pro práci s informační bránou UHK

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Rozšířená nastavení. Kapitola 4

Databázové a informační systémy

Pracovní listy s komponentou ICT

Návod k použití aplikace jízdního řádu v mobilním telefonu. Stažení

Testová ní zář í zení HTC Desiře HD

Odkaz:

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

ANDROID KDYŽ MÁTE ZBYTEK ZRAKU A CHCETE SE OBEJÍT BEZ ODEČÍTAČE OBRAZOVKY

Helios RED a Internetový obchod

Magnetic Levitation Control

Katedra obecné elektrotechniky Fakulta elektrotechniky a informatiky, VŠB - TU Ostrava 16. ZÁKLADY LOGICKÉHO ŘÍZENÍ

Obrázek. Základní popis, zadání úkolu. Struktura tříd,

UŽIVATELSKÁ PŘÍRUČKA PRO INTERNETBANKING PPF banky a.s.

DISKRÉTNÍ ROZDĚLENÍ PRAVDĚPODOBNOSTI. 5. cvičení

Obsah. Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11

MANUÁL K OBSLUZE REDAKČNÍHO SYSTÉMU / wordpress

primární tlačítko (obvykle levé). Klepnutí se nejčastěji používá k výběru (označení) položky nebo k otevření nabídky.

Nezaměstnanost v České republice

HRY S KLASICK MI BODOV MI KOSTKAMI

TIP: Pro vložení konce stránky můžete použít klávesovou zkratku CTRL + Enter.

1.2.5 Reálná čísla I. Předpoklady:

Individuální projekt z předmětu webových stránek Anketa Jan Livora

Návod k používání registračního systému ČSLH

Testovací aplikace Matematika není věda

MATEMATIKA A BYZNYS. Finanční řízení firmy. Příjmení: Rajská Jméno: Ivana

Dynamický model predikovaného vývoje krajiny. Vilém Pechanec

Predispozice pro výuku IKT (2015/2016)

řádově různě rostoucí rostou řádově stejně rychle dvě funkce faktor izomorfismus neorientovaných grafů souvislý graf souvislost komponenta

1 Úvod do kompilátorů

N-trophy. kvalifikace KVÍK! Soòa Dvoøáèková - Kristýna Fousková - Martin Hanžl. Gymnázium, Brno-Øeèkovice.

10. Editor databází dotazy a relace

Databázové systémy trocha teorie

Státní maturita 2011 Maturitní testy a zadání jaro 2011 Matematika: didaktický test - základní úrove obtíºnosti MAMZD11C0T02 e²ené p íklady

NÁVRH A REALIZACE WWW PREZENTACE ČKR

DUM 01 téma: Obecné vlastnosti tabulkového editoru, rozsah, zápis do buňky, klávesové zkratky

Evidence dat v prostředí MS Excelu Kontingenční tabulka a kontingenční graf

Algoritmizace a programování


Modely vyhledávání informací 4 podle technologie. 1) Booleovský model. George Boole Aplikace booleovské logiky

M - Příprava na čtvrtletní písemnou práci

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6

Základní škola, Staré Město, okr. Uherské Hradiště, příspěvková organizace. Komenské 1720, Staré Město, Metodika

Předmět: Ročník: Vytvořil: Datum: MATEMATIKA TŘETÍ MGR. JÜTTNEROVÁ Název zpracovaného celku: KOMBINACE, POČÍTÁNÍ S KOMBINAČNÍM ČÍSLY

Memoria Mundi Series Bohemica z trezoru na Internet

Vytvoření nebo odstranění makra Excel

Aplikace počítačů v provozu vozidel 9

Filr 2.0 Uživatelská příručka k aplikaci Filr Web. Únor 2016

13. Třídící algoritmy a násobení matic

Obsah. Úvodem 7. Komu je kniha určena 8 Co v knize najdete 8 Konvence použité v knize 9

sssssssssssssssssssssssssssssssssssssssssssssssssss UŽIVATELSKÁ PŘÍRUČKA ELEKTRONICKÁ PODATELNA - WEBOVÁ ČÁST APLIKACE Verze distribuce:

Transkript:

PÿÍRODOVÃDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY DIPLOMOVÁ PRÁCE VyhledávaË zaloæen na formální konceptuální anal ze 2012 Lukáπ Havrlant

Anotace Napovídáním souvisejících dotaz m æe vyhledávaë pomoci uæivateli rychleji najít dokumenty, které pot ebuje. Práce se zab vá tvorbou vyhledávaëe s webov m rozhraním, kter pracuje nad uzav enou sadou dokument. Po poloæení dotazu dokáæe napovïdït konkrétnïjπí, obecnïjπí a podobn dotaz, coæ je realizováno pomocí formální konceptuální anal zy.

DÏkuji Mgr. Janu Outratovi, Ph.D. za vedení této diplomové práce a za rady p i konzultacích.

Obsah Úvod 8 1. Information retrieval 9 1.1. Jak funguje vyhledávaë........................ 9 1.1.1. Pojmy související s vyhledávaëem.............. 9 1.1.2. Naivní model vyhledávaëe.................. 10 1.1.3. VyhledávaË pouæívající index................ 10 1.2. VyhledávaË CLaSeek......................... 11 1.3. P edzpracování dokument...................... 11 1.4. Uloæení indexu............................ 13 1.5. Vyhledání atribut dokumentu................... 13 1.5.1. Jak by mïly atributy vypadat................ 14 1.5.2. Algoritmus tf-idf....................... 14 1.5.3. Vylepπení algoritmu tf-idf.................. 15 1.5.4. Vygenerování atribut dokumentu............. 16 1.6. Dalπí funkce vyhledávaëe....................... 16 1.6.1. Inverzní stemovací funkce.................. 16 1.6.2. ZjiπtÏní názvu a popisku dokumentu............ 17 1.6.3. Kontrola p eklep....................... 18 1.6.4. DoplÚující informace..................... 18 1.7. Odpovídání na dotazy........................ 19 1.7.1. Syntax dotazu......................... 19 1.7.2. Parsování dotazu....................... 20 1.7.3. Vyhledání odpovídajících dokument............ 20 1.7.4. Se azení dokument..................... 21 2. Formální konceptuální anal za 23 2.1. Neformální úvod do formální konceptuální anal zy........ 23 2.2. Formální zavedení FCA........................ 25 2.2.1. Základní pojmy........................ 25 2.2.2. Galoisova spojení....................... 26 2.2.3. Konceptuální svaz...................... 30 2.2.4. Zobrazení konceptuálního svazu............... 33 3. Hledání souvisejících dokument 35 3.1. O co nám p jde............................ 35 3.1.1. Motivace............................ 35 3.1.2. Hlavní cíl........................... 35 3.1.3. V stup vyhledávaëe...................... 36 3.2. StruËn popis funkënosti celého vyhledávaëe............ 36 3.3. Jak vytvo it kontext......................... 38 4

3.3.1. Sestavení kontextu...................... 38 3.3.2. Nalezení konceptu dotazu.................. 39 3.3.3. Sestavení rozπí eného kontextu................ 39 3.3.4. Nalezení konceptu dotazu v rozπí eném kontextu...... 40 3.4. Lindig v algoritmus pro hledání horních soused.......... 41 3.5. Hledání návrh ve svazu....................... 43 3.5.1. Specializace.......................... 43 3.5.2. Generalizace.......................... 44 3.5.3. Podobné dotazy........................ 45 4. V sledky vyhledávaëe 48 4.1. Uæivatelské prost edí vyhledávaëe.................. 48 4.2. Poæadavky na zpracovávané dokumenty............... 48 4.2.1. Kvalita obsah dokument.................. 49 4.2.2. Technické poæadavky na HTML stránky.......... 50 4.2.3. Zpracování PDF a ODT................... 51 4.2.4. NÏkteré nedostatky vyhledávaëe............... 51 4.3. Hodnocení úspïπnosti vyhledávaëe.................. 52 4.3.1. P íklady dobr ch v sledk.................. 52 4.3.2. P íklady πpatn ch v sledk................. 53 4.4. Experimenty s nastavením...................... 53 4.4.1. PoËet atribut dokumentu.................. 54 4.4.2. PoËet dokument v kontextu................. 54 4.4.3. Limit pro atributy dokumentu................ 54 5. Dodatky 56 5.1. API vyhledávaëe........................... 56 5.1.1. Získávání dat z indexu.................... 56 5.1.2. Posílání vlastních dat na server............... 56 5.2. Struktura aplikace a pouæívané programy.............. 57 5.3. Dokumentace............................. 58 5.4. Podobné vyhledávaëe......................... 58 ZávÏr 60 Conclusions 61 Reference 62 A. Obsah p iloæeného CD 64 5

Seznam obrázk 1. Syntaktick strom........................... 21 2. Vπechny koncepty z kontextu v tabulce 1., zdroj: [4]... 33 3. Svaz, kter vznikne z kontextu v tabulce 1., zdroj: [4]... 34 4. Algoritmus UpperNeighbors na poëítání horních soused konceptu 42 5. Sourozenci konceptu Z... 45 6. Základní rozhraní vyhledávaëe.................... 48 7. V sledek vyhledávaëe na dotaz fuzzy attributesˇ......... 49 6

Seznam tabulek 1. Formální kontext, zdroj: [4]... 24 2. Formální kontext se zv raznïn m konceptem............ 24 7

Úvod SouËasné vyhledávaëe si uchovávají obsah, nad kter m mají vyhledávat, ve formï indexu, coæ je struktura v principu podobná indexu v knize. Uæivateli staëí vloæit do vyhledávacího pole sv j dotaz a vyhledávaë z indexu získá pot ebná data a zobrazí uæivateli v sledek, obvykle ve formï nïjakého uspo ádaného seznamu odkaz na dokumenty. Pokud není uæivatel spokojen s v sledky, musí p eformulovat sv j dotaz tak, aby lépe vystihoval to, co chce najít. Tento problém je typick pro slova, která mají nïkolik v znam. Nap íklad pokud ve webovém vyhledávaëi vyhledáme slovo jaguárˇ, tak vyhledávaë nem æe vïdït, zda chceme hledat auto, zví e nebo jeπtï nïco jiného. Pokud má p ístup k historii hledání daného uæivatele, m æe pomocí ní p izp sobit v sledky. Ale m æe také uæivateli zobrazit návrhy na nov dotaz, nap íklad jaguár autoˇ nebo jaguár zví eˇ, po jejichæ vyhledání se v sledky velmi zp esní. Otázkou je, jak tyto návrhy získat. Pokud si vyhledávaë uchovává historii vπech hledání, která uæivatelé provádïjí, m æe se je pokusit vytáhnout právï z této historie. Pokud ovπem tato data vyhledávaë nemá, nebo jich má málo, musí se pouæít jiná metoda. Práce popisuje metodu, jak získat podobné dotazy pomocí formální konceptuální anal zy (anglicky Formal concept analysis, dále jen FCA) pouze na základnï znalosti obsahu dokument. FCA pracuje s tabulkov mi daty, ve kter ch hledá nïjaké potenciálnï zajímavé shluky dat. Tyto shluky pro nás budou p edstavovat mnoæiny dokument, které jsou nïjak m zp sobem podobné a které sdílí nïjaká zásadní klíëová slova. Tato klíëová slova poté dále vyuæijeme p i generování návrh na nové dotazy. 8

1. Information retrieval Tato sekce se zab vá budováním samotného vyhledávaëe, jehoæ v sledky budou zobrazeny uæivateli a také budou pouæity jako vstup do formální konceptuální anal zy. Cílem je popsat tvorbu vyhledávaëe, kter bude umït stáhnout z webu poæadované dokumenty, zaindexovat je a následnï v nich vyhledávat. Dokumenty mohou b t buô obyëejné webové stránky nebo sloæitïjπí soubory, nap íklad PDF. 1.1. Jak funguje vyhledávaë V této Ëásti si popíπeme, jak m æe obecn vyhledávaë fungovat. 1.1.1. Pojmy související s vyhledávaëem Sada dokument Na zaëátku máme nïjakou sadu dokument, nad kter mi chceme vyhledávat. Tato sada m æe b t libovolná m æe se jednat o webové stránky, o lokální dokumenty na osobním poëítaëi nebo o e-maily na serveru. V p ípadï webov ch vyhledávaë typu Google je pak sadou dokument vπechno, co lze nalézt na webuˇ, v p ípadï vyhledávaë v moderních operaëních systémech je sadou vπechno, co lze nalézt na poëítaëiˇ. Sada dokument m æe b t statická, nebo dynamická. Statická sada je taková sada, která se nemïní buô nikdy nebo málokdy. M æe to b t nap íklad vyhledávaë PS». Dynamická sada se naopak mïní pomïrnï Ëasto, nap íklad webové stránky. Velké vyhledávaëe ËastÏji pracují s dynamickou sadou dokument. Uæivatel Uæivatel je obecné oznaëení toho, kdo pracuje s vyhledávaëem. Typicky se jedná o nïjakého ËlovÏka, ale m æe to b t i program, kter nap íklad kaæd den kontroluje poëet dokument na dané klíëové slovo a p i zv πení tohoto poëtu poπle nïkomu informaëní e-mail. Dotaz Pomocí dotaz komunikuje uæivatel s vyhledávaëem. Dotaz je nïjak seznam slov, kter reprezentuje to, co uæivatel chce najít. M æe se jednat o jednoduché dotazy typu autoˇ, ale také o sloæitïjπí otázky jako Jak je smysl æivota?ˇ Slov m v dotazu íkáme klíëová slova. VyhledávaË m æe uæivatel m umoænit pouæívat v dotazu r zné operátory, kter mi lze zp esnit dotaz. Typické operátory jsou logické operátory AND, OR a NOT. Webové vyhledávaëe umoæúují nap íklad vyhledávat na urëité doménï pomocí SITE operátoru, vyhledat odkazující stránky pomocí LINK operátoru a podobnï. 9

V sledky vyhledávání Po poloæení dotazu zobrazí vyhledávaë v sledky. ObecnÏ se jedná o nïjaké zkrácené zobrazení dokument, které vyhovují danému dotazu. Typicky jde o seznam odkaz na dané dokumenty, ale v nïkter ch p ípadech m æe vyhledávaë p ímo zodpovïdït poloæenou otázku. Nap íklad na otázku o smyslu æivota m æe odpovïô 42. Samotn seznam dokument b vá obvykle se azen podle nïjak ch kritérií. TÏchto kritérií b vá pomïrnï hodnï a vyváæit je tak, aby vyhledávaë vracel co moæná nejlepπí v sledky je obtíæn úkol, kter m se tato diplomová práce nebude více zab vat. Mezi v sledky m æe b t kromï seznamu odkaz i nïjaká dalπí informace. SouËasné webové vyhledávaëe nap íklad umí opravovat p eklepy, p ehrát video odpovídající klíëov m slov m, vypoëítat jednoduché matematické operace nebo napovïdït dotaz, kter by vedl k p esnïjπím v sledk m. Dále si p edstavíme dva modely, jak m æe vyhledávaë fungovat. Naivní model a model pouæívající index. 1.1.2. Naivní model vyhledávaëe Naivní model vyhledávaëe funguje tak, æe po poloæení dotazu zaëne vyhledávaë procházet vπechny dokumenty a kontroluje, jestli nïkter z dokument odpovídá dotazu. Pokud ano, vrátí tento dokument mezi v sledky. Tento model je velice jednoduch, ale není p íliπ efektivní. V souëasné dobï m æeme mít sady dokument, které obsahují miliony Ëi miliardy poloæek, takæe chceme-li znát v sledky ádovï za desetiny sekund, není moæné je p i kaædém dotazu vπechny procházet. 1.1.3. VyhledávaË pouæívající index Mnohem efektivnïjπí je pouæít index. Jedná se o podobnou strukturu, kterou m æeme najít v nïkter ch, obzvláπtï odborn ch, knihách. Protoæe v klasické tiπtïné knize nem æeme nijak vyhledávatˇ, dává se na konec knihy seznam nejd leæitïjπích slov, která kniha obsahuje, spolu s Ëísly stránek, na kter ch se pojem vyskytuje. Takæe chce-li uæivatel nalézt stránky obsahující slovo derivaceˇ, podívá se do indexu, kde hned zjistí, æe slovo se vyskytuje na té a té stránce. Podobn princip m æeme pouæít i ve vyhledávaëích. Nebudeme ale vytvá et index z d leæit ch slov, ale ze vπech slov, která se v dokumentech vyskytují. Vytvo íme tak slovníkovou strukturu, kde klíëem bude slovo a hodnotou bude seznam dokument, které dané slovo obsahují. P i poloæení dotazu pak m æe vyhledávaë rychle zjistit jaké dokumenty obsahují dané klíëové slovo prost m nahlédnutím do tohoto slovníku. Spolu s tím si m æeme uloæit informace i o tom, kolik dan ch slov dan dokument obsahuje, coæ m æeme dále vyuæít p i azení dokument. 10

Celou práci vyhledávaëe tak m æeme rozdïlit do dvou Ëástí budování a upravování indexu a hledání odpovïdí na dotaz. Zde je nutné dát pozor na to, jak velká je sada dokument a zda je statická nebo dynamická. Samotné budování indexu m æeme jeπtï rozdïlit na dvï Ëásti: p edzpracování dokument a technická realizace indexu. 1.2. VyhledávaË CLaSeek SouËástí této diplomové práce je naprogramovan vyhledávaë CLaSeek (Concept Lattice Seeker), kter bude v dalπích Ëástech textu popsán. CLaSeek je vyhledávaë napsan v Pythonu 3. Pracuje se statickou sadou dokument ; p edpokládá se, æe se sada dokument bude mïnit pouze nárazovï jednou za Ëas. Samotná sada dokument, nad kterou má vyhledávaë pracovat, nebude p íliπ velká, ádovï stovky dokument. Jedná se o vyhledávaë pouæívající index. P i budování indexu je vstupem seznam URL adres, kter si vyhledávaë sám stáhne a zaindexuje obsahy dokument. V sledn index je pak uloæen do nïkolika soubor, ke kter m pak CLaSeek p istupuje. CLaSeek má rozumït logick m operátor m AND, OR a NOT. Po zadání dotazu má vrátit v sledky se azené podle relevance, kterou spoëítá pomocí klasického tf-idf algoritmu. V stup bude textov ve formátu JSON, se kter m pak mohou pracovat dalπí programy, v tomto p ípadï webové rozhraní, které je napsáno v PHP. Dalπí Ëástí vyhledávaëe je hledání souvisejících dotaz. Tato Ëást bude podrobnï rozebrána v dalπí kapitole. V této kapitole je dále popsáno, jak CLaSeek buduje index a jak vrací v sledky. 1.3. P edzpracování dokument P i budování indexu máme na vstupu sadu dokument a na v stupu strukturu, která reprezentuje index této sady. BÏhem samotného budování indexu procházíme jednotlivé dokumenty a upravujeme je do takové podoby, která se hodí pro uloæení. Budeme uvaæovat pouze textové dokumenty jako je HTML nebo PDF a budeme p edpokládat statickou sadu dokument, takæe se nebudeme p íliπ zatïæovat aktualizací indexu. Na samotném zaëátku tak musíme upravit jednotlivé textové dokumenty do nïjaké kanonické podoby. To budeme dïlat postupn mi úpravami jednotliv ch dokument. S kaæd m dokumentem budeme provádït identické operace v identickém po adí. Jednotlivé operace budou popsány v takovém po adí, v jakém se aplikují ve vyhledávaëi. Vπechny operace jsou popsány v knihách [3], kapitola 7 a [15], kapitola 2. 11

OdstranÏní formátovacích prvk dokumentu Vstupem do algoritmu budování indexu m æe b t soubor, kter kromï samotného textu obsahuje i r zné formátovací a jiné prvky. Tyto prvky pro dalπí zpracování nepot ebujeme, takæe je vπechny odstraníme. Jedná se nap íklad o HTML nebo XML znaëky. Po aplikaci tohoto bodu uæ bychom mïli mít pouze Ëist text. Ponechání písmen Text obsahuje spousty r zn ch znak, které jsou vyhledávaëi témï k niëemu. Jedná se o interpunkci, která typicky doplúuje text, ale p i samotném vyhledávání se bez ní obejdeme. Odstraníme tak vπechny znaky, které nejsou písmeny. P i tomto odstraúování m æeme narazit na urëité problémy a m æe zde dojít k první ztrátï informace. Nap íklad pokud ze slova chcete-liˇ odstraníme spojovník, m æeme dostat buô slovo chceteliˇ nebo dvï slova chceteˇ a liˇ. OdstranÏní bíl ch znak Pod bílé znaky spadají mezery, tabulátory a nové ádky. To jsou opït informace, které jsou zbytné a které m æeme odstranit. Namísto libovolnï dlouhé posloupnosti bíl ch znak tak vædy vloæíme právï jednu mezeru. Tím dosáhneme toho, æe vπechna slova v celém dokumentu budou v jednom ádku a budou oddïlena právï jednou mezerou. P evod na malá písmena Velikost písmen má pouze minimální vliv na hodnocení dokument, takæe m æeme vπechna písmena p evést na jednotn tvar. V tomto p ípadï na malá písmena. M æeme sice nalézt p ípady, kdy ztratíme jist kousek informace, nap íklad Prokop Bubenˇ vs. prokop bubenˇ, ale tento kousek je natolik zanedbateln, æe si to m æeme dovolit. OdstranÏní stop slov Stop slova jsou slova, která se vyskytují témï v kaædém dokumentu, jsou p íliπ obecná a nicne íkající, a tak nemá p íliπ velk smysl je indexovat. Typicky se jedná o p edloæky jako keˇ, uˇ, naˇ a podobnï. Pokud je odstraníme, neztratíme p íliπ mnoho informací, ale m æeme tím i pomïrnï v raznï zredukovat velikost v sledného indexu. ObecnÏ m æeme odstranit vπechna slova délky jedna nebo dva bez vïtπí ztráty informace. P evod na stemy Jedna z nejd leæitïjπích Ëásti vyhledávaëe je p evod slov na stemy. Stem je ko en, základ slova. Smyslem je, abychom si v indexu neuchovávali vπechny tvary kaædého slova, ale abychom si od kaædé slova uchovávali ideálnï jen jeden, základní tvar místo stromˇ, stromyˇ, stromuˇ tak budeme mít pouze jeden tvar stromˇ. D vody pro to máme v zásadï dva: opït se velmi v raznï sníæí velikost indexu, protoæe namísto nap íklad pïti tvar, budeme mít uchovan pouze jeden tvar. Druh m d vodem je, æe pokud uæivatel hledá slovo stromˇ, pravdïpodobnï bude spokojen i s dokumentem, kter obsahuje slova stromyˇ a stromuˇ, ale neobsahuje samotné slovo stromˇ. 12

Algoritmus, kter by k libovolnému slovu vrátil jeho základ, je pomïrnï komplikovan a vïtπinou ani není, alespoú v p ípadï Ëeského jazyka, p íliπ úspïπn. P esto se stále vyplatí nïjak stemmer pouæít a ve vyhledávaëi pouæit je. OdstranÏní diakritiky Po p evodu na stemy m æeme odstranit diakritiku. OdstranÏním diakritiky m æe vzniknout nïkolik konflikt, které p ed odstranïním neexistovaly, ale je to jednoduch zp sob, jak umoænit vyhledávat i lidem, kte í diakritiku v bec nepouæívají. Navíc ani autor nïjakého dokumentu diakritiku nemusel pouæívat a z nïkter ch dokument se kv li problém m s kódováním ani písmena s diakritikou nepoda í získat. Odstra- Úovat veπkerou diakritiku je tak nejmenπí zlo. 1.4. Uloæení indexu V tuto chvíli máme vstupní dokumenty p evedeny do tvaru, se kter m m æeme pracovat dále a m æeme vytvo it základní index. Do nïj si uloæíme informace o tom, ve kter ch dokumentech se vyskytuje dan stem. Pokud pak budeme chtít získat dokumenty, které obsahují stem stromˇ, vyhledáme si v indexu záznam o stemu stromˇ a okamæitï získáme mnoæinu dokument, která stem obsahuje. Bude se nám také hodit informace o poëtu stem v daném dokumentu. To vyuæijeme bïhem azení dokument od nejvíce relevantních. Nakonec si m æeme jeπtï uloæit informaci o poëtu v skyt daného stemu ve vπech dokumentech. Vπechny tyto informace m æeme uloæit do struktury, která vypadá takto: stem => (poëet v skyt slova ve vπech dokumentech, [(doc1, poëet v skyt v doc1), (doc2, poëet v skyt v doc2),..., (docn, poëet v skyt v docn)]) PromÏnné doc1, doc2,... p edstavují ID dokument, které obsahují dan stem a kaædé slovo tak m æe obsahovat r znou sadu docid. Pokud dokument doca stem neobsahuje, pak ve struktu e v bec ádek (doca, poëet v skyt v doca) není. Myπlenka indexu je popsána v [15], kapitola 1 a 2. 1.5. Vyhledání atribut dokumentu V druhé Ëásti vyhledávaëe, která se zab vá nalezením souvisejících dotaz, budeme pot ebovat znát mnoæinu slov, která nejvíce charakterizuje dan dokument. TÏmto slov m budeme íkat atributy dokumentuˇ. 13

1.5.1. Jak by mïly atributy vypadat Atributy jsou pomïrnï bïænou souëástí r zn ch vïdeck ch Ëlánk, kde je ale obvykle vyplúuje sám autor pod názvem klíëová slovaˇ. V p ípadï vyhledávaëe stojíme p ed problémem, jak získat atributy z libovolného dokumentu nïjak m obecn m zp sobem. Jednoduch m zp sobem je se azení vπech stem v daném dokumentu podle jejich Ëetnosti od nejvíce Ëastého. Za atributy pak m æeme vzít ty stemy, které p ekroëí nïjakou absolutní hranici ( alespoú 10 v skyt v dokumentuˇ) nebo nïjakou relativní hranici ( pomïr poëtu daného stemu ku poëtu vπech stem v dokumentu je vïtπí neæ 0,05ˇ). Tento postup m æe b t úspïπn v p ípadï, kdy máme pouze jeden dokument. Pokud ale máme sadu dokument, m æeme jeπtï zjistit vztah s dalπími dokumenty. Atribut pro dan dokument by totiæ mïlo b t takové slovo, které je mezi ostatními dokumenty co moæná nejvíce unikátní. Pokud máme sadu dokument, která se zab vá anal zou dat, je moæné, æe by v kaædém dokumentu bylo nejëastïjπí slovo právï anal zaˇ. Tím bychom dostali pro kaæd dokument stejn atribut a to není to, co bychom chtïli. Tento problém vy eπíme tím, æe p i hledání atribut pro dokument vezmeme v potaz i to, jak Ëasto se daná slova vyskytují v ostatních dokumentech. Budeme tak hledat taková slova, která se v daném dokumentu vyskytují co nejëastïji a v ostatních dokumentech co nejménï Ëasto. 1.5.2. Algoritmus tf-idf Tento postup má své jméno, jedná se o tf-idf algoritmus. Ten je rozdïlen do nïkolika Ëástí. První je funkce tf t,d, která v základním nastavení vrací poëet v skyt slova t v dokumentu d. Dále máme funkci df t, která vrací poëet dokument, které obsahují slovo t. Tuto funkci vyuæijeme k tomu, abychom sníæili skóre tïch slov, která se vyskytují v p íliπ mnoha dokumentech. OznaËme N poëet vπech dokument v naπí sadï. Pak vydïlením N/df t získáme koeficient, kter znaëí, jak moc je slovo t unikátní. Pokud se vyskytuje jen v jednom dokumentu, získáme maximální hodnotu N. P i vyππím v skytu slov v dokumentech by tento koeficient klesal p íliπ rychle, proto jeπtï pouæijeme logaritmus. Získáme funkci idf t idf t = log N df t. Sloæením funkcí tf a idf získáme funkci tf-idf 0 (za chvíli tuto funkci jeπtï vylepπíme, prozatím si ji oznaëíme s apostrofem) definovanou jako tf-idf 0 t,d =tf t,d idf t. Tato funkce p i azuje slovu t a dokumentu d hodnotu, která je 14

vysoká, pokud se slovo t Ëasto vyskytuje v malé mnoæinï dokument, nízká, pokud se slovo vyskytuje málo v dokumentu d nebo pokud se vyskytuje hodnï v ostatních dokumentech. Algoritmus tf-idf je popsán v [15], kapitola 6. 1.5.3. Vylepπení algoritmu tf-idf Problémem tohoto p ístupu je, æe p íliπ preferuje velké dokumenty, které obsahují mnoho slov. Máme-li nap íklad uëebnici st edoπkolské matematiky, je pravdïpodobné, æe bude nïkolikrát, eknïme 50krát, obsahovat slovo kombinaceˇ. Vedle toho m æeme mít desetistránkov dokument pojednávající ËistÏ o kombinacích, ale slovo kombinaceˇ obsahuje pouze 25krát. Podle stávající tf t,d funkce bude uëebnice na klíëové slovo kombinaceˇ dvakrát relevantnïjπí neæ Ëlánek p ímo se zamï ující na kombinace. Tento problém m æeme zkusit vy eπit tím, æe hodnotu tf t,d jeπtï vydïlíme celkov m poëtem slov v dokumentu. Získáme tak relativní zastoupení slova t mezi vπemi slovy v dokumentu. UËebnice z p edchozího p íkladu pak bude mít mnohem niæπí hodnotu tf t,d, protoæe je mnohonásobnï vïtπí neæ Ëlánek. Vzorec funkce tf-idf by pak vypadal takto: tf-idf 00 t,d = tf t,d idf t, d kde d je poëet slov v dokumentu d. Problém jsme tím ale ve skuteënosti nevy eπili, jen jsme ho obrátili uæ nejsou preferované velké dokumenty, ale malé dokumenty, které dané klíëové slovo obsahují. Pokud bychom zpracovali dokument, jehoæ obsahem by byla pouze vïta Sázky a kurzy na severskou kombinaci.ˇ, pak by hodnota tf t,d pro slovo kombinaceˇ byla 1 v dokumentu jsou Ëty i slova (slova aˇ a naˇ nepoëítáme, jsou to 4 stop slova) a jedno z nich je právï kombinaceˇ (po p evedení na stem). Pokud by mïl mít zmínïn Ëlánek, kter obsahuje 25krát slovo kombinaceˇ, alespoú stejnou hodnotu tf t,d, nesmïl by mít více neæ sto slov. CLaSeek nakonec hodnotu tf t,d jeπtï dïlí logaritmem poëtu vπech slov v dokumentu. Hodnota tf t,d u velk ch dokument tak bude vydïlena vïtπí hodnotou neæ u mal ch dokument. ZároveÚ ale tato hodnota, kterou dïlíme, nebude r st lineárnï, takæe desetkrát vïtπí dokument nepot ebuje i desetkrát více klíëov ch slov, aby dosáhl na stejné hodnocení. Nyní m æeme napsat finální verzi funkce tf-idf: tf-idf t,d = tf t,d log d idf t, kde d je poëet slov v dokumentu d. Tato modifikace je vlastní, v [15] jsou popsány jiné moæné modifikace tf-idf algoritmu. 15

1.5.4. Vygenerování atribut dokumentu Nyní uæ máme vπechny prost edky k tomu, abychom pro kaæd dokument vygenerovali jeho atributy. Pro kaæd dokument d vezmeme mnoæinu vπech stem, které obsahuje a pro kaæd stem s spoëítáme jeho tf-idf s,d skóre. Za atributy pak m æeme vzít buô urëit poëet stem, které dosáhly nejvyππího skóre, nebo vπechny stemy, které p ekroëily urëitou hranici tf-idf skóre. CLaSeek v základním nastavení pracuje podle druhého zp sobu, takæe mu m æeme nastavit minimální hranici tf-idf skóre pro atributy dokumentu a vπechny stemy, které dosáhnou alespoú takového skóre, budou povaæovány za atributy pro dan dokument. Dále m æeme ve vyhledávaëi nastavit: Minimální poëet atribut. Pomocí tohoto nastavení m æeme specifikovat, æe pro kaæd dokument chceme nap íklad alespoú t i atributy. Pokud se p es hranici dostanou pouze dva stemy, t etí stem s nejvïtπím tf-idf skóre bude také povaæován za atribut dokumentu. Maximální poëet atribut pro kaæd dokument. VyhledávaË umoæúuje p epnout do druhého modelu, kdy se za atributy berou nap íklad t i stemy s nejvïtπím tf-idf skórem. Æádná hranice se pak neuplatúuje. PodrobnÏjπí informace o nastavení je v dokumentaci, viz kapitolu 5.3. 1.6. Dalπí funkce vyhledávaëe 1.6.1. Inverzní stemovací funkce BÏhem zpracování text jsme pouæívali stemmer, kter bral na vstup slovo a na v stupu vrátil základ slova. Bohuæel pro pomïrnï velkou Ëást slov vrací funkce takov základ slova, kter je sám o sobï nesmysln. Nap íklad pro slovo mnoæinaˇ získáme s pouæit m stemmerem stem mnohˇ. Toto chování nám nevadí v p ípadï budování indexu, ale vadilo by nám v druhé Ëásti. Nem æeme uæivateli napovïdït, æe má k dotazu p idat klíëové slovo mnohˇ, protoæe nebude vïdït, jaké slovo ve skuteënosti p idává. VyhledávaË vylepπíme tím, æe se pokusíme najít inverzní funkci ke stemovací funkci, abychom mohli ke kaædému podobnï πpatnému stemu p i adit nïjaké reálné slovo. Bohuæel inverzní funkce neexistuje, protoæe stemovací funkce není prostá. Sestrojíme takovou funkci, která bude mít na vstupu stem s a na v stupu jedno ze slov, které má s jako sv j stem. MÏjme tak p vodní stemmer, kter oznaëíme jako funkci stem, která nám pro slovo vrací jeho stem. Budeme chtít sestavit funkci stem 1, která nám pro stem vrací nïjaké p irozené slovo. 16

P i pouæívání funkce stem si tak u kaædého v sledného stemu s budeme uchovávat mnoæinu p vodních slov P s, která se zobrazují právï na stem s. Tedy pokud s = stem(w), pak P s = P s [{w}. Mnoæina P s pak splúuje 8x 2 P s : stem(x) =s. ZároveÚ si uloæíme poëet jednotliv ch slov ve vπech dokumentech. K tomu úëelu definujeme funkci sf(w), která vrací poëet v skyt slova w ve vπech dokumentech. Budeme chtít, aby nám funkce stem 1 vrátila z mnoæiny P s takové slovo, které se v p vodní sadï dokument vyskytovalo nejëastïji. Nejprve zadefinujeme pomocnou funkci stem 1 max: stemmax(s) 1 = x 2 P s sf(x) =maxsf(y). y2p s Tato funkce nám vrátí mnoæinu vπech slov, která se zobrazují na stem s ajejichæ poëet v skyt v sadï dokument je shodn, ale maximální mezi vπemi slovy z P s. Funkce stem 1 m æe z této mnoæiny vrátit libovoln prvek. Aby byla funkce jednoznaënï definována, vrátí takové slovo, které je nejmenπí vzhledem k lexikografickému uspo ádání: stem 1 (s) =w, w = min x. x2stemmax(s) 1 Pokud nyní pouæijeme funkci stem 1 nap íklad na stem mnohˇ, mïla by vrátit slovo mnoæinaˇ, protoæe to je slovo, které má stem mnohˇ a pravdïpodobnï se v dokumentech vyskytuje nejëastïji. Idea inverzní stemovací funkce je popsána v [11], konkrétní implementace je vlastní. 1.6.2. ZjiπtÏní názvu a popisku dokumentu Moderní vyhledávaëe typu Google nebo Seznam zobrazují ve v sledcích vyhledávání název dokumentu a popisek dokumentu. V p ípadï HTML stránek se vïtπinou jedná o obsah TITLE elementu. Jako popisek je buô zvolen obsah elementu META, kter obsahuje popisek, nebo Ëást stránky, která obsahuje klíëová slova, která uæivatel hledal. CLaSeek pracuje podobnï a jako název HTML stránky volí obsah TITLE elementu. Pokud stránka nemá TITLE element nebo vyhledávaë nezpracovává HTML stránku, pouæije se název souboru. Jako popisek stránky se pouæije element META obsahující popisek, pokud existuje. V opaëném p ípadï vyhledávaë v dokumentu nalezne nïkolik vït, které obsahují atribut dokumentu, a tyto vïty pak uloæí jako popisek dokumentu. Oproti eπení, které volí Google nebo Seznam, je nev hoda v tom, æe se popisek nemïní s dotazem uæivatele, je vædy stejn. 17

1.6.3. Kontrola p eklep CLaSeek má implementovanou jednoduchou kontrolu p eklep. V p ípadï, æe uæivatel poloæí vyhledávaëi dotaz, na kter vyhledávaë odpoví prázdnou mnoæinou v sledk, pokusí se zjistit, zda uæivatel neudïlal v nïkterém klíëovém slovu v dotazu chybu. Aby vyhledávaë mohl tuto kontrolu provádït, musí znát mnoæinu správn chˇ slov. M æeme buô sehnat jednu univerzální mnoæinu vπech validních slov v daném jazyku, nebo m æeme pouæít slova z dokument, která zpracováváme. StaËí si tak bïhem zpracování a budování indexu uloæit vπechna slova, na která jsme v dokumentech narazili. Druh p ístup má dvï zásadní v hody. Kontrola p eklep bude rychlejπí, protoæe mnoæina slov z dané databáze bude pravdïpodobnï menπí neæ mnoæina vπech slov daného jazyka. VyhledávaË tak bude hledat správná slova v menπí mnoæinï. Nabídnuté opravy jistï povedou k nïjak m v sledk m. Pokud bychom pouæili mnoæinu vπech slov jazyka, vyhledávaë by mohl nabídnout slovo, které je sice platné, ale v databázi se nevyskytuje. Pokud se omezíme je na slova, která se reálnï vyskytují ve zpracovan ch dokumentech, povede nabídnutá oprava vædy k nïjakému v sledku. Nyní pot ebujeme algoritmus, kter dokáæe porovnat dvï slova a vrátit hodnotu reprezentující jejich podobnost. Jedním z klasick ch algoritm je Levenstheinova vzdálenost, kter poëítá poëet p eklep mezi dvïma slovy. Takæe pro slova kotelˇ a hotelˇ vrátí hodnotu 1, protoæe se liπí pouze v prvním písmenu. CLaSeek pouæívá sloæitïjπí algoritmus, kter je zaloæen na myπlence hledání nejvïtπích spoleën ch subsekvencí. V prvním kroku nalezneme nejdelπí spoleën etïzec mezi dvïma slovy. Uloæíme si indexy, na kter ch etïzec v jednotliv ch slovech zaëíná a délku tohoto etïzce. Poté aplikujeme stejn postup na zbylé kousky etïzce. Nakonec dostaneme seznam vπech spoleën ch etïzc, pomocí nichæ m æeme vypoëítat stupeú podobnosti, coæ je Ëíslo z intervalu [0, 1]. CLaSeek na to pouæívá funkci ze standardní knihovny Pythonu, viz [1]. 1.6.4. DoplÚující informace KromÏ samotného indexu a slovníku na p eklad stem zpït na slova si pot ebujeme uchovávat jeπtï nïkteré dalπí informace. JmenovitÏ tyto: Seznam vπech atribut vπech dokument v sadï spolu s jejich tf-idf skórem vzhledem k danému dokumentu. V dalπích algoritmech budeme pot ebovat vïdït, zda dokument d obsahuje atribut a, p ípadnï i jaké je jeho tf-idf a,d skóre. Na rychlosti získání tïchto informací uæ bude p ímo záleæet rychlost celého algoritmu, takæe by Ëtení a následné získání dat mïlo b t rychlé. 18

Meta data ke vπem dokument m. Jedná se o: Název dokumentu. Popisek dokumentu. URL dokumentu. Atributy dokumentu spolu s jejich tf-idf skórem.»íseln identifikátor dokumentu. PoËet slov v dokumentu. 1.7. Odpovídání na dotazy Hlavním úëelem vyhledávaëe je samoz ejmï odpovídání na dotazy. Uæivatel vloæí do rozhraní vyhledávaëe sv j dotaz, kter je dále zpracován vyhledávaëem, kter vrátí nïjak seznam v sledk. Cel princip fungování boolean dotaz je popsán v [15], kapitola 1. 1.7.1. Syntax dotazu Dotazem m æe b t libovoln text, p iëemæ m æe obsahovat jisté ídicí p íkazy, kter m íkáme operátory. CLaSeek podporuje t i operátory: AND, OR a NOT. Pokud se tato t i slova objeví v dotazu, budou vyhledávaëem pochopena jako operátory, nikoli jako obyëejná text. Musí b t psány velk mi písmeny, takæe pokud chce uæivatel pouæít daná slova jako obyëejn text, staëí pouæít jejich variantu s mal mi písmeny. BÏhem vyhodnocování dotazu budou na dotaz aplikovány stejné postupy na úpravy textu, jaké byly popsány v kapitole 1.3. Dojde tak k odstranïní interpunkce, diakritiky a stop slov, text bude p eveden na malá písmena a podobnï. Dotaz Hele, jak se máπ?!ˇ tak bude vyhodnocen stejnï jako dotaz hele masˇ, pokud budou slova jakˇ a seˇ v mnoæinï stop slov. Pokud nevloæíme do textu æádn operátor, pouæije se implicitnï mezi kaæd m slovem AND operátor. To znamená, æe pokud hledáme anal za datˇ, vyhledávaë bude vidït dotaz jako anal za AND datˇ a vyhledá takové dokumenty, které obsahují slovo anal zaˇ a zároveú obsahují slovo datˇ, respektive jejich stemy. Spojíme-li dvï slova operátorem OR, budou se hledat dokumenty, které obsahují alespoú jedno z tïchto slov. Hledáme-li spoëetné OR nespoëetnéˇ, vyhledávaë bude hledat dokumenty, které obsahují slovo spoëetnéˇ nebo nespoëetnéˇ. Operátor NOT vyluëuje ty dokumenty, které obsahují slovo, které se nachází za NOT. Hledáme-li spoëetné NOT nespoëetnéˇ, bude vyhledávaë hledat ty dokumenty, které obsahují slovo spoëetnéˇ, ale neobsahují slovo nespoëetnéˇ. Tyto operátory m æeme r znï kombinovat a s pomocí závorek m æeme tvo it sloæitïjπí dotazy, nap íklad (spoëetné OR nespoëetné) mnoæiny NOT (komplexní OR p irozená)ˇ. 19

Kaæd operátor má jinou prioritu. Se azeno od nejmenπí priority: OR, AND, NOT. Znamená to, æe dotaz NOT a AND b OR cˇ je ekvivalentní s dotazem ((NOT a) AND b) OR cˇ. 1.7.2. Parsování dotazu Samotn dotaz zapsan uæivatelem musí CLaSeek p eloæit do nïjaké interní formy, které bude rozumït. K tomu vyuæívá jednoduch parser. V prvním kroku p evedeme hol text na lexémy. Lexém je nïjaká základní jednotka dotazovacího jazyka. V naπem p ípadï m æe b t lexém slovo, operátor nebo závorky. Takæe lexém je nap íklad slovo matematikaˇ, operátor ANDˇ nebo otevírací závorka (ˇ. Lexém není matematika)ˇ, protoæe na konci slova máme závorku tento v raz by mïl b t rozdïlen do dvou lexém. Po aplikaci této Ëásti tak dostáváme seznam lexém. V tuto chvíli budeme jednotlivé lexémy p evádït na syntaktick strom, coæ je stromová struktura, která obsahuje v kaædém uzlu informaci o typu uzlu a obsahuje odkaz na nula aæ dva potomky. Typem m æe b t buô slovo nebo operátor. V p ípadï, æe je uzel operátorem, uloæíme si jeπtï, o jak operátor se jedná. V p ípadï, æe je uzel slovem, uloæíme si do uzlu samotné slovo. Pokud jde o binární operátor, tj. AND nebo OR, musí obsahovat jeπtï levého a pravého potomka. Tam m æe b t uloæen opït uzel libovolného typu. Pokud jde o uzel typu NOT, tak musí mít právï jednoho potomka, kter m æe b t libovolného typu. Nap íklad dotazu (matematika AND (spoëetné OR nespoëetné)) OR (NOT (mnoæiny AND funkce))ˇ by odpovídal syntaktick strom zobrazen na obrázku 1. Nakonec cel v raz zjednoduπíme odstraníme uzly, které obsahují stop slova, protoæe stop slova nepouæíváme p i vyhledávání a p evedeme slova na stemy. Více informací o parsování dotazu je nap íklad v [2]. 1.7.3. Vyhledání odpovídajících dokument Ve chvíli, kdy máme syntaktick strom, se m æeme pustit do hledání dokument. K tomu vyuæijeme vybudovan index, kter nám umoæúuje snadno zjistit, v jak ch dokumentech se vyskytuje dané slovo. Pro úëely popisu mechanismu si definujeme funkci R, která bere na vstupu dotaz (syntaktick strom) Q a na v stupu vrací mnoæinu dokument, které odpovídají zadanému dotazu. Tato funkce se bude chovat odliπnï v závislosti na tom, jak vypadá dotaz Q. Dále oznaëme D mnoæinu vπech dokument a a nechª oznaëují nïjaké dotazy. Je-li Q = s, kde s je nïjak stem, pak funkce R vrátí mnoæinu dokument, které obsahují dan stem, coæ vyëteme z indexu. FormálnÏ to m æeme za- 20

OR AND NOT 'matematika' OR AND 'spocetne' 'nespocetne' 'mnoziny' 'funkce' Obrázek 1. Syntaktick strom psat jako: R s = {d 2 D s 2 d}. Je-li dotaz ve tvaru Q = AND ˇ, pak R Q =R \ R. Je-li dotaz ve tvaru Q = OR ˇ, pak R Q =R [ R. Je-li dotaz ve tvaru Q = NOT ˇ, pak R Q = D \ R. Postupnou aplikací tïchto pravidel dostaneme mnoæinu v sledn ch dokument R. V dalπím kroku tyto dokumenty se adíme podle relevance. 1.7.4. Se azení dokument V souëasné chvíli máme mnoæinu dokument R Q. Aby byl vyhledávaë smyslupln, mïl by tyto dokumenty se adit podle toho, jak relevantní dané dokumenty vzhledem k poloæenému dotazu jsou. To je obecnï nelehk úkol. Ve vyhledávaëi je pak pouæit standardní tf-idf algoritmus popsan v Ëásti 1.5.2. Abychom mohli ohodnotit jednotlivé dokumenty, pot ebujeme znát slova, v Ëi kter m máme dokumenty ohodnocovat. Odstraníme tak z dotazu vπechny operátory a dostaneme mnoæinu vπech slov S. V Ëi tïmto slov m budeme dokumenty hodnotit. K tomu uæ vyuæijeme tf-idf algoritmus pro kaædé slovo z mnoæiny S a pro kaæd dokument z mnoæiny R Q spoëítáme jeho tf-idf skóre; poté tato skóre se- Ëteme a dokumenty se adíme sestupnï podle tohoto skóre. Skóre sc d,s dokumentu 21

1: function rank(d, S) 2: score sc d,s 3: for all s 2 S do 4: if s 2 title(d) _ s 2 url(d) then 5: score score 3 6: end if 7: if s 2 description(d) then 8: score score 2 9: end if 10: end for 11: return score 12: end function d tak udává vzorec: sc d,s = X s2s tf-idf s,d. Toto základní skóre jeπtï dále upravíme podle toho, zda se klíëová slova z dotazu nevyskytují v d leæit ch Ëástech dokumentu, konkrétnï jde o název, adresu a popisek stránky. Za kaædé klíëové slovo, které se vyskytuje v názvu stránky d nebo v adrese stránky, ztrojnásobíme hodnotu sc d,s. Za kaædé klíëové slovo, které se vyskytuje v popisu stránky d, zdvojnásobíme hodnotu sc d,s. Ve v sledku tak dostáváme funkci rank, která nejprve vypoëte hodnotu sc d,s a poté aplikuje pravidla o ztrojnásobení a zdvojnásobení. Funkce rank bere na vstupu dva parametry: dokument d, pro kter poëítáme skóre a slova S z dotazu Q. Nyní se adíme dokumenty R Q do n-tice hd 1,d 2,...,d n i, kde n = R Q a n[ d i =R Q i=1 tak, aby platilo rank d1,s rank d2,s... rank dn,s. Tato se azená n-tice je v stupem algoritmu vyhledávání. Idea a postup azení dokument je popsán v [15], vëetnï zv hodúování urëit ch Ëástí dokumentu. 22

2. Formální konceptuální anal za Formální konceptuální anal zu budeme pouæívat jako matematick základ pro hledání souvisejících dotaz. V této kapitole bude popsána nezbytná teorie FCA. Základní teorie kolem FCA byla poprvé p edstavena roku 1982 v Ëlánku Restructuring Lattice Theory: An Approach Based on Hierarchies of Conceptsˇ, jehoæ autorem je nïmeck matematik Rudolf Wille, viz [16]. 2.1. Neformální úvod do formální konceptuální anal zy Formální konceptuální anal za pracuje s tabulkov mi daty. V ádcích máme objekty, ve sloupcích máme atributy objekt. Obsahem kaædé buúky je pak informace, zda dan objekt má dan atribut. Tato informace je binární, dan objekt buô dan atribut má, nebo nemá. V tabulce 1. je p íklad takov ch tabulkov ch dat. V ádcích se nachází objekty æivoëichové Ëi rostliny. Ve sloupcích pak jednotlivé atributy, coæ jsou nïjaké vlastnosti, které dané objekty mohou mít. Pod tabulkou je legenda k jednotliv m atribut m. Nap íklad první atribut a je pot ebuje k æivotu voduˇ. Kaæd æivo- Ëich a kaædá rostlina pot ebuje k æivotu vodu, takæe v celém sloupeëku je k íæek. Druh atribut b je æije ve vodïˇ. Zde uæ není k íæek vπude, takov pes ve vodï neæije. Takové tabulce s daty íkáme kontext. V tomto kontextu pak hledáme shluky potenciálnï zajímav ch dat. Shlukem m æe b t nap íklad mnoæina Cejn, Æába, Pes, protoæe vπechna tato zví ata sdílí spoleëné atributy {a, g, h} pot ebují vodu k æivotu, mohou se pohybovat a mají konëetiny. ZároveÚ platí, æe cejn, æába a pes æádné dalπí spoleëné atributy nesdílí a podobnï u atribut : æádn dalπí objekt uæ nemá právï tyto t i spoleëné vlastnosti. Takové dvï mnoæiny objekt a atribut pak tvo í koncept. Mnoæinu objekt konceptu naz váme extent a mnoæinu atribut intent. Kdyæ se podíváme na tabulku, zjistíme, æe koncept je tvo en k íæky, které dohromady tvo í rozházen obdélníkˇ. Pokud bychom ale sloupce, které reprezentují mnoæinu spoleën ch atribut, p esunuly k sobï, získali bychom hezk obdélník (v tomto p ípadï dokonce Ëtverec). Koncept je zv raznïn v tabulce 2. Vædy nás zajímá maximální obdélník, tj. pokud existuje objekt nebo atribut, kter m æeme p idat a opït získáme obdélník, p idáme ho. To samoz ejmï není jedin koncept, kter kontext obsahuje. Ve skuteënosti tento kontext obsahuje 19 koncept. Zkusíme si najít dalπí. Existuje nïco, co æije na zemi i ve vodï? Hledáme tak objekty, které mají atributy {b, c}. Pohledem do tabulky zjistíme, æe tyto vlastnosti má æába a rákosí. NicménÏ jeπtï jsme nenalezli koncept, protoæe nevíme, jestli náhodou tyto objekty nesdílí jeπtï nïjak dalπí atribut. Vzhledem k tomu, æe vπechny objekty mají atribut a, musíme ho p idat do mnoæiny atribut. Tím uæ získáme koncept s objekty {æába, rákosí} a atributy {a, b, c}. 23

a b c d e f g h i Pijavice Cejn Æába Pes Bodlák Rákosí Fazole Kuku ice Tabulka 1. Formální kontext, zdroj: [4] a: pot ebuje k æivotu vodu, b: æije ve vodï, c: æije na zemi, d: pot ebuje chlorofyl, e: dvoudïloæná rostlina, f: jednodïloæná rostlina, g: m æe se pohybovat, h: má konëetiny, i: kojí potomky b c d e f g h a i Pijavice Cejn Æába Pes Bodlák Rákosí Fazole Kuku ice Tabulka 2. Formální kontext se zv raznïn m konceptem 24

ÿekli jsme, æe formální konceptuální anal za zároveú eπí i hierarchii shluk. Ta se eπí pomocí relace inkluze. M æeme íci, æe koncept, kter se skládá zextentu{pijavice, cejn, æába a pes} a intentu {a, g} je obecnïjπí neæ koncept {cejn, æába a pes} a {a, g, h}. První koncept m æeme pojmenovat pohybující se æivoëichovéˇ, druh koncept by byl æivoëichové, kte í k pohybu vyuæívají konëetinyˇ. Druh koncept obsahuje vπechny atributy jako první koncept, plus jeden navíc ten nïjak m zp sobem konkretizuje tento koncept. U objekt to platí naopak. Druh koncept má více atribut, ale ménï objekt. To je logické, pokud zv πíme poëet atribut, které objekty musí mít, zv πíme tím na objekty nároky a objekt ubude. Tím uæ se blíæíme k definici uspo ádání koncept. Pokud je nïjak koncept konkrétnïjπí neæ jin, ekneme, æe je menπí. Koncept A je konkrétnïjπí neæ koncept B, zapíπeme A < B, pokud je extent konceptu A vlastní podmnoæinou extentu konceptu B. Tím máme definováno uspo ádání, kter m m æeme uspo ádat vπechny koncepty. P esnïjπí popis bude v následující kapitole. 2.2. Formální zavedení FCA Vπechny definice a vπechny vïty z této kapitoly jsou citovány z [4]. Dalπí materiály o FCA: [12], [6], [7], [8]. 2.2.1. Základní pojmy Definice 1 (Formální kontext). Formální kontext je trojice hx, Y, Ii, kde X je neprázdná mnoæina objekt, Y je neprázdná mnoæina atribut a I je binární relace mezi X a Y, tj. I X Y. V p edchozím p íkladï byla mnoæina X rovna æivoëich m a rostlinám a mnoæina Y byla rovna vlastnostem tïchto æivoëich a rostlin. Relace I pak vyznaëuje, zda má objekt x atribut y. Objektx má atribut y právï tehdy, kdyæ hx, yi 2I. Formální kontext, jak jsme vidïli, m æe b t reprezentován pomocí tabulky. Definice 2 ( ipkové operátory). Pro kontext hx, Y, Ii definujeme operátory " : 2 X! 2 Y a # :2 Y! 2 X tak, æe pro kaædé A X a B Y : A " = {y 2 Y pro vπechna x 2 A : hx, yi 2I} (1) B # = {x 2 X pro vπechna y 2 B : hx, yi 2I} (2) Tyto operátory umoæúují zjistit spoleëné vlastnosti. Operátor " nám zjistí vπechny atributy, které mají vπechny objekty v A spoleëné. Operátor # nám zjistí vπechny objekty, které sdílí vπechny atributy z B. Pokud se vrátíme ke kontextu v tabulce 1., tak: 25

Æába " = {a, b, c, g, h} {Fazole, Bodlák} " = {a, d} {Pijavice, Pes, Kuku ice} " = {a} X " = {a} {c, d} # = {Rákosí, Fazole, Kuku ice} {f,g} # = ; {b} # = Pijavice, Cejn, Æába, Bodlák, Rákosí Definice 3 (Formální koncept). Formální koncept v kontextu hx, Y, Ii je dvojice ha, Bi, A X, B Y tak, æe: A " = B ^ B # = A. MnoæinÏ A íkáme extentˇ a mnoæinï B intentˇ. Takto definovan formální koncept odpovídá naπí p edchozí p edstavï o konceptu. Pokud jsme mïli danou mnoæinu objekt, pak jsme naπli sdílené atributy. K tïmto sdílen m atribut m jsme následnï nalezli objekty, které vπechny tyto atributy sdílí, coæ mohlo b t více objekt, neæ jaké jsme mïli na zaëátku. Ve chvíli, kdy se k tïmto objekt m pokusíme najít sdílené atributy, nenalezneme jiæ æádn nov. V tabulce 1. tak m æeme najít nap íklad koncept Cejn, Æába, {a, b, g, h}, protoæe Cejn, Æába " = {a, b, g, h} ^ {a, b, g, h} # = Cejn, Æába. 2.2.2. Galoisova spojení Évariste Galois byl francouzsk matematik 19. století. Je znám svou prací v oblasti moderní algebry a povaæuje se za zakladatele teorie grup. Bohuæel zem el jiæ ve sv ch dvaceti letech, kdyæ se úëastnil st eleckého souboje. My vyuæijeme Galoisovo spojení jako základní matematickou strukturu pro FCA. Definice 4 (Galoisovo spojení). Galoisovo spojení mezi mnoæinami X a Y je dvojice zobrazení hf,gi, f : 2 X! 2 Y a g : 2 Y! 2 X, která pro vπechna A, A 1,A 2 X a B,B 1,B 2 Y splúují: A 1 A 2 ) f(a 2 ) f(a 1 ) (3) B 1 B 2 ) g(b 2 ) g(b 1 ) (4) A g(f(a)) (5) B f(g(b)) (6) 26

Galoisovo spojení má jednoduchou interpretaci, kterou si m æeme ukázat na p íkladu herc a film. Nechª mnoæina X je mnoæina vπech herc a hereëek a mnoæina Y vπech film. Zobrazení f nám pro danou podmnoæinu herc A vrací mnoæinu film, ve kter ch vπichni herci z mnoæiny A hráli. Zobrazení g naopak vrací pro podmnoæinu film B takovou mnoæinu herc, kte í hráli ve vπech filmech v mnoæinï B. V sledkem f({bruce Willis}) je mnoæina vπech film, ve kter ch hrál Bruce Willis. V sledkem g({pelíπky; Dobrá zpráva; Pasti, pasti, pastiëky}) je mnoæina herc a hereëek, kte í hráli ve vπech tïchto filmech: {Miroslav Donutil, Eva Holubová}. Vlastnosti zmínïné v definici 4 uæ jsou pak velmi p irozené. Vlastnost 3 íká, æe pokud máme skupiny herc A 1 = {Johnny Depp} a A 2 = {Johnny Depp, Bruce Lee}, tak m æeme oëekávat, æe pouze Depp hrál ve více filmech neæ Depp spolu s Leem. Filmy, ve kter ch spolu hráli Depp a Lee jsou urëitï podmnoæinou film, kde hrál pouze Depp. Vlastnost 5 zase íká, æe pokud nalezneme vπechny filmy, ve kter ch hrál Johnny Depp a poté nalezneme vπechny herce, kte í hráli ve vπech tïchto filmech, tak mezi tïmito herci musí b t Johnny Depp. Ostatní dvï vlastnosti íkají duálnï totéæ. Definice 5 (Pevné body Galoisova spojení). Pro Galoisovo spojení hf,gi mezi mnoæinami X a Y definujeme mnoæinu fix(hf,gi) = ha, Bi 22 X 2 Y f(a) =B,g(B) =A. Tuto mnoæinu naz váme mnoæinu pevn ch bod spojení hf,gi. Pevn m bodem je nap íklad dvojice A = {Miroslav Donutil, Eva Holubová}, B = {Pelíπky; Dobrá zpráva; Pasti, pasti, pastiëky}. Donutil s Holubovou spolu nehráli v æádném dalπím filmu, kromï tïchto t í. A zároveú v tïchto t ech filmech spolu nehráli æádní jiní herci neæ Donutil a Holubová. VÏta 6 (Z etïzení Galoisov ch spojení). Pro Galoisovo spojení hf,gi mezi X a Y a pro vπechna A X a B Y platí: f(a) = f(g(f(a))) (7) g(b) = g(f(g(b))) (8) 27

Toto je zajímavá vlastnost. Na zaëátku máme mnoæinu herc A. Nalezneme filmy, ve kter ch tito herci hráli. Tím získáme f(a). Dále nalezneme herce, kte í hráli ve vπech tïchto nalezen ch filmech. Tam se urëitï objeví herci z A, viz definici 4, ale mohou se tam objevit i dalπí herci. Tím získáme hodnotu g(f(a)). Nakonec zpátky spoëítáme filmy, ve kter ch tito herci hráli. Musíme nutnï získat mnoæinu film f(a), protoæe g(f(a)) jsou právï herci, kte í hrají vπech filmech z f(a). Definice 7 (UzávÏrov operátor). UzávÏrov operátor C na mnoæinï X je zobrazení C :2 X! 2 X, které pro kaædé A, A 1,A 2 X splúuje: A C(A), (9) A 1 A 2 ) C(A 1 ) C(A 2 ), (10) C(A) =C(C(A)). (11) Definice 8 (Pevné body uzávïrového operátoru). Pro uzávïrov operátor C : 2 X! 2 X pojmenujeme mnoæinu fix(c) ={A X C(A) =A} jako mnoæinu pevn ch bod uzávïrového operátoru C. VÏta 9 (Od Galoisova spojení k uzávïrovému operátoru). Nechª hf,gi je Galoisovo spojení mezi X a Y. Potom C X = f g je uzávïrov operátor na X a C Y = g f je uzávïrov operátor na Y. Zápis f g znaëí skládání mnoæin ve smyslu (f g)(x) = g(f(x)). Pevn m bodem uzávïrového operátoru nad mnoæinou herc rozumíme takovou mnoæinu herc, kte í spolu hráli v urëit ch filmech, ale æádní jiní herci uæ v tïchto filmech nehráli. Poslední vlastnost je pro pevn bod klíëová. Je nap íklad mnoæina {Danny Glover, Mel Gibson} pevn m bodem? VÏta 9 nám íká, jak postupovat, pokud pevn bod chceme nalézt. Jako první vypoëteme f({danny Glover, Mel Gibson}). Tím získáme mnoæinu film, ve kter ch herci hráli spolu, tj. {Smrtonosná zbraú 1, 2, 3, 4}. Nyní zpït zjistíme herce, kte í hráli v tïchto filmech, spoëítáme g({smrtonosná zbraú 1, 2, 3, 4}). KromÏ Gibsona a Glovera se tam objeví jeπtï Mary Ellen Trainor: {Danny Glover, Mel Gibson, Mary Ellen Trainor}. Tato mnoæina herc a here- Ëek je uæ pevn m bodem. UzávÏrov operátor si m æeme ukázat i na úplnï jiném p íkladï, doplnïní rovinného útvaru na nejmenπí konvexní útvar. Máme-li tak nïjak útvar v rovinï, kter není konvexní, nap íklad klasick obrázek hvïzdy, uzávïrov operátor ho doplní tak, aby z nïj vznikl konvexní útvar a aby tento nov útvar byl nejmenπí. Na tomto operátoru si m æeme ilustrovat podmínky v definici 7. První vlastnost íká, æe p vodní útvar bude vædy podmnoæinou uzav eného útvaru. P vodní rovinn útvar bude vædy cel obsaæen v konvexním útvaru, kter 28

ho má obalovat uzav ením pouze p idámeˇ p vodnímu útvaru body tak, aby vznikl konvexní útvar. Druhá vlastnost íká, æe pokud máme dva r zné útvary, p iëemæ jeden je zano en ve druhém, tak i jejich obaly budou zano ené. Poslední vlastnost íká, æe obalem obalu je tent æ obal. Pokud obalíme hvïzdu konvexním útvarem, pro p íklad pravideln m pïtiúhelníkem, tak obalem tohoto pïtiúhelníku bude tent æ pïtiúhelník. VÏta 10. Nechª hf,gi je Galoisovo spojení mezi X a Y. Pak pro kaædé A j X, j 2 J a B j Y,j 2 J platí: f( [ j2j A j ) = \ j2j f(a j ) (12) g( [ j2j B j ) = \ j2j g(b j ) (13) VÏta 11 ( ipkové operátory tvo í Galoisovo spojení). Pro formální kontext hx, Y, Ii tvo í dvojice ", # Galoisovo spojení mezi X a Y. P edchozí vïta je d leæit m v sledkem. Odpovídá nám na otázku, jak jednoduπe poëítat extenty a intenty k libovoln m podmnoæinám objekt Ëi atribut. Protoæe pro kontext hx, Y, Ii je ", # Galoisovo spojení, platí, æe zobrazení " # je uzávïrov operátor na mnoæinï X, tj. na mnoæinï objekt. Máme-li mnoæinu objekt A X, pak uzav ením A "# získáme pevn bod operátoru, coæ je zároveú extent nïjakého konceptu. PodobnÏ pokud máme mnoæinu atribut B Y, pak uzav ením B #" získáme intent nïjakého konceptu. Pokud si spoëítáme extent jako A "#, m æeme intent tohoto konceptu zjistit tak, æe jeπtï jednou spoëítáme ", dostaneme tak mnoæinu A "#". NicménÏ z vïty 6 víme, æe A " = A "#", takæe intent je zároveú rovn A ". Jak koliv pár tvaru A "#,A ", kde A X, tvo í formální koncept. M æeme si také oznaëit mnoæinu vπech extent jako Ext a mnoæinu vπech intent jako Int: Ext(X, Y, I) = fix( "# ), (14) Int(X, Y, I) = fix( #" ). (15) Dále si oznaëíme mnoæinu vπech koncept kontextu hx, Y, Ii: B(X, Y, I) = A, A " A 2 Ext(X, Y, I), (16) B(X, Y, I) = B #,B B 2 Int(X, Y, I). (17) 29

2.2.3. Konceptuální svaz Definice 12 (Uspo ádání koncept ). O konceptech ha 1,B 1 i, ha 2,B 2 i kontextu hx, Y, Ii ekeneme, æe ha 1,B 1 iappleha 2,B 2 i právï kdyæ A 1 A 2 (B 2 B 1 ). Relaci menπí nebo rovno mezi koncepty m æeme interpretovat jako relaci b t konkrétnïjπí konceptˇ. Pokud pro koncepty platí ha 1,B 1 iappleha 2,B 2 i, pak koncept ha 1,B 1 i je konkrétnïjπí neæ koncept ha 2,B 2 i. VÏta 13 (Extenty, intenty a formální koncepty). NÏkteré d leæité vlastnosti mnoæin extent, intent a koncept : 1. hext(x,y,i), i a hint(x,y,i), i jsou (ËásteËnÏ) uspo ádané mnoæiny. 2. hext(x, Y, I), i a hint(x, Y, I), i jsou duálnï isomorfní. Tj. existuje zobrazení f :Ext(X, Y, I)! Int(X, Y, I) takové, æe A 1 A 2 platí právï tehdy, kdyæ f(a 2 ) f(a 1 ). 3. hb(x, Y, I), applei je isomorfní s hext(x, Y, I), i. Definice 14 (Svaz). Nechª hx, applei je uspo ádaná mnoæina. Pokud pro kaædé x, y 2 X existuje sup(x, y) a inf(x, y), pak hx, applei nazveme svaz. Pokud m æeme nalézt infima a suprema pro jakoukoliv podmnoæinu mnoæiny X, pak se jedná o úpln svaz. Uspo ádaná mnoæina tak je svazem, pokud dokáæeme ke kaæd m dvïma prvk m mnoæiny nalézt jejich infimum a supremum. P íkladem jednoduchého svazu mohou b t reálná Ëísla s klasick m uspo ádáním. Pak platí, æe pro x, y 2 R: sup(x, y) =max(x, y) a inf(x, y) = min(x, y). Dalπím p íkladem svazu je 2 N,, mnoæina vπech podmnoæin p irozen ch Ëísel s uspo ádáním podle mnoæinové inkluze. Platí pak, æe pro X, Y 2 2 N máme sup(x, Y )=X [ Y a inf(x, Y )=X \ Y. Definice 15 (Konceptuální svaz). Pro kontext hx, Y, Ii máme definovanou mnoæinu vπech formálních koncept B(X, Y, I) z hx, Y, Ii. Tedy B(X, Y, I) = ha, Bi 22 X 2 Y A " = B ^ B # = A. Dvojice hb(x,y,i), applei se naz vá konceptuální svaz. K tomu, abychom dokázali, æe hb(x,y,i), applei je skuteënï svaz, musíme dokázat, æe pro kaædé dva koncepty c 1,c 2 2hB(X, Y, I), applei existuje v tomto svazu jejich supremum a infimum. Vrátíme se jeπtï k obecnému uzávïrovému operátoru. 30