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

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

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

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

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

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

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

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

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


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

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

7   голосов , оценка 3.429 из 5
Похожие ответы