fbpx
  • ВКонтакте опубликовали библиотеку для предобработки текстовых данных

    YouTokenToMe — это библиотека для предобработки текстовых данных. Инструмент работает в 7-10 раз быстрее аналогов для текстов на алфавитных языках и в 40-50 на иероглифических языках. Библиотека была разработана исследователями из ВКонтакте.

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

    Токен в обработке естественного языка — это единица анализа. Токенами могут быть отдельные слова, словосочетания (n-граммы) или части слов. Процесс разделения текста на единицы анализа называется токенизацией.

    Популярными методами для предобработки текстов являются:

    • Разделение по пробелу;
    • Токенизация, основанная на правилах (например, в SpaCy и NLTK);
    • Лемматизация, стемминг

    Каждый из перечисленных способов имеет свои недостатки:

    • Размер словаря, от которого зависит размер векторного представления слов в модели, не контролируется;
    • Информация о словообразовании не используется (например, не используется связь слов с одним корнем с приставкой и без);
    • Способы токенизации зависят от языка

    Что такое BPE

    Алгоритм Byte Pair Encoding был разработан, чтобы учитывать перечисленные выше недостатки. BPE делит слова на части. Таким образом получается избежать проблемы с тем, что модель не знает слов, которые не находятся в словаре обучающей выборки. 

    Изначально BPE использовался для сжатия текста. Недавно его начали использовать для токенизации текстовых данных. В таких моделях, как BERT и GPT-2, тексты токенизировались с помощью BPE. 

    Наиболее эффективные реализации алгоритма были SentencePiece, который разработали в Google, и fastBPE от Facebook AI Research. Исследователи из ВКонтакте показали, что алгоритм может работать в 7-10 раз быстрее. Оптимизированная реализация BPE лежит в репозитории на GitHub.

    Разработчики сравнили разные реализации алгоритма по времени. В экспериментах они использовали 100 мегабайт базы Википедии на русском, английском, японском и китайском. График ниже показывает, что скорость алгоритма зависит от языка. Это можно объяснить различием в количестве символов в азиатских языках. Помимо этого, в языках с иероглифами слова не могут делиться по пробелу.

    Результаты эксперимента

    Оптимизированный BPE работает как минимум в два раза быстрее существующих альтернатив. В каких-то тестах скорость работы выросла в 10 раз.

    Две основные характеристики оптимизированного алгоритма:

    • Линейное время работы, которое зависит от размера обучающего корпуса текстов;
    • Использование нескольких потоков для обучения и токенизации. Это сокращает время работы алгоритма в несколько раз.

    Аналоговые алгоритмы имеют более высокую асимптотическую сложность.