Нормализуйте и токенизируйте текст, подсчитайте частоты в словаре, затем выберите топ-k через небольшую кучу или сортировку.
Проектирование сервиса для получения самых частотных слов
Нормализуйте и токенизируйте текст, подсчитайте частоты в словаре, затем выберите топ-k через небольшую кучу или сортировку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Получается текстовый файл, и нужно решить, какие алгоритмы или стратегии применить для извлечения топ‑3 или топ‑5 наиболее часто встречающихся слов. Задача рассматривается с точки зрения архитектуры, с упором на выбор метода обработки данных.
Ответ
Нормализуйте и токенизируйте текст, подсчитайте частоты в словаре, затем выберите топ-k через небольшую кучу или сортировку.
Сначала зафиксируйте правила: регистр, дефисы, пунктуация, стоп-слова и необходимость лемматизации. Без них два корректных алгоритма могут вернуть разные результаты.
Для небольшого файла достаточно одного процесса и Counter. При V уникальных словах сортировка стоит O(V log V), а выбор k максимумов кучей — O(V log k). Чтение большого файла можно выполнять потоково, сохраняя остаток незавершённого слова между блоками. Если словарь не помещается в память, применяют разбиение на дисковые бакеты и агрегацию; распределённая обработка нужна только при соответствующем масштабе. Заранее определите порядок слов с одинаковой частотой.