Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }
        private int FindClosestClusterCenter(List <Centeroid <T> > clusterCenter, DocumentVector <T> obj)
        {
            float[] similarityMeasure = new float[clusterCenter.Count()];
            for (int i = 0; i < clusterCenter.Count(); i++)
            {
                similarityMeasure[i] = SimilarityMatrics.FindCosineSimilarity(clusterCenter[i].GroupedDocument[0].VectorSpace, obj.VectorSpace);
            }
            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);
        }
Ejemplo n.º 4
0
        private int FindClosestClusterCenter(List <Centeroid <T> > clusterCenter, DocumentVector <T> docVector)
        {
            float[] similarityMeasure = new float[clusterCenter.Count];
            int     index             = 0;
            float   maxValue          = similarityMeasure[0];



            Parallel.For(0, clusterCenter.Count, i =>
            {
                if (clusterCenter[i].GroupedDocument.Count > 0)
                {
                    similarityMeasure[i] = SimilarityMatrics
                                           .FindCosineSimilarity(clusterCenter[i].GroupedDocument[0].VectorSpace, docVector.VectorSpace);
                }
                if (similarityMeasure[i] > maxValue)
                {
                    maxValue = similarityMeasure[i];
                    index    = i;
                }
            });

            return(index);
        }