Misura della somiglianza del coseno in Esplora testoÈ possibile eseguire la misura della somiglianza del coseno in Text Explorer per identificare i documenti "vicini" tra loro.Vedo che possiamo raggruppare documenti ed eseguire analisi semantiche latenti, ma non vedo alcun modo per calcolare la misura della somiglianza del coseno.Qualsiasi aiuto sarà apprezzato.
Rahul
Re: Misura della similarità del coseno in Text ExplorerQuesta è un'ottima domanda! Un coefficiente di similarità del coseno sarà identico a un coefficiente di correlazione quando i vettori considerati sono centrati (cioè hanno una media pari a zero). Tradizionalmente, nel campo del recupero delle informazioni, viene creata una matrice dei termini dei dati (DTM) e una scomposizione dei valori singolari (SVD) viene eseguita direttamente su di essa, senza centrare o standardizzare (cioè centrare e ridimensionare) i vettori. Analogamente a questa, la somiglianza del coseno è una misura di associazione con vettori non centrati.
Tuttavia, ci sono importanti vantaggi nel centrare il DTM. Nello specifico, il primo vettore singolare dell'SVD (la tua prima dimensione o argomento) non sarà necessariamente il vettore singolare più importante nello spazio multidimensionale se non è stata eseguita la centratura. Questo è uno dei motivi per cui JMP consente agli utenti di centrare e/o standardizzare il DTM da utilizzare nell'analisi semantica latente o nell'analisi degli argomenti. Allo stesso modo, i coefficienti di correlazione sono ottenuti dal DTM centrato e scalato (cioè standardizzato).
In sintesi, puoi facilmente ottenere una misura della somiglianza dei vettori salvando il DTM nella tabella dati e andando su Analizza > Metodi multivariati > Multivariato, aggiungendo tutte le colonne DTM nel ruolo Y e facendo clic su OK. La matrice di correlazione risultante indicherà il grado di somiglianza dei vettori. Cioè, i valori di 1 indicano due vettori identici nella stessa direzione, mentre i valori di -1 indicano due vettori identici che puntano in direzioni opposte e così via. Infine, dovrai trasporre i tuoi dati prima di seguire i passaggi precedenti se desideri trovare la somiglianza tra i documenti anziché tra i termini.
HTH,
~Laura
PS Se non hai eseguito l'aggiornamento a JMP 13.2 ti consiglio vivamente di farlo. Per favore, dai un'occhiata al mio post Qui così potrai conoscere i miglioramenti apportati a Text Explorer nella versione 13.2.
Re: Misura della similarità del coseno in Text ExplorerGrazie per l'aiuto.Questo è quello che pensavo di fare.Prendi la matrice e fallo da solo.Mi chiedevo se è integrato?
Rahul
Re: Misura della similarità del coseno in Text ExplorerPoiché JMP consente di salvare la matrice dei termini del documento (DTM), è sempre possibile calcolarla direttamente. La tabella allegata è stata creata a partire dai dati campione degli "Incidenti aerei". Il codice seguente (che ha richiesto alcuni secondi per essere eseguito sul mio laptop) ha prodotto la matrice di somiglianza nella seconda tabella allegata.
// https://en.wikipedia.org/wiki/Cosine_similarity
NamesDefaultToHere(1);
dt = CurrentDataTable();
m = dt << getAsMatrix;
n = NRow(dt);
// Make some column headings for the final table
cols = {};
for(i=1, i<=n, i++,
InsertInto(cols, "Document in Row "||Char(i));
);
// Get the modulus of each feature vector
modulus = J(n, 1, .);
for(i=1, i<=n, i++,
modulus[i] = sqrt(ssq(m[i,0]));
);
// Get the cosine of the angle between each pair of feature vectors
cosTheta = J(n, n, .);
for(i=1, i<=n, i++,
for(j=1, j<=i, j++,
cosTheta[i,j] = Sum(m[i, 0]
m[j, 0])/(modulus[i] * modulus[j]);
);
);
dt2 = AsTable(cosTheta, << ColumnNames(cols));
dt2 << setName("Cosine between feature vectors in "||(dt << getName));