Алгоритм решения: как найти 100 самых часто встречаемых слов в файле

Не могу придумать алгоритм для своего кода. Помогите пожалуйста. У нас есть два файла. Первый с текстом (Длина текста N слов). Во втором - "синонимы слов". То есть в одном ряду будет написано слово начальной формы,а после- его склонения или синонимы. Например:

  • компьютер, компьютером, компьютеру, компьютера, компьютеры
  • дом, дома, домом, дому,домашний

Длина этого файла M слов.

Файлы очень большой размерности. Мне нужно найти 100 самых часто встречаемых слов в первом файле. Если допустим мы нашли слово компьютер и компьютером, то это посчитается за одно слово (так как во втором файле они стоят в одном ряду, но слово компьютер уже появилось два раза) и на выход программы выйдет слово: начальная форма 100 слов, которые встречаются в тексте больше всего.

Помогите найти самый быстрый алгоритм решения (код не нужен, лишь алгоритм). И какая сложность по времени будет исходя из N, M. Заранее благодарю)


Ответы (1 шт):

Автор решения: MBo

Прочитайте второй файл, организовав словарь, в котором ключи - словоформы (включая начальную), а значения - начальная форма ({дом:дом; домашний:дом etc})

Теперь прочитайте первый файл, для каждого его слова находя соответствующее значение в словаре, и увеличивая для этого значения счётчик в Counter.

А у Counter есть most_common

→ Ссылка