Код Middle Как устроены LLM обновлено

Применить BPE-слияния к слову

Условие

Реализуйте кодирование слова по обученным слияниям BPE: bpe_encode(word, merges).

  • Начните со списка отдельных символов слова.
  • merges: список пар [a, b] в порядке приоритета (раньше в списке = важнее).
  • На каждом шаге среди соседних пар текущего списка найдите пару с наивысшим приоритетом и слейте все её вхождения слева направо без перекрытий.
  • Повторяйте, пока ни одна соседняя пара не встречается в merges.

Верните итоговый список токенов. Для пустого слова [].

Примеры

bpe_encode("lower", [["l", "o"], ["lo", "w"], ["e", "r"]]) // ["low", "er"]
bpe_encode("", [["a", "b"]]) // []
bpe_encode("a", [["a", "b"]]) // ["a"]

Как подойти

Подсказки: 2
  1. Словарь пара -> ранг даст поиск лучшей пары за O(n).
  2. После выбора пары пройдите список и склейте её вхождения.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме