Vektorrom-modellen

Vektorrom-modellen også kjent som Term vektor-modellen er en algebraisk modell brukt for å representere tekstdokumenter (samt alle andre objekter) som vektorer bestående av identifikatorer, som for eksempel ved å bruke term vekt som parameterverdi. Modellen blir brukt blant annet innen informasjonsgjenfinning, indeksering, informasjonsfiltrering og relevansrangering.


== Definisjoner ==
En term kan representere både ett nøkkelord og en lengre frase. 
Dokumenter og spørringer kan bli representert som vektorer, ved å bruke en tallverdi som representerer termen som parameter.
Eksempel:

  
    
      
        
          d
          
            j
          
        
        =
        (
        
          w
          
            1
            ,
            j
          
        
        ,
        
          w
          
            2
            ,
            j
          
        
        ,
        …
        ,
        
          w
          
            t
            ,
            j
          
        
        )
      
    
    {\displaystyle d_{j}=(w_{1,j},w_{2,j},\dotsc ,w_{t,j})}
  

  
    
      
        q
        =
        (
        
          w
          
            1
            ,
            q
          
        
        ,
        
          w
          
            2
            ,
            q
          
        
        ,
        …
        ,
        
          w
          
            t
            ,
            q
          
        
        )
      
    
    {\displaystyle q=(w_{1,q},w_{2,q},\dotsc ,w_{t,q})}
  Hver term representerer en dimensjon innen vektorrommet, med andre ord har vektorrommet like mange dimensjoner som termer. Dette betyr at vektorrommet kan ha uendelige dimensjoner. Hvis termen finnes innen dokumentet, kan verdien bli beregnet og er dermed høyere enn null. Det finnes flere metoder for utregning av termvekt, hvorav en av de beste er vekting etter tf-idf (se eksempel).
Plasseringene i vektorrommet kan så bli sammenlignet med spørringen gjennom en rekke metoder (basert på bruksområde).


== Applikasjoner ==

Kalkulering av relevans kan bli gjort på flere vis, hvor metoden brukt blir basert på ønsket utfall. En måte å regne gjøre dette, er å sammenligne deviasjonen av vinklene mellom hvert dokument og spørringen representert som en vektor. I praksis er det enklere å regne ut cosinuslikheten mellom de to vektorene, i stedet for mellom vinklene:
Eksempel:

  
    
      
        cos
        ⁡
        
          θ
        
        =
        
          
            
              
                
                  d
                  
                    2
                  
                
              
              ⋅
              
                q
              
            
            
              
                ‖
                
                  
                    d
                    
                      2
                    
                  
                
                ‖
              
              
                ‖
                
                  q
                
                ‖
              
            
          
        
      
    
    {\displaystyle \cos {\theta }={\frac {\mathbf {d_{2}} \cdot \mathbf {q} }{\left\|\mathbf {d_{2}} \right\|\left\|\mathbf {q} \right\|}}}
  Hvor 
  
    
      
        
          
            d
            
              2
            
          
        
        ⋅
        
          q
        
      
    
    {\displaystyle \mathbf {d_{2}} \cdot \mathbf {q} }
   representerer skjæringspunktet (altså prikkproduktet) mellom dokumentet(d2 i bildet til høyre) og spørringens (q i bildet) vektorer, 
  
    
      
        
          ‖
          
            
              d
              
                2
              
            
          
          ‖
        
      
    
    {\displaystyle \left\|\mathbf {d_{2}} \right\|}
   er normen av d2, og 
  
    
      
        
          ‖
          
            q
          
          ‖
        
      
    
    {\displaystyle \left\|\mathbf {q} \right\|}
   er normen av q. Normen til en vektor er kalkulert med:

  
    
      
        
          ‖
          
            q
          
          ‖
        
        =
        
          
            
              ∑
              
                i
                =
                1
              
              
                n
              
            
            
              q
              
                i
              
              
                2
              
            
          
        
      
    
    {\displaystyle \left\|\mathbf {q} \right\|={\sqrt {\sum _{i=1}^{n}q_{i}^{2}}}}
  Siden ingen vektorer i denne modellen kan være negative, vil en cosinusverdi av null tilsi at vektorene til dokumentet og spørringen er ortogonale i forhold til hverandre og dermed helt mangler likhet (spørreordene fins altså ikke i dokumentet).


== Eksempel: tf-idf vekting ==
I den originale vektorrom-modellen foreslått av Salton, Wong and Yang  er termvekten i dokumentene produkter av lokale og globale parametere. I modellen kjent som term frequency-inverse document frequency er vekten brukt i vektorene i dokumentet d definert som 
  
    
      
        
          
            v
          
          
            d
          
        
        =
        [
        
          w
          
            1
            ,
            d
          
        
        ,
        
          w
          
            2
            ,
            d
          
        
        ,
        …
        ,
        
          w
          
            N
            ,
            d
          
        
        
          ]
          
            T
          
        
      
    
    {\displaystyle \mathbf {v} _{d}=[w_{1,d},w_{2,d},\ldots ,w_{N,d}]^{T}}
  , hvor:

  
    
      
        
          w
          
            t
            ,
            d
          
        
        =
        
          
            t
            f
          
          
            t
            ,
            d
          
        
        ⋅
        log
        ⁡
        
          
            
              
                |
              
              D
              
                |
              
            
            
              
                |
              
              {
              
                d
                ′
              
              ∈
              D
              
              
                |
              
              
              t
              ∈
              
                d
                ′
              
              }
              
                |
              
            
          
        
      
    
    {\displaystyle w_{t,d}=\mathrm {tf} _{t,d}\cdot \log {\frac {|D|}{|\{d'\in D\,|\,t\in d'\}|}}}
  og

  
    
      
        
          
            t
            f
          
          
            t
            ,
            d
          
        
      
    
    {\displaystyle \mathrm {tf} _{t,d}}
   er term frekvensen av termen t i dokument d (ett lokalt parameter)

  
    
      
        log
        ⁡
        
          
            
              
                |
              
              D
              
                |
              
            
            
              
                |
              
              {
              
                d
                ′
              
              ∈
              D
              
              
                |
              
              
              t
              ∈
              
                d
                ′
              
              }
              
                |
              
            
          
        
      
    
    {\displaystyle \log {\frac {|D|}{|\{d'\in D\,|\,t\in d'\}|}}}
   er den inverse dokument frekvensen (ett globalt parameter), hvor:
  
    
      
        
          |
        
        D
        
          |
        
      
    
    {\displaystyle |D|}
   er det totale nummeret av dokumenter i ett sett og 
  
    
      
        
          |
        
        {
        
          d
          ′
        
        ∈
        D
        
        
          |
        
        
        t
        ∈
        
          d
          ′
        
        }
        
          |
        
      
    
    {\displaystyle |\{d'\in D\,|\,t\in d'\}|}
   er antallet dokumenter som inneholder termen t.
Cosinuslikheten mellom dokument dj og spørring q kan dermed bli regnet ut ved:

  
    
      
        
          s
          i
          m
        
        (
        
          d
          
            j
          
        
        ,
        q
        )
        =
        
          
            
              
                
                  d
                  
                    j
                  
                
              
              ⋅
              
                q
              
            
            
              
                ‖
                
                  
                    d
                    
                      j
                    
                  
                
                ‖
              
              
                ‖
                
                  q
                
                ‖
              
            
          
        
        =
        
          
            
              
                ∑
                
                  i
                  =
                  1
                
                
                  N
                
              
              
                w
                
                  i
                  ,
                  j
                
              
              
                w
                
                  i
                  ,
                  q
                
              
            
            
              
                
                  
                    ∑
                    
                      i
                      =
                      1
                    
                    
                      N
                    
                  
                  
                    w
                    
                      i
                      ,
                      j
                    
                    
                      2
                    
                  
                
              
              
                
                  
                    ∑
                    
                      i
                      =
                      1
                    
                    
                      N
                    
                  
                  
                    w
                    
                      i
                      ,
                      q
                    
                    
                      2
                    
                  
                
              
            
          
        
      
    
    {\displaystyle \mathrm {sim} (d_{j},q)={\frac {\mathbf {d_{j}} \cdot \mathbf {q} }{\left\|\mathbf {d_{j}} \right\|\left\|\mathbf {q} \right\|}}={\frac {\sum _{i=1}^{N}w_{i,j}w_{i,q}}{{\sqrt {\sum _{i=1}^{N}w_{i,j}^{2}}}{\sqrt {\sum _{i=1}^{N}w_{i,q}^{2}}}}}}
  


== Fordeler ==
Vektorrom-modellen har disse fordelene over Boolean Modellen:

Det er en enkel modell basert på lineær algebra.
Termvekten er ikke binær.
Tillater beregning av en kontinuerlig grad av likhet mellom spørringer og dokumenter.
Tillater rangering av dokumenter basert på deres antatte relevans.
Tillater delvise likheter.


== Ulemper ==
Lange dokumenter blir dårlig representert på grunn av at de har dårlige likhetsverdier (lave prikkprodukt og høy dimensionalitet).
Spørretermer må være identiske til de i dokumentene.
Dokumenter med lik kontekst, men forskjellig vokabular, blir ikke assosiert, noe som fører til falske negativer.
Rekkefølgen termene følger i dokumentet blir ikke inkludert.
Antar teoretisk at termer er statistisk uavhengig.
Vekting skjer intuitivt, men ikke formelt.Mange av disse ulempene kan bli unngått ved å legge til flere metoder, som for eksempel Singulær verdidekomposisjon eller bruk av en tesaurus.


=== Gratis open source programmvare ===
Apache Lucene. Apache Lucene er et høyytelses-, fullfunksjons- tekstsøkemotorbibliotek skrevet i Java.
SemanticVectors. Semantiske vektorindekser, skapt ved å påføre en tilfeldig projeksjonsalgoritme til termin-dokumentmatriser opprettet ved bruk av Apache Lucene.
Gensim er et Python + NumPy rammeverk for vektorrom-modellering. Den inneholder inkrementelle (minneeffektive) algoritmer for blant annet TF-IDF, Latent semantisk indeksering og Latent Dirichlet Allocation.
Weka. Weka er en populær data mining-pakke for Java som inkluderer WordVectors og Bag of Words-modeller.
Compressed vector space in C++ av Antonio Gulli
Text to Matrix Generator (TMG) Arkivert 10. juli 2020 hos Wayback Machine. MATLAB verktøykasse som kan brukes til ulike oppgaver i tekst mining, spesifikt 1) indeksering, 2) gjenfinning, 3) dimensionalitetsreduksjon, 4) clustering og 5) klassifisering. Mesteparten av TMG er skrevet i MATLAB og deler i Perl. Den inneholder implementeringer av LSI, gruppert LSI, NMF, samt andre metoder.
SenseClusters, En open source pakke som støtter kontekst og ord-clustering ved hjelp av latent semantisk analyse og ord co-forekomstmatriser.
S-Space Package, en samling av algoritmer for å utforske og arbeide med statistisk semantikk.
Vector Space Model Software Workbench Samling av 50 kildekodeprogrammer for utdanning.


== Videre lesning ==
G. Salton, A. Wong, and C. S. Yang (1975), "A Vector Space Model for Automatic Indexing," Communications of the ACM, vol. 18, nr. 11, pages 613–620. (Artikkelen hvor vektorrom modellen ble presentert (Engelsk))
David Dubin (2004), The Most Influential Paper Gerard Salton Never Wrote (Forklarer historien til vektorrom modellen og dens ikke-eksisterende ofte sitert publikasjon (Engelsk))
Beskrivelse av vektorrom modellen (Engelsk)
Beskrivelse av den klassiske vektorrom modellen av Dr. E. Garcia (Engelsk)
Forholdet mellom vektorrom-søk og «k-nærmeste nabo»-søk (Engelsk)


== Se også ==
K-nærmeste nabo


== Referanser ==