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
Tutti i tf sono stati normalizzati usando la frequenza aumentata, per evitare una tendenza verso documenti più lunghi come in questo tf-idf :
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
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
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
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?
Conosco anche il numero di termini in e d 2 se esiste un intervallo di conteggio dei termini.
Via sperimentazione
e | | d 2 | | < | | d 1 | | / .8
sembra essere sicuro, ma speriamo che ci sia un raggio che si è dimostrato sicuro
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