Fulltextové vyhledávání Michal Kopecký Výběr ze slajdů k 6. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK
Fulltextové vyhledávání Filtrace, Disambiguace, Lemmatizace, Indexy, Tezaury, Dotazování
Fulltextové vyhledávání Odlišné od principů běžného vyhledávání Neprohledávají se striktně strukturovaná data, kde má každý sloupec každé tabulky předem daný význam Prohledávají se volně psané texty, kde může být stejná událost popsaná více autory rozdílně Různá slova stejného významu (Synonyma) Různé slovní obraty a opisy … DBI026 -DB Aplikace - MFF UK
Fulltextové vyhledávání Databázové systémy využívají svých prostředků rozšiřitelnosti a dodávají standardně prostředky, které vyhledávání v textových datech umožňují DBI026 -DB Aplikace - MFF UK
Fulltextové vyhledávání Standard: SQL/MM 2 SQL Multimedia and Application Packages Part 2: Full-Text Reálně rozdílné přístupy a možnosti Neexistuje objektivně nejlepší řešení Výsledky navíc podléhají subjektivním názorům tazatelů DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Posloupnost slov v přirozeném jazyce. Každé slovo zastupuje pro autora nějakou představu, kterou v něm slovo vyvolá - význam. Tyto představy reprezentují reálné předměty. ... DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Synonymie slov Více slov může mít pro autora stejný význam krychle = kostka buldozer = nakladač ... DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Homonymie slov Jedno slovo může mít pro autora několik významů taška: střešní, nákupní koruna: platidlo, královská k., k. stromu třída: školní, kategorie v teorii množin los: zvíře, poukázka ke slosování ... DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Homonymie slov Jedno slovo může používat stejný tvar pro různé pády a další gramatické jevy (gramatická homonymie) kontroly: 1. p. m.č., 2. p. j.č. není zřejmé, zda se jedná o jednu, nebo více kontrol Jeden tvar slova může mít různý význam plesy: podst. jm. ples, podst. jm. pleso žena: podst. jm. žena, sloveso hnát hnát: sloveso hnát, podst. jm. hnát tři: číslovka tři, sloveso třít pět: číslovka pět, sloveso pět DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Významy slov se mohou překrývat. Hierarchicky zvíře > kůň > hřebec Asociace kalkulátor ~ počítač ~ procesor ... DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Jednotlivá přiřazení jsou navíc závislá na subjektu, který dokument píše nebo čte. Dva lidé mohou jednomu slovu přikládat zcela nebo jen částečně jiný význam. Dva lidé si i pod stejným významem mohou představit jiný konkrétní předmět nebo množinu předmětů. máma, pokoj, ... Výsledkem je situace, kdy dva různí čtenáři nemusí přečtením získat stejnou informaci jako autor, ani navzájem. DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Homonymie a nejednoznačnosti narůstají při přechodu od slov k větám. Homonymie vlastních jmen na začátku věty Dohnal zvítězil. (Čtrnáctý zvítězil.) Dohnal předešel gen. Kvapila velmi výrazně. - jedna, nebo dvě věty? Homonymie spojky a v předmětu věty Funkce rezistoru a zesilovače v radiotechnice. (funkce rezistoru v radiotechnice) a (funkce zesilovače v radiotechnice) (funkce rezistoru) a (funkce zesilovače v radiotechnice) (funkce rezistoru) a (zesilovače v radiotechnice) Homonymie podmětu a předmětu Popílek přikryl sníh. – co leží navrchu? DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Příklad české věty s více gramaticky možnými významy viz např. Podivné fungování gramatiky, http://www.scienceworld.cz/sw.nsf/lingvistika věta „Ženu holí stroj“ může - podle volby přísudku ve větě - znamenat: Poháním stroj pomocí hole (hnát) Žena používá depilační přístroj (holit) Návod k nekonvenčnímu způsobu oblékání (strojit) … a další DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Porozumění textu Příklad anglické věty s více gramaticky možnými významy viz např. Podivné fungování gramatiky, http://www.scienceworld.cz/sw.nsf/lingvistika věta „Time flies like an arrow“ může - podle volby přísudku ve větě - znamenat: Čas letí jako voda (fly) Časové mouchy/zipy mají rády šíp (like) … a další DBI026 -DB Aplikace - MFF UK
Fulltextové vyhledávání Samotná formulace dotazu, který by vrátil všechny dokumenty, které tazatele zajímají a žádné jiné obvykle nelze zformulovat Spolu s vyhovujícími – relevantními – odpověďmi se obvykle vrací i odpovědi nerelevantní DBI026 -DB Aplikace - MFF UK
Fulltextové vyhledávání Problémy Homonyma Ptá se tazatel dotazem „koruna“ na finanční, lesnické či panovnické dokumenty? Synonyma Vyhovuje dokument o „krychlích“ dotazu na dokumenty o „kostkách“? Vyhovuje dokument o „stromech“ dotazu na „souvislé grafy bez cyklů“? DBI026 -DB Aplikace - MFF UK
Fulltextové vyhledávání Problémy Hierarchie významů Zvíře – Savec – Šelma – Medvěd Tiskovina – Časopis Ohebnost slov Jít, Jde, Jdu, Jdou, … DBI026 -DB Aplikace - MFF UK
Fulltextové vyhledávání Striktní boolská logika není pro formulaci dotazů příliš vhodná Dokument buďto vyhovuje dotazu, nebo nevyhovuje Dotazování v textech vyžaduje třídit odpovědi podle předpokládané vhodnosti pro tazatele Je potřebné mít možnost definovat míru shody dotazu s dokumentem DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Přesnost a úplnost Dva DIS mohou vrátit na shodný dotaz různé odpovědi, které se nemusí překrývat ani v jediném vráceném dokumentu Jak porovnat kvalitu odpovědí navzájem? Dokumenty v databázi Relevantní dokumenty Vrácené v DIS1 Vrácené v DIS2 DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Přesnost a úplnost Dva tazatelé mohou mít při položení shodného dotazu různý názor na relevanci vrácených dokumentů Jak vyhovět subjektivnímu názoru tazatelů? Dokumenty v databázi Relevantní Vrácené dok. DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Přesnost a úplnost Kvalita výsledné množiny dokumentů se měří na základě těchto čísel Přesnost (Precision) P = Nvr / Nv Pravděpodobnost, že dokument zařazený v odpovědi je skutečně relevantní Úplnost (Recall) R = Nvr / Nr Pravděpodobnost, že skutečně relevantní dokument je zařazený v odpovědi DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Přesnost a úplnost Koeficienty jsou opět závislé na subjektivním názoru tazatele Dokument vrácený na výstupu může uspokojovat požadavky dvou uživatel, kteří položili stejný dotaz, různou měrou. DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Přesnost a úplnost V ideálním případě P=R=1 V odpovědi jsou zařazeny právě a pouze všechny relevantní dokumenty V běžném případě Odpověď na první verzi dotazu není ani přesná, ani úplná 1 Optimum Počáteční odpověď 1 DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Přesnost a úplnost Ladění dotazu Postupná modifikace dotazu s cílem zvýšit kvalitu odpovědi Teoreticky je sice možné dosáhnout optima, ale … R 1 Optimum P 1 DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Přesnost a úplnost … vlivem víceznačností jsou v praxi oba koeficienty na sobě nepřímo závislé, tj. P*R konst. < 1 Při snaze zvýšit P se na výstup dostane méně relev. dokumentů. Při snaze zvýšit R se na výstup dostane s více relev. dok. i mnohem více těch nerelevantních. R 1 Optimum P 1 DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Kritérium predikce Při formulaci dotazů je potřebné uhádnout, které termy (slova) byly v dokumentu autorem použity pro vyjádření dané myšlenky Problémy m.j. způsobují Synonyma (autor mohl použít synonymum, které si tazatel při formulaci dotazů ani nemusí neuvědomí) Překrývající se významy slov Opisy jedné situace jinými slovy DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Kritérium predikce Částečným řešením je zařazení tezauru, který obsahuje Hierarchie slov a jejich významů Synonyma slov Asociace mezi slovy Tazatel může tezaurus využít při formulaci svých dotazů DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Kritérium predikce Při ladění dotazů má uživatel tendenci postupovat konzervativně V dotazu zůstávají často ty jeho části, které uživatele napadly na začátku a mění se jen podružné části, které nekvalitní výsledek nemusí nijak zásadně ovlivnit Vhodné je uživateli pomoci s odstraněním nevhodných částí dotazu, které nepopisují relevantní dokumenty a naopak s přidáváním formulací, které relevantní dokumenty popisují DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Kritérium maxima Tazatel obvykle není schopen (nebo ochoten) procházet příliš mnoho dokumentů do té míry, aby se rozhodl, zda jsou pro něj relevantní nebo ne Obvykle 20-50 podle velikosti Potřeba nejen dokumenty rozlišovat na odpovídající/neodpovídající dotazu, ale řadit je na výstupu podle míry předpokládané relevance DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Kritérium maxima V důsledku kritéria maxima se při ladění dotazu uživatel obvykle snaží zvýšit přesnost Malé množství dokumentů v odpovědi, obsahující co největší poměr relevantních dokumentů Některé oblasti použití vyžadují co nejvyšší přesnost i úplnost Právnictví „lepší“ Vr. Rel. „horší“ Vr. Rel. DBI026 -DB Aplikace - MFF UK
Obvyklý postup předzpracování Databáze obvykle používají některý z boolských modelů reprezentace dokumentů Nejlépe odpovídá běžným dotazům Relativně snadno se implementuje Dotazy jsou ve formě boolských formulí, ve kterých operandy tvoří jednotlivá slova Řada různých modifikací DBI026 -DB Aplikace - MFF UK
Obvyklý postup předzpracování Filtrace Lemmatizace Desambiguace Seznam lemmat Tezaurus Stoplist Lemm. text Invertovaný seznam Indexace Invertovaný seznam DBI026 -DB Aplikace - MFF UK
Obvyklý postup předzpracování Filtrace Odstraní formátovací značky a nechá čistý ASCII text Desambiguace Určí význam slova podle kontextu „pět chválu“ … sloveso pět „pět vozidel“ … číslovka pět Lemmatizace Určí základní tvar slova a gramatický tvar v dokumentu Často nahrazen pomocí stemmeru, který hledá kmen slova DBI026 -DB Aplikace - MFF UK
Obvyklý postup předzpracování Indexace Vytvoří pomocné seznamy lemmat a dokumentů a invertovaný soubor dvojice [id_dok,id_lemmatu] setříděné dle id_lemmatu a zbavené duplicit dnes obvykle více informací, např. pětice [id_dok,č_odstavce,č_věty,č_slova,id_lemmatu] setříděné id_lemmatu Dovoluje vyhodnocování tzv. proximitních omezení na vzdálenost slov v dokumentu DBI026 -DB Aplikace - MFF UK
Fulltextové vyhledávání Pro podporu vyhledávání je potřeba nad textovým sloupcem vytvořit index – invertovaný soubor Běžné textové sloupce jsou pro tyto účely krátké a nevyhovující Obvykle se takto indexují sloupce některého z LOB (Large OBject) typů DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Large OBjects (LOB) LOBy Standardní typy pro ukládání objemných dat na serveru definován v SQL-92 Full Až 4GB dat BLOB … standardní binární typ CLOB … znakový typ v univerzální znakové sadě serveru NCLOB … znakový typ v národní znakové sadě serveru V MS SQL Image … binární data do velikosti 2 GB Text … textová data do velikosti 2 GB NText … textová data v národní znakové sadě do vel. 1 GB DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK Large Objects Ve sloupcích tabulky je uložen pouze deskriptor (tzv. LOB lokátor), odkazující na samotně uložená data DBI026 -DB Aplikace - MFF UK
Struktura MS SQL full-text DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK MS SQL fulltext Vytvoření indexu nad textovým sloupcem CREATE FULLTEXT INDEX ON table_name [(column_name [TYPE COLUMN type_column_name] [LANGUAGE language_term] [,...n])] KEY INDEX index_name [ON fulltext_catalog_name] [WITH {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}} ] DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK MS SQL fulltext Potřebné zadat Jméno tabulky, jméno textového sloupce typu char, nchar, varchar, nvarchar, text, ntext Jméno (co nejmenšího) unikátního indexu nad tabulkou v klauzuli KEY INDEX DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK MS SQL fulltext Z dalších možností: Definice jazyka (LANGUAGE) Způsob aktualizace WITH CHANGE_TRACKING MANUAL … vytváření žurnálu změn v datech, jeho promítnutí do indexu se může provést ručně, nebo automaticky schedulerem AUTO … index se bude aktualizovat zároveň s daty OFF … index se nebude aktualizovat vůbec DBI026 -DB Aplikace - MFF UK
DBI026 -DB Aplikace - MFF UK MS SQL fulltext Příklad vytvoření indexu: USE AdventureWorks; GO CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID); CREATE FULLTEXT CATALOG ft AS DEFAULT; CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand; GO DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem Spolu s novými typy indexů databáze implementují nové operátory pro porovnávání dotazu s textem Operátory vrací číslo – očekávanou míru shody obsahu textu s tazatelovými požadavky DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem MS SQL používá boolský operátor – predikát CONTAINS( sloupec, ’dotaz’[, LANGUAGE jazyk ]) DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem Operátory pro dotazování AND, & … ‘mice & cats’ OR, | … ‘mice | cats’ AND NOT, & ! … ‘mice AND NOT cats’ NEAR, ~ … proximitní dotazování ‘mice NEAR cats’ DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem Operátory pro dotazování Fráze v uvozovkách FORMSOF ( INFLECTIONAL , slovo) slovo se hledá ve všech tvarech hide, hidden, … FORMSOF ( THESAURUS , slovo) slovo se rozvine pomocí tezauru pro daný jazyk na seznam slov s podobným významem DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem Operátory pro dotazování Začátek slova následovaný hvězdičkou pro hledání všech slov začínajících prefixem ISABOUT ( slovo WEIGHT (n) [,…]) Vážený term, vhodný pro dotazy s využitím operátoru CONTAINSTABLE DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem CONTAINSTABLE( tabulka,sloupec,dotaz[,jazyk][,top_n] ) Vrací tabulku hodnot shody sloupce tabulky s dotazem. Ohodnocení je v pseudo sloupci RANK DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem SELECT select_list FROM table AS FT_TBL INNER JOIN CONTAINSTABLE(table, column, query) AS KEY_TBL ON FT_TBL.unique_key_column = KEY_TBL.[KEY] DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem SELECT FT_TBL.CategoryName, FT_TBL.Description, KEY_TBL.RANK FROM Categories AS FT_TBL INNER JOIN CONTAINSTABLE(Categories, Description, 'ISABOUT (breads weight (.8), fish weight (.4), beers weight (.2) )' ) AS KEY_TBL ON FT_TBL.CategoryID = KEY_TBL.[KEY] ORDER BY KEY_TBL.RANK DESC DBI026 -DB Aplikace - MFF UK
Dotazování se nad textovým indexem SELECT FT_TBL.Description, FT_TBL.CategoryName , KEY_TBL.RANK FROM Categories AS FT_TBL INNER JOIN CONTAINSTABLE (Categories, Description, '("sweet and savory" NEAR sauces) OR ("sweet and savory" NEAR candies)', 10) AS KEY_TBL ON FT_TBL.CategoryID = KEY_TBL.[KEY] DBI026 -DB Aplikace - MFF UK