WordPiece и BPE - это два похожих и часто используемых метода для сегментирования слов на уровне подслов в задачах НЛП.
В обоих случаях словарь инициализируется со всеми отдельными символами в языке, а затем наиболее частые / вероятные комбинации символов в словаре итеративно добавляются в словарь.
Рассмотрим алгоритм WordPiece из оригинальной статьи (формулировка, слегка измененная мной):
- Инициализировать словарный запас со всеми символами в тексте.
- Постройте языковую модель на данных обучения, используя инвентарь из 1.
- Создайте новую единицу слова, объединив две единицы из текущего запаса слова, чтобы увеличить инвентарь единицы слова на единицу. Выберите новую единицу слова из всех возможных, которая больше всего увеличивает вероятность получения обучающих данных при добавлении в модель.
- Переходите к 2 до тех пор, пока не будет достигнут предопределенный предел в единицах слова или пока вероятность увеличения не упадет ниже определенного порога.
Алгоритм BPE отличается только на шаге 3, где он просто выбирает новую единицу слова как комбинацию следующей наиболее часто встречающейся пары среди текущего набора единиц подслов.
* ** 1023 тысяча двадцать-дв * Пример
Ввод текста : она гуляла. он выгула собак. я иду
Первые 3 слияния BPE :
w
a
= wa
l
k
= lk
wa
lk
= walk
Итак, на этом этапе ваш словарный запас включает все начальные символы, а также wa
, lk
и walk
. Вы обычно делаете это для фиксированного числа операций слияния.
Как он обрабатывает редкие / OOV слова?
Проще говоря, слова OOV невозможны, если вы используете такой метод сегментации. Любое слово, которое не встречается в словаре, будет разбито на единицы подслов. Аналогичным образом, для редких слов, учитывая, что количество использованных слияний подслов ограничено, слово не будет встречаться в словаре, поэтому оно будет разбито на более частые подслова.
Как это помогает?
Представьте, что модель видит слово walking
. Если это слово не встречается хотя бы несколько раз в учебном корпусе, модель не может научиться справляться с этим словом очень хорошо. Однако в нем могут быть слова walked
, walker
, walks
, каждое из которых встречается всего несколько раз. Без сегментации подслов все эти слова рассматриваются моделью как совершенно разные слова.
Однако, если они будут сегментированы как walk@@ ing
, walk@@ ed
и т. Д., Обратите внимание, что теперь у всех них будет общее walk@@
, что будет происходить очень часто во время обучения, и модель может узнать больше об этом.