Zoeken en vinden: ranking & clustering TU Delft Library Digitale Productontwikkeling Egbert Gramsbergen
Onderwerpen Ranking: bij query q wordt voor ieder doc d een score s ∈ [0,1] uitgerekend. d’s worden gesorteerd op afnemende s. Hoe wordt s berekend? Clustering: gegeven een verzameling docs, maak deelverzamelingen waarbinnen docs onderling minimaal verschillen. Waarom? Hoe?
Ranking – waarom? Relevantie is geen binair begrip. Er bestaat meer of minder relevant. Verschillende gebruikers beoordelen verschillende docs als relevant voor dezelfde vraag. Wat zou Google zijn zonder ranking?
Ranking – hoe? Index = zak van Sinterklaas, gevuld met termen doc d, query q = zakje met sommige van deze termen => representatie als vectoren Assen: indextermen d, q: vectoren Verschil zegt iets over relevantie Maar: verfijning nodig
Verfijningen Term frequency weging: niet lineair maar zwakker: w t = 0 als f=0, w t = 1+log(f) als f>0 (f = #keren term in doc) Overall doc(term) frequency weging: w d = log(N/N t ) (N = #docs, N t = #docs met term t) Normalisatie van vectoren: lengte = 1. DAN: kleinere afstand = grotere similarity Uit kansberekening: Als d relevant dan kans p1 op term t Als d niet relevant dan kans p2 (<p1) op term t Wat is dan de kans P dat d relevant is als termen t 1..t n in d voorkomen en t n+1 …t N niet? Antwoord: monotoon toenemende functie van Σ i (w d,i ) (i loopt over alle termen die voorkomen in d) Zomaar, blijkt aardig te werken
Docs in (aap,noot,mies) space voorbeeld 3 termen in index: aap,noot,mies Vectoren genormaliseerd: eindpunten liggen op 1/8 boloppervlak Normalisatie: nm en nnmm vallen samen aap: relatief zeldzaam, daarom bijv. amn dicht bij aap-as In het echt: niet 3 dimensies maar ~ 10 5 !
Similarity, relevantie en afstand Vectoren genormaliseerd: sim ∈ [0,1], sim = 1 als vectoren samenvallen => synoniem voor relevantie Soms is het handiger om de denken in termen van (Euclidische) afstand:
Tunen, tunen, tweaken… Zones/velden: search “kameel” => [1.0]title:kameel [0.8]subject:kameel [0.3]abstract:kameel Woordnabijheid in doc: search “kameel bulten” => de kameel had twee bulten: hoge score …bulten wegens de vele muggen… blabla …daarna per kameel…: lage score bijv. w ~ 1/(s+1) waarin s = #tussenliggende termen. Statische factoren (onafhankelijk van q), bijv: Documenttype/(sub)collectie (bijv. proefschrift > scriptie) Nieuwheid (ook afhankelijk van andere factoren: voor artikel belangrijker dan voor boek, voor ict belangrijker dan voor geologie; Google: “deserves freshness” parameter) Populariteit (ranking/rating door gebruikers, views/downloads, inkomende links) Google page rank Start: ieder doc score 1 Dan: ieder doc verdeelt zijn score gelijkelijk over zijn uitgaande links … herhaal tot in den eeuwigheid. Correctie voor “dead ends”: teleportatie naar random doc (ook voor niet-dead ends: teleportatie- coefficient typisch ca. 0.1) Oplossing: NxN overgangsmatrix M opstellen (met -1 op diagonaal), Σ i M ij w j =0 => gewicht doc i ~ (i,i)subdeterminant van M.
Clustering Navigatie door de gehele collectie Navigatie door zoekresultaten Verhoging recall (meer zoekresultaten) Verbetering performance in vector space retrieval Waarom? “Grouping a set of objects into classes of similar objects” Een vorm van “unsupervised learning” = leren van ruwe data
Clustering: hoe? Aanname: similar = dicht bij elkaar in vectorruimte Algoritmes: Partitional - Begin met random (beginpunten van) clusters - Iteratief verbeteren Hiërarchische algoritmes Bottom-up Top-down
Een partitioning algoritme: K-Means 1.Begin met k random condensatiekernen 2.ieder doc wordt ingedeeld bij dichtstbijzijnde condensatiekern 3.bereken van de zo gevormde clusters de centroïden (zwaartepunten): 4.Gebruik deze als nieuwe condenstatiekernen en ga terug naar 2 5.Ga door tot de oplossing stabiel is
K Means voorbeeld (K=2) Pick seeds Assign clusters Compute centroids x x Reassign clusters x x x x Compute centroids Reassign clusters Converged!
K Means vervolg Issues: k ligt vast Je kunt terechtkomen in een lokaal i.p.v. globaal optimum, afhankelijk van de beginpunten. Oplossingen: Neem 1 random beginpunt en dan steeds als volgende het doc dat het minst lijkt op enig bestaand beginpunt, totdat je er k hebt. Probeer verschillende sets van beginpunten uit Begin met het resultaat van een andere methode
Hierarchical Agglomerative Clustering (HAC) Begin met ieder doc in apart cluster Combineer de 2 meest verwante clusters Herhaal tot er 1 cluster over is d1 d2 d3 d4 d5 d1,d2 d4,d5 d3 d3,d4,d5
Buckshot Algorithm gebruik HAC als beginpunt voor K Means Cluster een random sample van grootte N met HAC Afkappen bij k clusters Neem dit als beginpunt voor K-Means clustering. Efficiënt en geen problemen met slecht gekozen beginpunten Afkappen bij k clusters
Cluster labels Lastig punt Vuistregel: 5-10 meest frequente termen in de centroïde Uitzondering: te algemene termen Geen stopwoorden, woordstam Alleen zelfstandige naamwoorden (combinaties) Clustering van gehele collectie: vaak handmatig redactiewerk ] Taalkennis!
bronnen html html retrieval-book.html retrieval-book.html