Coseno di similitudine
# Coseno di similitudine

La similarità del coseno, 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 nell'estrazione di dati e nell'analisi testuale.

## Calcolo e utilizzo

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}}}}}$

Il valore di similitudine così definito è compreso tra -1 e +1, dove -1 indica una corrispondenza esatta ma opposta e +1 indica due vettori uguali.

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.

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}.$
