Modello spaziale vettoriale coseno tf-idf per la ricerca di documenti simili


10

Hanno un corpus di oltre milioni di documenti

Per un dato documento vuoi trovare documenti simili usando il coseno come nel modello dello spazio vettoriale

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

Tutti i tf sono stati normalizzati usando la frequenza aumentata, per evitare una tendenza verso documenti più lunghi come in questo tf-idf :

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

Hai pre-calcolato tutto Avere i valori per il denominatore precalcolati Quindi per un dato d 1 è necessario segnare oltre 1 milione d 2 Avere una soglia di 0,6 coseno per somiglianza ||d||

d1d2

Posso osservarlo per un dato c'è una gamma abbastanza ristretta di | | d 2 | | per coseno 0,6 Ad esempio in una ricerca di simili per un coseno 0,6 e a | | d 1 | | di 7,7631 quindi | | d 2 | | varia da 7,0867 a 8,8339 dove al di fuori della soglia del coseno 0.6 | | d 2 | | intervallo da 0,7223 a 89,3395||d1||||d2||
||d1||||d2||
||d2||
Questo era con la normalizzazione standard dei documenti tf.
Sta guardando MOLTO che non hanno la possibilità di essere una partita di coseno 0.6 ||d2||

Finalmente la domanda:
per dare e coseno di> = 0.6 come determinare l'intervallo di | | d 2 | | che possibilità? Quale | | d 2 | | posso eliminare in sicurezza? ||d1||||d2||
||d2||

Conosco anche il numero di termini in e d 2 se esiste un intervallo di conteggio dei termini.d1d2

Via sperimentazione
e | | d 2 | | < | | d 1 | | / .8 sembra essere sicuro, ma speriamo che ci sia un raggio che si è dimostrato sicuro ||d2||>.8||d1||||d2||<||d1||/.8

Ha creato alcuni casi di test con alcuni termini univoci, alcuni non così unici e altri comuni. Abbastanza sicuro puoi prendere il termine più unico e aumentare quella frequenza nel confronto. Il numeratore (punto prodotto) salirà e quindi confronterà || e otterrà un coseno molto vicino a 1.

Tipo di correlato e NON la domanda.
Sto anche usando tf-idf per raggruppare i documenti in gruppi. La base clienti in cui vendo sono abituata a gruppi quasi duplici. Qui sto adottando un approccio correlato in quanto aspetto il conteggio dei termini più piccolo e lo valuto rispetto al conteggio dei termini fino a 3 volte. Quindi un conteggio dei termini di 10 appare da 10 a 30 (4-9 avevano già sparato a 10). Qui posso permettermi di perdere uno e averlo raccolto in un altro. Ho finito il 10% e il rapporto più grande è 1,8.

Si prega di identificare i difetti in questa analisi
Come sottolineato da AN6U5 c'è un difetto in questa analisi
Non è più un coseno se il documento è normalizzato su ponderato
E come sottolineato da Mathew, inoltre, non è possibile concludere d1⋅d2≤d1⋅d1
I am spero ancora che qualcosa mi dia un limite, ma le persone che sembrano sapere queste cose mi stanno dicendo di no
Non voglio cambiare la domanda, quindi ignora questo
, farò qualche analisi e forse pubblicherò una domanda separata sulla normalizzazione dei documenti
Per lo scopo di questa domanda presuppone che il documento sia normalizzato su raw tf
Ci dispiace ma non sono bravo con ciò che mai viene usato per fare le equazioni
Quindi nella mia notazione
|| d1 || = sqrt (somma (w1 x w1))
d1 punto d2 = somma (w1 X w2)
Supponiamo che d1 sia il documento più breve
Il miglior d1 punto d2 che può essere raggiunto è d1 punto d1
Se d1 è sposato 100 paul 20
E d2 è sposato 100 paul 20 peter 1
Normalizzato
d1 è sposato 1 paul 1/5
d2 è sposato 1 paul 1/5 peter 1/100
Chiaramente sposi e paolo hanno lo stesso idf in entrambi i documenti
Il miglior punto possibile d1 punto d2 è d1 punto d1
La massima corrispondenza possibile con d1 è d1
cos = d1 punto d1 / || d1 || || d2 ||
piazza entrambi i lati
cos X cos = (d1 punto d1) X (d1 punto d1) / ((d1 punto d1) X (d2 punto d2)) cos X cos = (d1 punto d1) / (d2 punto d2)
prende il quadrato radice di entrambi i lati
cos = || d1 || / || d2 ||
è || d2 || non limitato dal cos?
Se uso solo || d2 || > = cos || d1 || e || d2 || <= || d1 || / cos ho la velocità computazionale di cui ho bisogno


Il tuo argomento che si conclude con un limite determinato da non funziona perché "Il miglior d1 punto d2 che può essere raggiunto è d1 punto d1" non è corretto. Mentred1d2cos=||d1||||d2||d1d2||d1|| ||d2||d1d1||d1|| ||d1||d1d2d1d1

@MatthewGraves Penso di essere d'accordo con te. Non è la mia esperienza, ma lo sto ancora cercando.
paparazzo,

Risposte:


4

Sfortunatamente, la matematica semplifica la dimostrazione che non è possibile giustificare rigorosamente la limitazione del confronto di somiglianza al coseno dei vettori in base alla loro lunghezza.

Il punto chiave è che la metrica di somiglianza del coseno si normalizza in base alla lunghezza, in modo da considerare solo i vettori unitari. So che questa non è necessariamente la risposta che volevi, ma la matematica mostra chiaramente che le metriche di somiglianza del coseno sono agnostiche rispetto alla lunghezza del vettore.

Vediamo la matematica in modo più dettagliato:

Stai applicando una metrica di somiglianza del coseno e richiedendo che tale metrica sia maggiore di 0,6:

similarity=cos(θ)=AB||A||||B||0.6

Ma le lunghezze scalari sul fondo possono essere distribuite nei prodotti incrociati sopra (proprietà distributiva):

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

A^B^AB

Perciò:

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

dipende solo dall'orientamento dei vettori e non dalla loro grandezza (cioè dalla lunghezza).

Conciliare questo con quello che stai facendo:

0.6||d2||>.8||d1||||d2||<||d1||/.8

Puoi forse conciliare ciò che hai fatto con le metriche della distanza considerando anche la distanza euclidea. Laddove la somiglianza del coseno restituisce solo un valore compreso tra -1 e 1 in base all'angolo tra i due vettori, le distanze euclidee restituiranno valori che dipendono dalle lunghezze dei due vettori. In un certo senso, stai combinando aspetti della distanza euclidea con somiglianza del coseno.

Ha abbastanza senso richiedere che le lunghezze relative siano entro il 25% l'una dall'altra, nel senso che ciò combina un aspetto della distanza euclidea per creare baldacchini raggruppati, che taglia il tempo di calcolo, quindi la somiglianza agnostica del coseno della lunghezza può essere usata come il determinante finale.

Si noti che 1 / .8 = 1.25, quindi d2> =. 8d1 è una restrizione più stretta di d2 <= d1 / .8. Suggerisco di usare d2> =. 75d1 e d2 <= 1.25d1 poiché questo è simmetrico.

Spero che sia di aiuto!


Penso che questo non stia sfruttando il fatto che le lunghezze dei vettori provengano principalmente dai pesi condivisi dell'idf, a causa dello schema di normalizzazione tf che sta usando. Se un documento ha una norma molto bassa, ciò implica che non contiene parole rare (o le contiene a una frequenza frazionaria molto bassa), il che significa che può essere escluso come simile a un documento che contiene solo parole rare. Ma quanto stretto sia questo vincolo in generale mi sembra poco chiaro. È probabile che i limiti teorici siano molto ampi rispetto ai limiti empirici osservati.
Matthew Graves,

@Matthew Graves, tutto quello che sto dicendo è che la somiglianza del coseno è agnostica alla lunghezza del vettore. Si sta chiedendo come le differenze nella lunghezza del vettore possano influenzare la somiglianza del coseno risultante e la risposta è: non possono.
AN6U5,

1
La correlazione empirica non può essere ignorata. C'è stato un modo per correlare la casualità del corpus con l'abbondanza se solo statistica. Non ho abbastanza rappresentante su questo sito per un voto positivo per registrarmi.
paparazzo,

Qui è dove non sono d'accordo. Non si normalizza in base alla lunghezza. Si normalizza sul singolo termine più comune. Un documento più lungo può solo diluire. Sono disposto a modificare il modo in cui viene eseguita la normalizzazione per ottenere un limite che posso supportare.
paparazzo,

Grazie per aver modificato la tua domanda. Chiarisce meglio cosa stai cercando di realizzare. Nota che la tua normalizzazione modificata rende in realtà questa non una somiglianza del coseno, poiché questa è rigorosamente definita. Vorrei suggerire alcune modifiche aggiuntive per precisarlo. Abbi cura e buona fortuna.
AN6U5,

3

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

Per elaborare un po 'di algebra, lasciatemi introdurre alcuni termini in più (e rinominarne alcuni in più brevi):

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


Non sono d'accordo con || d || con sembra servire come misura di rarità. È normalizzato. "Mary aveva un agnellino" avrà un più piccolo || di "Marry aveva un agnellino bianco". E "oddxxA oddxxB oddxxC" avrà un valore minore || di "oddxxA oddxxB oddxxC oddxxD" all'incirca nello stesso rapporto. E quei due confronti avranno cos simili.
paparazzo,

@Frisbee, sei sicuro di quel confronto? Supponendo che gli idfs siano 0 per 'a', 0,5 per 'avuto' e 'Maria', 1 per 'piccolo' e 'bianco' e 2 per 'agnello', calcolo 2.4 per "Maria aveva un agnellino" e 2.55 per "Mary aveva un agnellino bianco", ma 1,83 per "A Mary aveva un agnellino". Cioè, l'unico modo per ridurre la norma è aumentando la frequenza del termine più frequente, non aggiungendo nuove parole. O non stiamo usando la stessa formula?
Matthew Graves,

Pensavo che avessi normalizzato il documento sulla ponderata (con IDF) e non sulla frequenza grezza. Ciò cambierebbe le cose. Ha più senso per me normalizzare su ponderato. Modifica significativa di un documento || rendendo "a" il termine più comune si confonde con le cose.
paparazzo,

dt=wt(0.5+0.5wtf(t,d)max{wtf(t,d):td})wt=logN|{dD:td}|ddid

0

Pubblico una risposta ma chiaramente assegnerò il bonus a qualcun altro

Penso che ci sia un numeratore massimo se il documento tf è normalizzato

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

Supponiamo che d1 abbia gli stessi termini o meno (o semplicemente prendi la d con meno termini)
Il massimo possibile tf normalizzato è 1
Quindi la massima somma numerabile possibile (tf1, i * idf, i * 1 * idf, i)

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

Per quanto riguarda il minimo ci sto lavorando, ma chiaramente c'è un minimo.
Se hai intenzione di abbinare avrai || d ||

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.