30. 8. 2011

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

Tímto úvodním textem bych rád započal sérii článků, které se budou zabývat sémantickou analýzou textů, a to nejen v kontextu fulltextového vyhledávání.

Sémantickou analýzou zde rozumím identifikaci témat (topiců) textových dokumentů,  formální reprezentaci těchto témat a určení tématické podobnosti dvou nebo více dokumentů. Tématem můžeme rozumět např. počasí, sport, cestování apod., často se ale stává, že tématu není možné dát takovouto lidsky srozumitelnou nálepku. Je zřejmé, že za krátký dokument lze považovat i dotaz na fulltextový vyhledávač, proto je možné dále popsané metody použít i pro tematizaci dotazů nebo k určení tématické podobnosti dotazu a dokumentu, a to i v případě, že spolu nesdílí žádná společná slova. Možných aplikací je však celá řada. Díky tematizaci je možné odhalit podobné dokumenty, klasifikovat dokumenty do předem daných tematických kategorií, desambiguovat významy slov apod.

Jedním z nejčastěji používaných modelů pro reprezentaci dokumentů v oblasti information retrieval je díky své jednoduchosti vector space model. V tomto modelu jsou dokumenty nebo dotazy reprezentovány jako body v n-rozměrném prostoru, kde  každá dimenze odpovídá nějakému slovu z kolekce dokumentů. Přítomnost slova v konkrétním dokumentu lze potom reprezentovat např. binárně, tedy „1“ v případě, že se slovo v dokumentu nachází, „0“ jinak. Pro názornost si uveďme jednoduchý příklad, převzatý z disertační práce Genevieve Gorrell: Generalized Hebbian Algorithm for Dimensionality Reduction in Natural Language Processing.

Mějme kolekci třech dokumentů (pro zjednodušení je v každém dokumentu právě jedna věta):

  1. the man walked the dog
  2. the man took the dog to the park
  3. the dog went to the park

Jestliže vybereme všechna  použitá slova a abecedně je seřadíme, dostaneme následující vektor slov:

[dog, man, park, the, to, took, walked, went]

Pro dané seřazení slov budou potom vektory reprezentující dokumenty vypadat následovně:

  1. [1, 1, 0, 1, 0, 0, 1, 0]
  2. [1, 1, 1, 1, 1, 1, 0, 0]
  3. [1, 0, 1, 1, 1, 0, 0, 1]

Binární reprezentace je jednoduchá a v mnoha případech dostačující. Snadno lze ale navrhnout jiné způsoby reprezentace, které ponesou více informace. Jedním příkladem je TF (term frequency), tedy číslo, vyjadřující počet opakování slova v daném dokumentu. Vektory by potom vypadaly takto:

  1. [1, 1, 0, 2, 0, 0, 1, 0]
  2. [1, 1, 1, 3, 1, 1, 0, 0]
  3. [1, 0, 1, 2, 1, 0, 0, 1]

Tato reprezentace má nevýhodu v tom, že nastavuje vyšší váhu i obecně častým slovům, kterými jsou  např. předložky, spojky, sponová a modální slovesa apod.  Intuitivně bychom ale chtěli zvýhodnit pouze slova, která se v daném dokumentu vyskytují často, ale zároveň se nevyskytují často v ostatních dokumentech. Matematickým modelem této myšlenky je TF-IDF (term frequency – inverse document frequency). Jedná se o součin již známé TF s IDF, kde IDF je definována jako logaritmus podílu počtu všech dokumentů ku počtu dokumentů, které obsahují dané slovo. Naše vektory vážené pomocí TF-IDF budou vypadat následovně:

  1. [0, 0.18,      0, 0,      0,      0, 0.48,      0]
  2. [0, 0.18, 0.18, 0, 0.18, 0.48,      0,      0]
  3. [0,      0, 0.18, 0, 0.18,      0,      0, 0.48]

Z vektorů je vidět, že slova, která se vyskytovala ve všech dokumentech mají váhu nulovou a naopak slova, která byla unikátní a tedy nesla více informace mají váhu nejvyšší.

V tomto úvodním dílu seriálu jsme si vysvětlili, co rozumíme sémantickou analýzou textů a popsali jeden z nejjednodušších způsobů reprezentace dokumentu ve vektorovém prostoru. Pozorného čtenáře jistě napadne, že takováto reprezentace má celou řadu nevýhod – nezáleží na pořadí slov v dokumentu, u reálných dokumentů budou vektory velice dlouhé a budou obsahovat téměř samé nuly apod. V příštím dílu poukážeme na mnohem podstatnější problémy, ukážeme jak porovnávat dva dokumenty reprezentované ve vektorovém prostoru a připravíme si půdu pro vysvětlení složitějších přístupů.