J'ai une matrice nommée vecteurs [i] [j] .Je voudrais calculer la similarité cosinus entre chaque ligne. Par exemple, pour ce matrice Similitude cosinus de chaque ligne dans une matrice
1 0 1 0 1 0 0
v= 0 0 1 1 1 0 1
1 1 0 0 1 0 1
Je veux avoir le calcul de similarité entre row1 et la ligne 2, row1 et row3, row2 et row3.Further plus si similitude entre row1 row2 égales = 0,6 et d'autres 0,5 et 0,4 respectivement . Je voudrais ajouter cette valeur sur chaque élément (e =! 0) de ces éléments aux lignes et obtenir la matrice finale comme ceci.
2.1 0 2.1 0 2.1 0 0
v= 0 0 2 2 2 0 2
1.9 1.9 0 0 1.9 0 1.9
Voici la partie du code où j'ai défini et rempli ma matrice;
string text = Request.Form["TextBox1"]; ; // text
string[] textInArray = text.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
int[,] vectors = new int[textInArray.Length, keywords.Length];
for (int i = 0; i < textInArray.Length; i++)
{
string[] words = textInArray[i].Split(' ');
for (int j = 0; j < keywords.Length; j++)
{
foreach (var word in words)
{
if (word.Contains(keywords[j]))
{
vectors[i, j]++;
}
}
}
}
et voici mon code pour calculer la similarité mais je pense qu'il est pas complète quelque part je erreurs et je ne sais pas comment puis-je ajouter cette valeur sur les éléments de deux courants lignes.
for(i=1 i<matrix.GetLength(0) i++){
for(j=1 j<matrix.GetLength(0) j++){
dot += vectors[i] * vectors[j];
mag1 += Math.Pow(vectors[i], 2);
mag2 += Math.Pow(vectors[j], 2);
}
float M= dot/(Math.Sqrt(mag1) * Math.Sqrt(mag2));
}
}
La balise asp.net supprimée comme question ne semble pas liée à asp.net de quelque façon que ce soit, ajouté C# – Andrei