Mesure de similarité cosinus dans l'explorateur de texteEst-il possible d'effectuer une mesure de similarité cosinus dans l'Explorateur de texte pour identifier les documents « proches » les uns des autres.Je vois que nous pouvons regrouper des documents et effectuer une analyse sémantique latente, mais je ne vois aucun moyen de calculer la mesure de similarité cosinus.Toute aide serait appréciée.
Rahul
Re : Mesure de similarité cosinus dans l'explorateur de texteCeci est une excellente question! Un coefficient de similarité cosinus sera identique à un coefficient de corrélation lorsque les vecteurs considérés sont centrés (c'est-à-dire ont une moyenne nulle). Traditionnellement, dans le domaine de la recherche d'informations, une matrice de termes de données (DTM) est créée et une décomposition en valeurs singulières (SVD) est effectuée directement sur celle-ci, sans centrer ni normaliser (c'est-à-dire centrer et mettre à l'échelle) les vecteurs. De manière analogue, la similarité cosinus est une mesure d'association avec des vecteurs non centrés.
Cependant, le centrage du DTM présente des avantages importants. Plus précisément, le premier vecteur singulier du SVD (votre première dimension ou sujet) ne sera pas nécessairement le vecteur singulier le plus important dans l'espace multidimensionnel si le centrage n'a pas été effectué. C'est l'une des raisons pour lesquelles JMP permet aux utilisateurs de centrer et/ou de standardiser le DTM pour une utilisation dans l'analyse sémantique latente ou l'analyse thématique. De même, les coefficients de corrélation sont obtenus à partir du DTM centré et mis à l'échelle (c'est-à-dire standardisé).
En résumé, vous pouvez facilement obtenir une mesure de similarité vectorielle en enregistrant le DTM dans votre table de données et en accédant à Analyse > Méthodes multivariées > Multivariée, en ajoutant toutes vos colonnes DTM dans le rôle Y et en cliquant sur OK. La matrice de corrélation résultante indiquera le degré de similarité des vecteurs. Autrement dit, les valeurs de 1 indiquent deux vecteurs identiques dans la même direction, tandis que les valeurs de -1 indiquent deux vecteurs identiques pointant dans des directions opposées, et ainsi de suite. Enfin, vous devrez transposer vos données avant de suivre les étapes ci-dessus si vous souhaitez rechercher la similitude entre les documents plutôt que les termes.
HTH,
~Laura
PS Si vous n'avez pas effectué la mise à niveau vers JMP 13.2, je vous suggère fortement de le faire. S'il vous plaît jetez un oeil à mon message ici afin que vous puissiez en savoir plus sur les améliorations apportées à Text Explorer dans la version 13.2.
Re : Mesure de similarité cosinus dans l'explorateur de texteMerci pour l'aide.C'est ce que je pensais faire.Obtenez la matrice et faites-le moi-même.Je me demandais si c'était intégré ?
Rahul
Re : Mesure de similarité cosinus dans l'explorateur de texteÉtant donné que JMP vous permet d'enregistrer la matrice des termes du document (DTM), vous pouvez toujours la calculer directement. Le tableau ci-joint a été réalisé à partir des exemples de données « Incidents d'aéronefs ». Le code ci-dessous (dont l'exécution a pris quelques secondes sur mon ordinateur portable) a produit la matrice de similarité dans le deuxième tableau ci-joint.
// 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));