2012-03-06 4 views
6

Ostatnio pracuję nad ukrytą analizą semantyczną. Zaimplementowałem go w Javie, korzystając z pakietu Jama.W jaki sposób decydujemy o liczbie wymiarów dla analizy semantycznej ukrytej?

Oto kod:

Matrix vtranspose ; 
    a = new Matrix(termdoc); 
    termdoc = a.getArray(); 
    a = a.transpose() ; 
    SingularValueDecomposition sv =new SingularValueDecomposition(a) ; 
    u = sv.getU(); 
    v = sv.getV(); 
    s = sv.getS(); 
    vtranspose = v.transpose() ; // we obtain this as a result of svd 

    uarray = u.getArray(); 
    sarray = s.getArray(); 
    varray = vtranspose.getArray(); 
    if(semantics.maketerms.nodoc>50) 
    { 

     sarray_mod = new double[50][50]; 
     uarray_mod = new double[uarray.length][50]; 
     varray_mod = new double[50][varray.length]; 
     move(sarray,50,50,sarray_mod); 
     move(uarray,uarray.length,50,uarray_mod); 
     move(varray,50,varray.length,varray_mod); 
     e = new Matrix(uarray_mod); 
     f = new Matrix(sarray_mod); 
     g = new Matrix(varray_mod); 
     Matrix temp =e.times(f); 
     result = temp.times(g); 

    } 
    else 
    { 
     Matrix temp = u.times(s); 
     result = temp.times(vtranspose); 
    } 
    result = result.transpose(); 
    results = result.getArray() ; 

    return results ; 

Ale jak określić liczbę wymiarów? Czy istnieje metoda określania liczby wymiarów, do których system powinien zostać zredukowany w celu uzyskania najlepszych wyników? Jakie inne parametry rozważamy dla skutecznego działania LSA?

Odpowiedz

12

dotyczące wyboru liczby Wymiary:

1) http://en.wikipedia.org/wiki/Latent_semantic_indexing:

Kolejnym wyzwaniem LSI była rzekomą trudność w Określenie optymalnej liczby wymiarów używać do wykonywania SVD. Z reguły mniej wymiarów pozwala na szersze porównania koncepcji zawartych w zbiorze tekstu, a wyższa liczba wymiarów umożliwia bardziej szczegółowe (lub bardziej odpowiednie) porównania pojęć. Rzeczywista liczba użytych wymiarów może być ograniczona liczbą dokumentów w kolekcji. Badania przeprowadzone w ramach projektu wykazały, że około 300 wymiarów zwykle zapewnia najlepsze wyniki w przypadku zbiorów dokumentów o umiarkowanej wielkości (setki tysięcy dokumentów) i może 400 wymiarów w przypadku większych dokumentów (miliony dokumentów). Jednak ostatnie badania wskazują, że , że wymiary 50-1000 są odpowiednie w zależności od rozmiaru i natury zbioru dokumentów.

Sprawdzanie wielkości wariancji w danych po obliczeniu SVD można wykorzystać do określenia optymalnej liczby wymiarów do zatrzymania. Wariancję zawartą w danych można wyświetlić, wykreślając wartości pojedyncze (S) na wykresie piarkowym. Niektórzy praktykujący LSI wybierają wymiarowość związaną z kolanem krzywej jako punktem odcięcia dla liczby wymiarów do zachowania. Inni twierdzą, że pewna część wariancji musi zostać zachowana, a ilość wariancji w danych powinna dyktować zachowanie odpowiedniej wymiarowości. Siedemdziesiąt procent jest często wymieniane jako wariancja w danych , które powinny być użyte do wyboru optymalnej wymiarowości dla przeliczającej SVD.



2) http://www.puffinwarellc.com/index.php/news-and-articles/articles/33-latent-semantic-analysis-tutorial.html?showall=1:

Sztuką w użyciu SVD jest zastanawianie się, jak wiele wymiarów lub "koncepcje" do wykorzystania podczas zbliżania matrycy. Za mało wymiarów i ważne wzory są pomijane, zbyt wiele i hałas spowodowany przez losowe wybory słów cofną się ponownie. Algorytm SVD jest trochę zaangażowany, ale na szczęście Python ma funkcję biblioteczną , która czyni ją łatwą w użyciu. Dodając poniższą metodę do naszej klasy LSA, możemy obliczyć naszą macierz na 3 inne macierze .Macierz U podaje współrzędne każdego słowa na naszej "koncepcji" przestrzeni , macierz Vt podaje współrzędne każdego dokumentu w naszej przestrzeni "koncepcji", a matryca S o wartościach pojedynczych daje nam wskazówkę co do ile wymiarów lub "pojęć" potrzebujemy, aby zawrzeć.

def calc(self): self.U, self.S, self.Vt = svd(self.A)

W celu wybrać odpowiednią liczbę wymiarów w użyciu, możemy wykonać histogram kwadratu wartości osobliwych. Wykres ten ilustruje znaczenie każdej pojedynczej wartości, która przyczynia się do przybliżenia naszej matrycy. Oto histogram w naszym przykładzie.

enter image description here

przypadku większych zbiorów dokumentów liczby wymiarów stosuje się w zakresie od 100 do 500. W naszym małym przykładzie, ponieważ chcemy wykreślić , użyjemy 3 wymiarów, wyrzucimy pierwszy wymiar, a wykres drugi i trzeci wymiar.

Powód, dla którego wyrzucamy pierwszy wymiar jest interesujący. W przypadku dokumentów pierwszy wymiar jest powiązany z długością dokumentu . W przypadku słów koreluje to z liczbą razy, kiedy słowo zostało użyte we wszystkich dokumentach. Gdybyśmy wyśrodkowali naszą macierz, przez odjęcie od kolumny średniej wartości kolumny z każdej kolumny, wówczas użylibyśmy pierwszego wymiaru. Analogicznie, weź pod uwagę wyniki w golfa. Nie chcemy chcieć znać rzeczywisty wynik, chcemy poznać wynik po odjęcie go od par. To mówi nam, czy gracz popełnił birdie, wózek itp



3) Landauer, TK, Foltz, PW, Laham, D., (1998), „Wprowadzenie do analizy utajone Semantic ", Discourse Processes, 25, 259-284:

enter image description here

Powiązane problemy