|
|
|
Vydáno dne 08. 08. 2005 (3490 přečtení) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| operátor | význam | popis |
|---|---|---|
| NT (A) | NARROWED TERM | užší term k termu A |
| BT (A) | BROADER TERM | širší term k termu A |
| TT (A) | TOP TERM | nejširší term k term A |
| RT (A) | RELATED TERM | příbuzné termy k termu A |
| PT (A) | PREFERRED TERM | preferovaný term k termu A |
| SYN (A) | SYNONYMUM | synonyma k termu A |
Velkým nedostatkem Booleovského modelu je neschopnost seřadit výsledek v pořadí, které by udávalo relevantnost jednotlivých dokumentů vzhledem k položenému dotazu. Přesto situace není tak beznadějná, jak se může zdát. Jestliže dotaz obsahuje logické spojky OR, lze výsledky rozdělit do několika tříd stejné hodnoty (viz dále). Mějme například následující dotaz:
$Q = (A\ or\ B)\ and\ (B\ or\ C)\ and\ D$
Ten převedeme do tzv. disjunktně konjuktivní normální formy:
$ \begin{array}{lrrcrcrcrc} Q =& (& A & and & B & and & C & and & D) & or \\ & (& A & and & B & and & not\ C & and & D) & or \\ & (& A & and & not\ B & and & C & and & D) & or \\ & (& not\ A & and & B & and & C & and & D) & or \\ & (& not\ A & and & B & and & not\ C & and & D) & \end{array}$
Každý řádek nazýváme elementární konjunkce. Všimněte si, že každá konjunkce je disjunkní k libovolné další. Ohodnocení elementární konjunkce je číslo udávající počet termů, které nejsou negovány (nemají před sebou operátor NOT). Postupně tedy dostáváme ohodnocení 4, 3, 3, 3 a 2. Seřazení pak provedeme podle klesající hodnoty ohodnocení. Ačkoliv to není příliš oslňující, jde přeci jenom o rozumný kompromis.
Co ale s dokumenty, které se dostaly na výstup, ale neodpovídají našim představám? Některé DIS umožňují nechat tazatele vybrat z výsledné množiny dokumenty, které považuje za relevantní, a na základě toho upravit dotaz, který je složený z termů odpovídajících označeným dokumentům.
Booleovský model má několik dalších nevýhod. Asi největší z nich je skutečnost, že pro některé dotazy dostaneme naprosto neočekávané dokumenty. Další je ta, že pokud uvedeme dotaz typu A\ and\ B\ and\ C\ and\ D\ and\ E\ and\ F, pak se na výstup nedostanou ty dokumenty, které obsahují pouze termy A, B, C, D a E. To je sice správně, ale v praxi se dost často stává, že i tyto dokumenty mohou být pro uživatele relevantní. Podobně při dotazu typu A\ or\ B\ or\ C\ or\ D\ or\ E\ or\ F jsou dokumenty stejně relevantní, obsahují-li pouze term A nebo všechny uvedené.
Zajímavý pokus provedli pánové Blair a Maron v roce 1985. Na cca 40 000 právnických dokumentech v DIS STAIRS studovali závislost hodnot P a R. Průměrné hodnoty byly pro P rovny 80 %, kdežto pro R pouze 20 %, což je velmi žalostné, zvláště jednalo-li se o právní texty.
Jestliže v předchozím odstavci jsme trošku zabředli do matematiky, zde se jí nabažíme dostatek (pokud nevíte, co to je vektor, doporučuji se podívat na středoškolskou matematiku a až pak pokračovat ve čtení).
Ve vektorovém modelu máme n dokumentů indexovaných pomocí m termů. Každý dokument je reprezentován m-rozměrným vektorem \vec d_i = [w_{i1},\dots,w_{im}] \in <0,1>^{m}. Pokud w_{i,j} = 0, pak term není v dokumentu důležitý (což ještě neznamená, že tam není!), naopak, pokud w_{i,j} = 1, je term pro dokument velmi důležitý. Indexový soubor v tomto modelu je matice D = [w_{1\dots n, 1\dots m}] \in <0,1>^{n\times m}. Dotazem je pak vektor \vec q = [q_{1},\dots,q_{m}] \in <0,1>^{m}. Pokud q_i je roven nule, pak nezáleží na tom, zda se term v dokumentu vyskytuje či nikoliv. Čím více se hodnota q_i blíží jedničce, tím více požaduji, aby term v dokumentu obsažen byl. Ještě než se dostaneme k příkladu, definujme si funkci sim, která vrací podobnost (z anglického similarity) dvou dokumentů. Její základní tvar je: sim (\vec d_i, \vec q) = \sum\limits_{k=1}^m w_{ik}q_k, což je vlastně skalární součin obou vektorů (výraz za rovnítkem si pro další použití označme jako A). A teď ke slíbenému příkladu.
Mějme dvouprvkovou množinu termů obsahující termy „pes“ a „kočka“. Dále mějme dokument d1 osahující text „kočka leze dírou, pes oknem“, d2 obsahující text „Jsi kočka, jsi kočka, jsi kočka, perfektne urobená“, dokument d3 s textem „no a ti římští psy ho sjíždějí o Vánocích“ a konečně dokument d4 s textem „Je to takovej kočkopes.“ Indexová matice by mohla vypadat takto (první sloupec značí kočku, druhý psa): $ D = \pmatrix{ 1 & 1 \cr 0.6 & 0 \cr 0 & 0.8 \cr 0.1 & 0.1 \cr } $ Snížené ohodnocení v druhém až čtvrtém řádku může být způsobeno např. tím, že termy zde nejsou v původním významu (zvíře, savec, domácí mazel), ale přesto uvedené slovo obsahují. Ptejme se tedy na všechny dokumenty, které obsahují alespoň slovo kočka s významem nejméně 0.5 a slovo pes mě nikterak nezajímá. Dotaz tedy bude ve tvaru \vec q = [0.5, 0]. Na výstup se dostanou dokumenty, které jsou s dotazem „dostatečně“ podobné. Slovo „dostatečně“ si může určit tazatel či sám systém a určuje dolní mez podobnosti. Pokud podobnost dokumentů klesne pod toto číslo, nedostane se dokument do výsledné množiny (které to budou v našem příkladě si jistě laskavý čtenář již dopočítá sám v rámci domácího cvičení).
Díky funkci sim odbouráváme jeden z největších problémů booleovského DIS, totiž řazení dokumentů ve výsledku. To je zde prováděno sestupně podle výsledku této funkce.
V uvedeném příkladě jsem trošku podváděl. Ohodnocení dokumentu vektorem je ve skutečnosti ovlivněno i počtem výskytů termu v dokumentu. Pokud se v jednom dokumentu term vyskytuje vícekrát, bude i vektor delší. To se ovšem může špatně projevit na výsledku. Pokud je jeden dokument desetkrát delší než druhý a v prvním je deset výskytů termu oproti druhému, ve kterém je jedno slovo, přesto můžeme říct, že dokumenty jsou vzhledem k danému termu stejně relevantní. Tento problém se řeší dvěma způsoby. První je v úpravě funkce podobnosti. Ta pak může nabývat jednoho z následujících tvarů (samozřejmě lze tyto dále rozšiřovat): $ sim (\vec d_i, \vec q) = \frac{A}{\sum\limits_{k=1}^m w_{i,k}+\sum\limits_{k=1}^m q_k} $ $ sim (\vec d_i, \vec q) = \frac{A}{\sum\limits_{k=1}^m w_{i,k}+\sum\limits_{k=1}^m q_k – 2A} $ $ sim (\vec d_i, \vec q) = \frac{A}{\sqrt{\sum\limits_{k=1}^m (w_{i,k})^2*\sum\limits_{k=1}^m (q_k)^2}} $
Druhým způsobem je normalizace vektorů dokumentů na jednotkovou velikost. Pak jednotlivé vektory nejsou v m-dimenzionální krychli o velikosti 1 (viz obrázek Obrázek 1), ale leží na jednotkové m-dimenzionální sféře (viz obrázek Obrázek 2). Výpočet normalizovaných vektorů je velmi jednoduchý: $ \vec{d_i} = \frac{\vec{d_i}}{|\vec{d_i}|} $
Jak bylo řečeno na začátku, dotazem je vektor, ve kterém tazatel specifikuje důležitost jednotlivých termů. Z již napsaného textu ale plyne, že ve vektorovém modelu nelze zadávat to, zda term v dokumentu může být či nikoliv. Stejně tak nelze provést konjunkci či disjunkci. To by nemělo ve většině případů vadit, protože na výstup se řadí dokumenty od nejvyšší podobnosti. Přesto lze některé termy ještě více znevýhodnit. Dosáhne se toho umožněním zadávat zápornou váhu termů v dotazu následujícím způsobem: \vec q = [q_{1},\dots,q_{m}] \in ← 1,1>^{m}.
Vypořádání se s kritériem predikce je řešeno úpravou jednotlivých vah v dotazu. Tazatel vybere dokumenty, které považuje za relevantní (označme je d_{i_{1}}, d_{i_{2}},\ldots,d_{i_{j}}), a systém vypočte nový dotaz. Výpočet vlastně spočívá v posunutí původního vektoru směrem k těžišti vybraných dokumentů: $ \vec{q} = \alpha\vec{q} + (1-\alpha)\frac{\sum\limits_{k=1}^{j}\vec{d_{i_{k}}}}{j} $ kde \alpha\in<0,1> je parametr. Nově vypočítaný dotaz posune původní o (1-\alpha)násobek vzdálenosti směrem k těžišti tazatelem vybraných dokumentů. Je zřejmé, že pokud je \alpha = 1, pak dostaneme původní dotaz, je-li \alpha = 0, bude nový dotaz přímo v těžišti.
Podobně jako u booleovského modelu, i v tomto je potřeba provést indexaci. S tím souvisí pojem frekvence termu (značíme TF — term frequency), která je určena podílem počtu výskytů termu t_i v dokumentu d_j a celkového počtu termů v dokumentu. Z uvedeného plyne, že TF je z intervalu <0,1>. Protože pro běžné dokumenty jsou hodnoty TF velmi malé, zavádí se tzv. normalizovaná frekvence termu (NTF — normalized term frequency). Zápis vzorce pro výpočet NTF je poměrně odpudivý, proto jej zde nebudu uvádět a zájemce odkáži na adresu, která zde byla zmíněna posledně.
Tazatel ne vždy odhadne ten nejsprávnější term (viz kritérium predikce) a přesto je možné na výstupu uvést relativní dokumenty. Kromě lemmatizátoru a tezauru, o kterých již byla řeč, je ve vektorových modelech zaváděna matice podobnosti termů TT (Term-Term): $ TT = \pmatrix{ tt_{1,1} & \dots & tt_{1,m} \cr \vdots & \ddots & \vdots \cr tt_{m,1} & \dots & tt_{m,m} \cr } \in <0,1>^{m\times m} $ Prvky tt určují, nakolik si jsou termy t_i a t_j podobné. Je vidět, že matice je symetrická a proto stačí ukládat pouze hodnoty nad či pod diagonálou (hodnoty na diagonále jsou vždy rovny jedné). Před vyhodnocováním dotazu se pak tento jednoduše upraví: q = qTT^T. Tímto výpočtem se do dotazu dostanou i ty termy, které sice uživatel nezadal, ale na základě podobnosti termů jsou i tyto relevantní.
Častým jevem, známým hlavně na webu, ale i v akademických textech, jsou odkazy a citace na jiné dokumenty. V některých případech je vhodné, aby spolu s odkazem na nalezený dokument na výstup byly zařazeny i ty, na které se nalezený odkazuje. Nejprve si ale uveďme několik definic.
Nyní lze vytvořit jednotlivé incidenční matice velikosti n\times n podle následujících pravidel (BP = bibliografické párování, KP = kocitační párování a SP = spojení):
Uvedené matice lze pak s výhodou používat při úpravách výpočtu podobnosti dotazu a jednotlivých dokumentů.
Nevýhody použití booleovského modelu může odstranit zavedení fuzzy logiky (viz zde). Každému dokumentu je pak podobně jako ve vektorovém modelu přiřazen m-rozměrný vektor, kde každá složka určuje důležitost termu v daném dokumentu. Dotaz je pak tvořen stejně jako v klasickém booleovském modelu, pouze je možné ke každému termu dodat jeho váhu, např.: $Microsoft\ and\ (Word\ (0.5)\ or\ Excel\ (0.3))$
Při vyhodnocování dotazu se rozlišuje konjunkce a disjunkce. Při použití operátoru OR (disjunkce) se bere v potaz vzdálenost dokumentu od nulového vektoru (tedy od počátku) a v případě operátoru AND (konjunkce) se bere v potaz vzdálenost od jednotkového vektoru.
Tento model tedy spojuje jisté výhody a odbourává některé nevýhody obou uvedených modelů.
Z uvedeného textu vyplývá, že vektorové modely jsou z pohledu výsledku přínosnější než booleovské. To, že booleovské jsou přesto stále nejpoužívanější, ovlivňuje skutečnost, že jejich implementace je relativně velmi jednoduchá a přímočará.
Je jasné, že existují i další modely dokumentrografických informačních systémů (jmenujme alespoň induktivní model). Za smínku také stojí signaturové informační systémy, které slouží jako předstupeň pro oba dnes představené v případě velkého množství dokumentů.
Tématem DIS bychom se mohli zabývat ještě dlouho, ale myslím si, že pro základní představu bylo učiněno dosti. Jen doufám, že dnešním povídáním jsem neznechutil antimatematicky zaměřené čtenáře. Opravdu to nebylo mým záměrem.
Tento článek byl napsán pro časopis Softwarové noviny 8/2002.
Upozornění: tento text neprošel redakční úpravou, takže je tak, jak byl napsán včetně případných chyb. Žádná část tohoto článku nesmí být použita bez předchozího souhlasu autora.
Seznam mých dalších článků je v tomto přehledu.
| Čtenář |
| Vyhledávání |
|
|
| Kalendář |
| |||||||||||||||||||||||||||||||||||||||||||||||||
| Reklama |
|
|