Coseno di similitudine

Da Wikipedia, l'enciclopedia libera.

Il coseno di similitudine, o cosine similarity, è una tecnica euristica per la misurazione della similitudine tra due vettori effettuata calcolando il coseno tra di loro, usata generalmente per il confronto di testi nel Data mining e nell'analisi del testo.

Calcolo e utilizzo[modifica | modifica wikitesto]

Dati due vettori di attributi numerici, A e B, il livello di similarità tra di loro è espresso utilizzando la formula

 \text{similarity} = \cos(\theta) = {A \cdot B \over \|A\| \|B\|}.


Un altro modo di indicare la formula, del tutto equivalente, è:

\frac {\sum_{k=1}^{n} A(k)B(k)} {\sqrt{\sum_{k=1}^{n} A(k)^2}  \sqrt{\sum_{k=1}^{n} B(k)^2}}

Nel caso tipico del confronto fra testi il contenuto dei due vettori è la frequenza dei termini, ossia il numero di volte in cui una certa parola ricorre all'interno del testo. Il k-simo elemento di ogni vettore conterrà dunque il numero di volte in cui la parola numerata con k ricorre nel testo, oppure 0 se non ricorre mai.


In base alla definizione del coseno, dati due vettori si otterrà sempre un valore di similitudine compreso tra -1 e +1, dove -1 indica una corrispondenza esatta ma opposta (ossia un vettore contiene l'opposto dei valori presenti nell'altro) e +1 indica due vettori uguali.

Nel caso dell'analisi dei testi, poiché le frequenze dei termini sono sempre valori positivi, si otterranno valori che vanno da 0 a +1, dove +1 indica che le parole contenute nei due testi sono le stesse (ma non necessariamente nello stesso ordine) e 0 che non c'è nessuna parola che appare in entrambi.

Per rendere più efficace il confronto, in genere, si eliminano le parole più corte e molto frequenti che servono a costruire le frasi, come e, che, ma, quindi e altre, che possono essere identificate velocemente con un'euristica appropriata. È possibile anche usare la similarità per riconoscere la lingua in cui è scritto un testo, senza ovviamente ignorare le parole corte e frequenti.

In genere, questa euristica viene usata per confrontare degli elementi che sono indicati da dei parametri il cui numero e significato non è noto a priori.

Nel caso in cui i coefficienti siano binari l'operazione si comporta esattamente come il calcolo del coefficiente di Jaccard. Si ha così il cosiddetto coefficiente di Tanimoto, che tra due vettori A e B è definito come

 T(A,B) = {A \cdot B \over \|A\|^2 +\|B\|^2 - A \cdot B}.

Voci correlate[modifica | modifica wikitesto]