Advertisement
osence

OOP 2

Oct 27th, 2020
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.60 KB | None | 0 0
  1. using System.Collections.Generic;
  2. namespace TextAnalysis
  3. {
  4.     static class FrequencyAnalysisTask
  5.     {
  6.         public static Dictionary<string, string> GetMostFrequentNextWords(List<List<string>> text)
  7.         {
  8.             var result = new Dictionary<string, string>();
  9.             var test = new Dictionary<string, Dictionary<string, int>>();
  10.             var test2 = new Dictionary<string, Dictionary<string, int>>();
  11.             foreach (var line in text)
  12.             {
  13.                 string firstWord = null;
  14.                 string secondWord = null;
  15.                 string firstTwoWords = null;
  16.                 foreach (var thirdWord in line)
  17.                 {
  18.                     if (firstWord == null)
  19.                     {
  20.                         firstWord = thirdWord;
  21.                         continue;
  22.                     }
  23.                     else if (secondWord == null)
  24.                     {
  25.                         secondWord = thirdWord;
  26.                         firstTwoWords = firstWord + " " + secondWord;
  27.                         if (!test.ContainsKey(firstWord)) test[firstWord] = new Dictionary<string, int>();
  28.                         if (!test[firstWord].ContainsKey(secondWord)) test[firstWord][secondWord] = 0;
  29.                         test[firstWord][secondWord]++;
  30.                         continue;
  31.                     }
  32.                     firstWord = secondWord;
  33.                     secondWord = thirdWord;
  34.                     if (!test.ContainsKey(firstWord)) test[firstWord] = new Dictionary<string, int>();
  35.                     if (!test[firstWord].ContainsKey(secondWord)) test[firstWord][secondWord] = 0;
  36.                     test[firstWord][secondWord]++;
  37.                     if (!test2.ContainsKey(firstTwoWords)) test2[firstTwoWords] = new Dictionary<string, int>();
  38.                     if (!test2[firstTwoWords].ContainsKey(thirdWord)) test2[firstTwoWords][thirdWord] = 0;
  39.                     test2[firstTwoWords][thirdWord]++;
  40.                     firstTwoWords = firstWord + " " + secondWord;
  41.  
  42.                 }
  43.             }
  44.             foreach (var firstWord in test.Keys)
  45.             {
  46.                 int maxWordCount = 0;
  47.                 string maxWord = "";
  48.                 foreach (var secondWord in test[firstWord].Keys)
  49.                 {
  50.                     if (test[firstWord][secondWord] > maxWordCount)
  51.                     {
  52.                         maxWordCount = test[firstWord][secondWord];
  53.                         maxWord = secondWord;
  54.                     }
  55.                     else if (test[firstWord][secondWord] == maxWordCount)
  56.                     {
  57.                         if (string.CompareOrdinal(maxWord, secondWord) > 0) maxWord = secondWord;
  58.                     }
  59.                 }
  60.                 result[firstWord] = maxWord;
  61.             }
  62.             foreach (var firstTwoWords in test2.Keys)
  63.             {
  64.                 int maxWordCount = 0;
  65.                 string maxWord = "";
  66.                 foreach (var thirdWord in test2[firstTwoWords].Keys)
  67.                 {
  68.                     if (test2[firstTwoWords][thirdWord] > maxWordCount)
  69.                     {
  70.                         maxWordCount = test2[firstTwoWords][thirdWord];
  71.                         maxWord = thirdWord;
  72.                     }
  73.                     else if (test2[firstTwoWords][thirdWord] == maxWordCount)
  74.                     {
  75.                         if (string.CompareOrdinal(maxWord, thirdWord) > 0) maxWord = thirdWord;
  76.                     }
  77.                 }
  78.                 result[firstTwoWords] = maxWord;
  79.             }
  80.             return result;
  81.         }
  82.    }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement