Ejemplo n.º 1
0
        /// <summary>
        /// Calculates Score for each review
        /// </summary>
        /// <param name="v"></param>
        private void CalculateScoreForEachReview(int v)
        {
            List <double> scores = new List <double>();

            foreach (var review in ReviewList)
            {
                try
                {
                    double score = 0;
                    var    words = review.Split(' ').ToList();
                    foreach (var word in words)
                    {
                        if (WordCountsDictionary.ContainsKey(word))
                        {
                            score += (WordCountsDictionary[word] / (v * 1.0)) * Math.Log((double)ReviewList.Count / (double)(NumberofReviewsWithWord[word]));
                        }
                    }
                    scores.Add(score / (double)words.Count);
                }
                catch (Exception)
                {
                }
            }
            ReviewListScore = scores;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Calculates Score for each review
        /// </summary>
        /// <param name="v"></param>
        private void CalculateScoreForEachReview(int v)
        {
            List <double> scores = new List <double>();

            foreach (var review in ReviewList)
            {
                double score = 0;
                try
                {
                    var words = review.Split(' ').ToList();
                    foreach (var word in words)
                    {
                        if (WordCountsDictionary.ContainsKey(word))
                        {
                            score += WordCountsDictionary[word] / (v * 1.0);
                        }
                    }
                }
                catch (Exception)
                {
                }
                scores.Add(score);
            }
            ReviewListScore = scores;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Add the input word to dictionary and increase the value if already in the dictionary
 /// </summary>
 /// <param name="word"></param>
 private void AddWordToDictionary(string word)
 {
     if (!WordCountsDictionary.ContainsKey(word))
     {
         WordCountsDictionary.Add(word, 1);
     }
     else
     {
         WordCountsDictionary[word]++;
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Calculate probability of individual words
        /// </summary>
        private void calculateWordProbability()
        {
            var    tempCollection = new Dictionary <string, double>();
            double probability;

            foreach (var item in WordCountsDictionary)
            {
                probability = item.Value / WordCountsDictionary.Sum(x => x.Value);
                tempCollection.Add(item.Key, probability);
            }
            WordCountsDictionary = tempCollection;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Performs Hybrid TF operation
        /// </summary>
        public void PerformHybridTF()
        {
            foreach (var review in ReviewList)
            {
                try
                {
                    var words = review.Split(' ').ToList();
                    words.Remove(" ");
                    words.Remove("");

                    words = RemoveDuplicates(words);
                    foreach (var word in words)
                    {
                        AddWordToDictionary(word);
                    }
                }
                catch (Exception)
                { }
            }
            CalculateScoreForEachReview(WordCountsDictionary.Sum(x => x.Value));
            ReorderReviewsBasedOnScore();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Performs Hybrid TF operation
        /// </summary>
        /// <param name="thresholdValue"></param>
        public void PerformHybridTFIDF(double thresholdValue = 0.7)
        {
            foreach (var review in ReviewList)
            {
                try
                {
                    var words = review.Split(' ').ToList();
                    words.Remove(" ");
                    words.Remove("");

                    //words = RemoveDuplicates(words);
                    foreach (var word in words)
                    {
                        AddWordToDictionary(word);
                    }
                }
                catch (Exception)
                { }
            }
            CalculateNumberOfOccuranceOfWordsInDocument();
            CalculateScoreForEachReview(WordCountsDictionary.Sum(x => x.Value));
            ReorderReviewsBasedOnScore();
            ApplyCosineSimilarityToRemoveSimilarConsecutiveReviews(thresholdValue);
        }