public static string FindClosestDocument() { if (centroid != null) { //int countCenter = centroid.GroupedDocument.Count() - 1; float max = 0; string doc = ""; // Tính độ tương tự của document với các center rồi add vào mảng similarityMeasure foreach (var ce in centroid.GroupedDocument) { if (ce.Content != documentVector.Content) { float current = SimilarityMatrics.FindExtendedJaccard(ce.VectorSpace, documentVector.VectorSpace); if (max < current) { max = current; doc = ce.Content; } } } if (string.IsNullOrEmpty(doc)) { return(null); } else { return(doc); } } return(null); }
/// <summary> /// Tìm center có độ tương tự cao nhất với document thông qua công thức cosine /// </summary> /// <param name="clusterCenter">danh sách center</param> /// <param name="obj">document</param> /// <returns>center có độ tương tự cao nhất với document</returns> private static int FindClosestClusterCenter(List <Centroid> clusterCenters, DocumentVector obj) { int countCenter = clusterCenters.Count(); // số lượng center float[] similarityMeasure = new float[countCenter]; // Tính độ tương tự của document với các center rồi add vào mảng similarityMeasure for (int i = 0; i < countCenter; i++) { similarityMeasure[i] = SimilarityMatrics.FindExtendedJaccard(clusterCenters[i].GroupedDocument[0].VectorSpace, obj.VectorSpace); } // Tìm max trong mảng similarityMeasure int index = 0; float maxValue = similarityMeasure[0]; for (int i = 0; i < similarityMeasure.Count(); i++) { if (similarityMeasure[i] > maxValue) { maxValue = similarityMeasure[i]; index = i; } } return(index); }