YouTokenToMe: инструмент для быстрой токенизации текста от Команды ВКонтакте

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Хотим представить наш новый инструмент для токенизации текста — YouTokenToMe. Он работает в 7–10 раз быстрее других популярных версий на языках, похожих по структуре на европейские, и в 40–50 раз — на азиатских языках. Рассказываем о YouTokenToMe и делимся им с вами в open source на GitHub. Ссылка в конце статьи!

image

Сегодня значительная доля задач для нейросетевых алгоритмов заключается в обработке текстов. Но, поскольку нейросети работают с числами, до передачи в модель текст нужно преобразовать.

Перечислим популярные решения, которые обычно для этого используются:

  • разбиение по пробелам;
  • алгоритмы на основе правил: spaCy, NLTK;
  • стемминг, лемматизация.

У каждого из них свои недостатки:

  • нельзя контролировать размер словаря токенов. От этого напрямую зависит размер слоя с эмбеддингами в модели;
  • не используется информация о родстве слов, которые отличаются суффиксами или приставками, например: polite — impolite;
  • зависят от языка.

В последнее время популярен подход Byte Pair Encoding. Изначально этот алгоритм предназначался для компрессии текстов, но несколько лет назад его стали использовать для токенизации текста в машинном переводе. Сейчас он применяется для широкого круга задач, в том числе используется в моделях BERT и GPT-2.

Наиболее эффективными реализациями BPE были SentencePiece, разработанная инженерами Google, и fastBPE, созданная исследователем из Facebook AI Research. Но нам удалось доказать, что токенизацию можно существенно ускорить. Мы оптимизировали алгоритм BPE и опубликовали исходный код, а также выложили готовый пакет в репозиторий pip.

Ниже можно сравнить результаты измерения скорости нашего алгоритма и других версий. В качестве примера мы взяли первые 100 MB корпуса данных из «Википедии» на русском, английском, японском и китайском языках.

image

image

На графиках видно, что время работы существенно зависит от языка. Это объясняется тем, что в азиатских языках алфавиты больше, а слова не разделены пробелами. YouTokenToMe работает в 7–10 раз быстрее на языках, похожих по структуре на европейские, и в 40–50 раз — на азиатских. Токенизация была ускорена как минимум в два раза, а на некоторых тестах более чем в десять раз.

Таких результатов мы достигли благодаря двум ключевым идеям:

  • новый алгоритм имеет линейное время работы в зависимости от размера корпуса для обучения. У SentencePiece и fastBPE — менее эффективная асимптотика;
  • новый алгоритм может эффективно использовать несколько потоков как в процессе обучения, так и в процессе токенизации — это позволяет получить ускорение ещё в несколько раз.

Использовать YouTokenToMe можно через интерфейс для работы из командной строки и напрямую из Python.

Больше информации вы можете найти в репозитории: github.com/vkcom/YouTokenToMe
Источник: https://habr.com/ru/company/vk/blog/460641/


Интересные статьи

Интересные статьи

Когда я участвовал в продуктовой разработке, меня страшно бесили прагматичные дизайнеры — те, что все пытались делать только на основе статистических исследований. Вот мне хочетс...
В интернете полно статей на тему основанных на N-граммах языковых моделей. При этом, готовых для работы библиотек довольно мало. Есть KenLM, SriLM и IRSTLM. Они популярны и используются во...
Продолжаем рассказывать об инструментах для оценки производительности CPU на Linux-машинах. Сегодня в материале: temci, uarch-bench, likwid, perf-tools и llvm-mca. Больше бенчмарков: Sys...
REST Assured — DSL для тестирования REST-сервисов, который встраивается в тесты на Java. Это решение появилось более девяти лет назад и стало популярным из-за своей простоты и удобного функционал...
В современном мире значительная часть взаимодействий между людьми происходит в интернете, и очень часто в письменной форме. Так что повышение уровня письменного английского – важная задача в ...