шаг 1 : если файл очень большой и не может быть отсортирован в памяти, вы можете разбить его на куски, которые можно отсортировать в памяти.
шаг 2 : Для каждого отсортированного фрагмента вычислить отсортированные пары (слова, nr_occurrence), в его точке вы можете отказаться от фрагментов, потому что вам нужны только отсортированные пары.
шаг 3 : перебирать фрагменты, сортировать фрагменты и всегда сохранять первые десять появлений.
Пример:
Шаг 1 :
a b a abb a a b b c c ab ab
разделить на:
кусок 1: a b a ab
кусок 2: abb a a b b
кусок 3: c c ab ab
Шаг 2 :
чанк 1: a2, b1, ab1
кусок 2: a2, b2, abb1
кусок 3: c2, ab2
Шаг 3 (объединить куски и сохранить первые десять появлений):
a4 b3 ab3 c2 abb1