BPE несколько способов кодирования слова

С помощью BPE или WordPiece может быть несколько способов кодирования слова. Например, предположим (для простоты), что словарь токенов содержит все буквы, а также объединенные символы ("to", "ke", "en"). Тогда слово "токен" можно было бы закодировать как ("to", "ke", "n") или ("to", "k", "en"). Такие неоднозначные кодировки также упоминаются в этом руководстве https://blog.floydhub.com/tokenization-nlp/

Однако в руководстве по hugginface упоминается, что "BPE и WordPiece [...] разрабатывают правила в определенном порядке, которые затем вы можете применять в том же порядке при токенизации нового текста", см. https://huggingface.co/transformers/master/tokenizer_summary.html.

Как именно эти правила сохраняются и применяются при использовании BPE/WordPiece, например, в моем примере выше, как определяется, какую токенизацию использовать?

2 ответа

Алгоритм BPE изучает правила слияния в определенном порядке на основе частоты подтокенов. Этот порядок активно используется в процессе кодирования нового текста.

Учитывая приведенный выше пример, скажем, пара(e, n)появляется10раз в вашем тренировочном корпусе,(t, o)появляется6раз и(k, e)появляется4раз. Алгоритм BPE изучит 3 правила и применит их в следующем порядке:

      1. e, n -> en
2. t, o -> to
3. k, e -> ke

Кодирование нового текстаtokenне идет слева направо, а вместо этого применяет правила в соответствии с их порядком. Следовательно, текст будет закодирован следующим образом:

      Rule 1: t o k e n -> t o k en
Rule 2: t o k en -> t o k en
Rule 3: t o k en -> to k en

Курс токенизации Byte -Pair Encoding на Huggingface предоставляет эталонную реализацию.

На этапе синтаксического анализа BPE порядок слияния имеет значение. Например, если порядок слияния

      (p, e), (pe, n), (pen, _), (a, p), (ap, p), (app, l), (appl, e), (apple, _), (pen, apple_)

Applepen PenapplePen следует разбить на следующие сегменты: [a, p, p, l, e, pe, pen, a, p, p, l, e, pen], если k = 2. Мы просто используем (p, e), (pe, n)для разбора. Поскольку порядок объединения фиксирован, результат должен быть фиксированным для тестовых данных для любого k. Вы просто используете первые k слияний на этапе синтаксического анализа.

За подробностями обращайтесь к моему ответу на вопрос: Объясните bpe (Byte Pair Encoding) с примерами?

Другие вопросы по тегам