Model przestrzeni wektorowej cosinus tf-idf do wyszukiwania podobnych dokumentów


10

Posiadaj korpus ponad miliona dokumentów

Dla danego dokumentu chcesz znaleźć podobne dokumenty przy użyciu cosinus jak w modelu przestrzeni wektorowej

d1d2/(||d1||||d2||)

Wszystkie tf zostały znormalizowane przy użyciu zwiększonej częstotliwości, aby zapobiec tendencyjności do dłuższych dokumentów, jak w tym tf-idf :

tf(t,d)=0.5+0.5f(t,d)max{f(t,d):td}

Wstępnie obliczone wszystkie Miej wstępnie obliczone wartości mianownika. Więc dla danego musisz zdobyć ponad 1 milion Mieć próg 0,6 cosinusa dla podobieństwa d 1 d 2||d||

d1d2

Widzę to dla danego istnieje dość wąski zakres | | d 2 | | dla cosinusa 0,6 Na przykład w jednym poszukiwaniu podobnego dla cosinusa 0,6 i a | | d 1 | | z 7,7631 następnie | | d 2 | | zakres od 7,0867 do 8,8339 Gdzie poza progiem cosinus 0,6 | | d 2 | | Zakres od do 0,7223 do 89,3395||d1||||d2||
||d1||||d2||
||d2||
Było to przy standardowej normalizacji dokumentów TF Patrzy się
na DUŻO które nie mają szans na dopasowanie cosinus 0.6 ||d2||

Na koniec pytanie:
Dla dawania i cosinus> = 0,6, w jaki sposób można określić zakres | | d 2 | | które mają szansę? Które | | d 2 | | czy mogę bezpiecznie wyeliminować? ||d1||||d2||
||d2||

Wiem też liczbę terminów w i d 2 jeśli jest określenie zakresu count.d1d2

Poprzez eksperymenty
i | | d 2 | | < | | d 1 | | / .8 wydaje się bezpieczny, ale mam nadzieję, że istnieje zasięg, który okazał się bezpieczny ||re2)||>.8||re1||||re2)||<||re1||/.8

Utworzono kilka przypadków testowych z bardzo niektórymi unikalnymi terminami, niektóre nie tak wyjątkowe i niektóre wspólne. Rzeczywiście, możesz wziąć najbardziej unikalny termin i zwiększyć tę częstotliwość w porównaniu. Licznik pójdzie w górę (iloczyn skalarny), a zatem porówna || i otrzyma cosinus bardzo blisko 1.

Rodzaj pokrewny, a NIE pytanie.
Używam również tf-idf do grupowania dokumentów w grupy. Baza klientów, w której sprzedaję, jest przyzwyczajona do bliskich grup duplikatów. Podchodzę do podobnego podejścia i wyglądam na najmniejszą liczbę terminów i oceniam ją względem liczby terminów do 3x. Zatem liczba wyrażeń 10 wynosi 10 do 30 (4-9 już strzelało do 10). Tutaj mogę sobie pozwolić na pominięcie jednego z nich w innym. Skończyłem 10%, a największy stosunek to 1,8.

Proszę zidentyfikować błędy w niniejszej analizie
Jak podkreślił AN6U5 istnieje luka w niniejszej analizie
To już nie jest cosinus jeśli dokument jest znormalizowane na ważona
A jak podkreślił Mathew nie można również stwierdzić d1⋅d2≤d1⋅d1
jestem jeszcze nadzieję na coś dać mi ciężko, ale ludzie związani że wydaje się wiedzieć takie rzeczy mówią mi, nie
nie chcę zmienić pytanie tak po prostu zignorować to
zrobię jakąś analizę i może odpowiedzieć na pytanie osobnego dokumentu normalizacji
dla celem tego pytania jest założenie, że dokument jest znormalizowany na surowym tf
Przepraszam, ale po prostu nie jestem dobry z tym, co kiedykolwiek znaczniki są używane do tworzenia równań
Więc w mojej notacji
|| d1 || = sqrt (suma (w1 x w1))
d1 kropka d2 = suma (w1 X w2)
Załóżmy, że d1 jest krótszym dokumentem
Najlepszą d1 kropką d2, którą można osiągnąć, jest d1 kropka d1
Jeśli d1 jest małżeństwem 100 paul 20
I d2 jest małżeństwem 100 paul 20 peter 1
Znormalizowany
d1 jest małżeństwem 1 paul 1/5
d2 jest w związku małżeńskim 1 paul 1/5 peter 1/100
Wyraźnie wyjdź w związek małżeński i paul mają ten sam idf w obu dokumentach
Najlepsze możliwe d1 kropka d2 to d1 kropka d1
Maksymalne możliwe dopasowanie do d1 to d1
cos = d1 kropka d1 / || d1 || || d2 ||
kwadrat po obu stronach
cos X cos = (d1 kropka d1) X (d1 kropka d1) / ((d1 kropka d1) X (d2 kropka d2)) cos X cos = (d1 kropka d1) / (d2 kropka d2)
weź kwadrat pierwiastek z obu stron
cos = || d1 || / || d2 ||
wynosi || d2 || nie jesteś związany cos?
Jeśli tylko użyję || d2 || > = cos || d1 || i || d2 || <= || d1 || / cos Dostaję potrzebną prędkość obliczeniową


Twój argument, który kończy się granicą wyznaczoną przez nie działa, ponieważ „Najlepsza d1 kropka d2, którą można osiągnąć, to d1 kropka d1” jest niepoprawna. Podczas gdyd1d2cos=||d1||||d2||, nie jest tak, żed1d2d1d1. W przypadku tej konkretnej klasy wektorów może to działać w wystarczającej liczbie przypadków, co jest dobrym przybliżeniem, ale znacznie trudniej byłoby ustalić, że zawsze tak jest. d1d2||d1|| ||d2||d1d1||d1|| ||d1||d1d2d1d1
Matthew Graves

@MatthewGraves Myślę, że się z tobą zgadzam. Nie moja wiedza specjalistyczna, ale wciąż się nad tym zastanawiam.
paparazzo

Odpowiedzi:


4

Niestety matematyka upraszcza pokazanie, że nie można rygorystycznie uzasadnić ograniczenia porównania podobieństwa cosinusów wektorów na podstawie ich długości.

Kluczową kwestią jest to, że metryka podobieństwa cosinus normalizuje się na podstawie długości, tak że uwzględniane są tylko wektory jednostkowe. Wiem, że niekoniecznie była to odpowiedź, której chciałeś, ale matematyka wyraźnie pokazuje, że wskaźniki podobieństwa cosinus są agnostyczne do długości wektora.

Spójrzmy na matematykę bardziej szczegółowo:

Stosujesz metrykę podobieństwa cosinus i wymagasz, aby ta metryka była większa niż 0,6:

.

similarity=cos(θ)=AB||A||||B||0,6

Ale długości skalarne na dole można podzielić na powyższe produkty krzyżowe (właściwość dystrybucyjna):

.

AB||A||||B||=A||A||B||B||=A^B^

Teraz i B są wektory, które zmierzają w tym samym kierunku, A i B , ale które zostały znormalizowane do długości jeden. Zatem definicją metryki podobieństwa cosinus jest wzięcie oryginalnych wektorów, znormalizowanie ich do długości jednego, a następnie zmierzenie iloczynu wektorów jednostkowych.A^B^AB

W związku z tym:

similarity=cos(θ)=d1d2||d1||||d2||=d1^d2^0.6

zależy tylko od orientacji wektorów, a nie od ich wielkości (tj. długości).

Pogodzenie tego z tym, co robisz:

Pomimo tego, co pokazują wyniki algebry liniowej, być może nadal widzisz statystycznie znaczący wynik. W praktyce może się okazać, że statystyki pokazują, że ograniczenia długości obowiązują dla twoich danych. Na przykład może się okazać, że tweety nigdy nie mają podobieństwa cosinusowego porównaniu z „Wojną i pokojem” Tołstoja. Jeśli twoje statystyki wyglądają dobrze na używanie | | d 2 | | > .8 | | d 1 | | i | | d 2 | | < | | d 1 | |0.6||d2||>.8||d1|| następnie sugeruję, abyś poszedł z tym, ponieważ tego rodzaju ograniczenia czaszy są bardzo przydatne w oszczędzaniu czasu obliczeniowego.||d2||<||d1||/.8

Być może możesz pogodzić to, co robiłeś z pomiarami odległości, biorąc również pod uwagę odległość euklidesową. Tam, gdzie podobieństwo cosinusu zwraca tylko wartość od -1 do 1 w oparciu o kąt między dwoma wektorami, odległości euklidesowe zwrócą wartości, które zależą od długości dwóch wektorów. W pewnym sensie łączysz aspekty odległości euklidesowej z podobieństwem cosinus.

Dość rozsądne jest wymaganie, aby długości względne nie przekraczały 25% w tym sensie, że łączy to aspekt odległości euklidesowej w celu utworzenia zadaszeń grupowych, co skraca czas obliczeń, a następnie można zastosować agnostyczne podobieństwo kosinusa długości jako ostateczny wyznacznik.

Zauważ, że 1 / .8 = 1,25, więc d2> =. 8d1 jest bardziej restrykcyjnym ograniczeniem niż d2 <= d1 / .8. Sugeruję użycie d2> =. 75d1 i d2 <= 1,25d1, ponieważ jest to symetryczne.

Mam nadzieję że to pomoże!


Myślę, że nie korzysta to z faktu, że długości wektorów pochodzą głównie ze wspólnych wag idf, ze względu na stosowany przez niego schemat normalizacji tf. Jeśli dokument ma bardzo niską normę, oznacza to, że nie zawiera rzadkich słów (lub zawiera je z bardzo małą częstotliwością ułamkową), co oznacza, że ​​można go wykluczyć jako podobny do dokumentu zawierającego tylko rzadkie słowa. Ale to, jak ścisłe jest to ograniczenie, wydaje mi się niejasne. Prawdopodobnie jest tak, że granice teoretyczne są bardzo szerokie w porównaniu z obserwowanymi granicami empirycznymi.
Matthew Graves

@Matthew Graves, mówię tylko, że podobieństwo cosinusa jest niezależne od długości wektora. Pyta, w jaki sposób różnice w długości wektora mogą wpływać na wynikowe podobieństwo cosinusa, a odpowiedź brzmi: nie mogą.
AN6U5

1
Korelacji empirycznej nie można zignorować. Istnieje sposób skorelowania losowości korpusu pod względem obfitości, jeśli tylko statystycznej. Nie mam wystarczającej liczby przedstawicieli na tej stronie, aby zarejestrować się do głosowania.
paparazzo

Tutaj nie zgadzam się. Nie normalizuje się na podstawie długości. Normalizuje się w odniesieniu do jednego najczęściej używanego terminu. Dłuższy dokument może jedynie rozcieńczyć. Jestem gotów dostosować sposób normalizacji, aby uzyskać granicę, którą mogę wesprzeć.
paparazzo

Dziękujemy za zmianę pytania. Lepiej wyjaśnia, co próbujesz osiągnąć. Zauważ, że zmodyfikowana normalizacja sprawia, że ​​tak naprawdę nie jest to podobieństwo do kosinusa, ponieważ jest to ściśle określone. Sugerowałbym kilka dodatkowych zmian, aby to przeliterować. Trzymaj się i powodzenia.
AN6U5,

3

||di||||di||||di||

Aby przejść przez algebrę, pozwól, że przedstawię jeszcze kilka terminów (i zmień nazwy niektórych na krótsze):

d1[t1,t2,...][w1,w2,...][d1,d2,...]0.5ti10wi6D1=||d1||

d1xd1+xX

X=iwi2(ti+xi)2

0.6D1Xiwi2ti(ti+xi)

0.5ti+xi1

xxi=0 idi+xi=1

xX2XX>0XXPP

00.36D12iwi2(ti+xi)2i,jwi4titj(ti+xi)(tj+xj)

0xTPx+qTx+rPi,j=0.36D12wi2titji=jwi2titj

Pd1X

XwxX


Nie zgadzam się z || d || wydaje się służyć jako rzadkość. Jest znormalizowany. „Mary miała małą owieczkę” będzie miała mniejszy || niż „Marry miała białego baranka”. I „oddxxA oddxxB oddxxC” będzie miał mniejszy || niż „oddxxA oddxxB oddxxC oddxxC” w mniej więcej tym samym stosunku. I te dwa porównania będą miały podobny Cos.
paparazzo

@Frisbee, czy jesteś pewien tego porównania? Przypuśćmy, że idf to 0 dla „a”, 0,5 dla „miał” i „Mary”, 1 dla „małego” i „białego” oraz 2 dla „baranka”, obliczam 2,4 dla „Mary miała małego baranka” i 2,55 dla „Maryja miała małego baranka”, ale 1,83 dla „A Maryja miała małego baranka”. Oznacza to, że jedynym sposobem na obniżenie normy jest zwiększenie częstotliwości najczęstszego terminu, a nie dodanie nowych słów. A może nie używamy tej samej formuły?
Matthew Graves

Myślałem, że znormalizowałeś dokument na ważonej (z IDF), a nie na surowej częstotliwości. To by zmieniło rzeczy. Bardziej sensowne jest dla mnie znormalizowanie ważenia. Znacząca zmiana dokumentu || czyniąc „a” najczęściej używanym terminem.
paparazzo

ret=wt(0,5+0,5wtfa(t,re)mzax{wtfa(t,re):tre})wt=losolN.|{rere:tre}|rereja, i re, dokument związany z tym wektorem.) Muszę dziś wieczorem zastanowić się, czy poprawiłoby to ograniczenie (ale prawdopodobnie wiąże się to z dużą ilością algebry).
Matthew Graves

0

Wysyłam odpowiedź, ale wyraźnie przyznam premię komuś innemu

Myślę, że istnieje maksymalny licznik, jeśli dokument tf jest znormalizowany

d1⋅d2 / (|| d1 |||| d2 ||)

Załóżmy, że d1 ma takie same lub mniej terminów (lub po prostu weź d z mniejszymi terminami)
Maksymalna możliwa znormalizowana tf wynosi 1,
więc maksymalna możliwa suma licznika (tf1, i * idf, i * 1 * idf, i)

|| d2 || = suma (tf1, i * idf, i * 1 * idf, i) / || d1 || / .6

Jeśli chodzi o minimum, pracuję nad tym, ale oczywiście istnieje minimum.
Jeśli masz zamiar dopasować, będziesz miał || d ||

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.