Подсчет встречаемости слова и его синонимов из файла - C#

Узнай цену своей работы

Формулировка задачи:

Имеется файл такой структуры:
[управление][управление, управлению, управления, управлением, управлении] [менеджмент][менеджмента, менеджмент, менеджменте, менеджменту] [организация][организации, организация, организациях, организациями, организаций, организацией, организацию] [управленческий][управленческую, управленческий, управленческой, управленческих, управленческого, управленческая, управленческим, управленческие, управленческом] [бизнес][бизнес, бизнесе, бизнесом, бизнеса, бизнесу] [человек][человека, человек, человеку, людей, людьми, люди, человеке, людям] [который][которое, который, которая, которые, которого, которых, которую, которым] [наш][наше, наш, нашем, нашему, наши, наших, нашей, наша, нашего] [система][системы, система, систему, системе, систем, системах, системой, системами]
Структура строки:

[слово_id][синонимы и однокоренные слова в тексте через запятую]

Имеется файл с обычным текстом, как реализовать подсчет [слово_id] в тексте, что бы в него так же подсчитывалась сумма каждого слова встречаемого в строке? [управление] 400 раз встречается [менеджмент] 320 раз встречается ....

Решение задачи: «Подсчет встречаемости слова и его синонимов из файла»

textual
Листинг программы
  1.         public static void Main(string[] args)
  2.         {
  3.             string vocabularText = File.ReadAllText("synonyms.txt");
  4.             string text = File.ReadAllText("text.txt");
  5.             var wordCounts = new Dictionary<string, int>();
  6.             var wordMap = new Dictionary<string, string>();
  7.             foreach (Match line in Regex.Matches(vocabularText, @"\[(.+)\]\[(.+)\]"))
  8.             {
  9.                 wordCounts.Add(line.Groups[1].Value, 0);
  10.                 foreach (Match synonym in Regex.Matches(line.Groups[2].Value, @"\w+"))
  11.                     wordMap.Add(synonym.Value, line.Groups[1].Value);
  12.             }
  13.             foreach (Match word in Regex.Matches(text, @"\w+"))
  14.             {
  15.                 string original;
  16.                 if (wordMap.TryGetValue(word.Value, out original))
  17.                     wordCounts[original]++;
  18.             }
  19.             foreach (var e in wordCounts.OrderByDescending(pair => pair.Value))
  20.                 Console.WriteLine("[{0}] {1} раз встречается", e.Key, e.Value);
  21.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы