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 sorgente]

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

dove la funzione \cos(\theta) non va confusa con il coseno tra vettori, perché in questo caso si applica una normalizzazione grazie alla magnitudine.


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 sorgente]