Подсчет встречаемости слова и его синонимов из файла - 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);
}