Я думаю, что это не строго BPE ( кодировка пары байтов ), но есть аналогичная идея, примененная к строкам.
Предположим, в словаре есть три китайских слова (Iбудет использовать огромный словарь типа CEDICT для практического использования.)
Затем возьмите следующие данные:
我 喜欢 水果 (мне нравятся фрукты)
Поскольку тексты на китайском языке не разделяются пробелами, их трудно обрабатывать.
Мы можем разложить входную строку на несколько одиночных символов.
我 喜 欢 水 果
Затем найдите новую пару символов в [left, right] и объедините их.Если объединенное слово есть в словаре, мы можем заменить объединенное слово новым символом.
- 我 喜
- 喜欢 <- в dic </li>
- 欢10
- 水果 <- в dic </li>
Мы нашли два новых символа, поэтому вводимый текст становится
我 喜欢 水果
Мы должныитерации, пока мы не сможем найти любое комбинированное слово в словаре.В этом случае мы не можем найти новый символ в словаре.
Это наивно не сложно реализоватьно нам нужно сканировать два смежных слова много раз.Некоторые говорили, что мы можем эффективно реализовать BPE с очередью приоритетов.Я не знаком с алгоритмами сжатия.Буду признателен, если кто-нибудь скажет мне реализацию или полезную документацию.
В этом методе слова из словаря разбиваются на отдельные символы, поэтому мы можем избежать проблем с неизвестными словами.
BestС уважением,
Ссылка: Нейронный машинный перевод редких слов с единицами подслов Ему пришлось начинать с предварительно токенизированных слов из-за сложности вычислений.