Teorie množin + Boolská algebra (AND, OR a NOT)
Pro vyhledávání je lepší pro každý term mít vektor documentů, ve kterých se nachází. Tedy term-by-document matrix.
- můj dotaz: Brutus AND Caesar AND NOT Calpurnia se převede do “binárky” a nad touto binárkou se provedou příslušné operace a pak, kde mi vyjdou jedničky, takové documenty chci mít ve výsledku
Pro hodně termů a hodně documentů je taková matice hooodně řídká ⇒ invertovaný index, což je kompaktní reprezentace řídké matice.
- každý vektor převedu na invertovaný seznam, který je seřazený podle IDs documentů a vektor termů obsahuje jen ty documenty, ve který se nachází
- takový list se pak procesuje “merge sort” stylem
- je to efektivní způsob implementace, pokud
- velmi časté termy jsou v preprocessingu vyfiltrované - vznikaly by moc dlouhé seznamy
- dotaz nemá moc klíčových slov (cca 2-5 max) - faktor multiplikace
- seznamy musí být seřazené
- collection je spíše statická - vložení nového documentu by znamenalo přidat jeho ID do velikého množství všech invertovaných listů
AND = průnik, OR = sjednocení, NOT = doplněk
Pros
- velmi jednoduchý model
- efektivní implementace
- dobré pro “profesionální vyhledávače” → třeba právníky - vědí, na co se mají ptát
Cons
- uživatel musí přesně vědět, co má hledat, což většinou neví
- kvůli ANDům je to moc specifické, kvůli ORům zase moc obecné
- výsledek se mi nevrací nijak seřazený, všechny documenty jsou stejně relevantní
Rozšířený Boolovský model
-
kvůli vyřešení mínusu klasického modelu - neřazení výsledků
-
místo 0 - term není v documentu, 1 - term je v documentu tam dáváme jednotlivé váhy
- váhy jsou normované (tj. aby váha slova z velké knížky (kde se hodně opakuje) byla stejná jako z krátkého článku - kde se také opakuje)
-
díky rozšířenému modelu můžeme vyhledávat plně relevatní i částečně relevantní documenty
-
trochu kombinace s Vektorový vyhledávací model
-
každý document je vlastně vektor (dimenze m; m je velikost vocabulary)
- využívá se vážená euklidovská vzdálenost
-
výsledek je celá collection dokumentů s klesající relevantností (uživatel může nastavit, kolik relevantních výsledků chce vidět)
Pros
- stále jednoduchý pro uživatele
- uživatel může specifikovat váhu různých termů, na které se ptá
- tedy výsledek už není založen jenom na tom, zda-li se term v daném dokumentu nachází, ale i na jeho relevantnosti vůči celému documentu
- mnohem větší kvalita vrácených informací (co se týče relevantnosti)
Cons
- výpočetně náročné + starání se o seřazené výsledky