Использование возможностей встраивания предложений BERT с помощью Spark NLP

В предыдущем посте я продемонстрировал, как различные вложения слов (GloVe, ELMo, BERT) можно использовать для задачи классификации текста. Мы увидели, как (и почему) захват контекста важен для максимальной точности.

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

Сегодня мы все выкидываем в окно! Я собираюсь продемонстрировать, как я достиг 90% точности классификации без какой-либо предварительной обработки. Вы готовы? Я хочу, чтобы эта книга была короткой и милой, но вы можете найти мою полную записную книжку здесь.

Набор данных

Я решил использовать набор данных теста AG news. Я восстановил обучение и тест из Лаборатории Джона Сноу (обязательный справочник по всем вопросам НЛП). Этот набор данных разделен на четыре сбалансированные категории, в общей сложности 120 000 строк, как показано ниже.

Набор данных разделен на 2 столбца, категорию и описание.

Как добиться точности 90% без предварительной обработки

Поскольку я хочу, чтобы это был сжатый пост, я отсылаю вас к моей предыдущей статье, чтобы узнать, как использовать Spark NLP в Colab. Это всего лишь пара блоков кода. Как вариант, вы можете проверить мою записную книжку для этого проекта здесь.

В качестве краткого напоминания, чтобы понять, насколько крутым может быть встраивание предложений, рассмотрим следующий план шагов предварительной обработки, которые я использовал для встраивания слов GloVe, ELMo и BERT:

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

При использовании встраивания предложений BERT единственным необходимым шагом было преобразование необработанного текста в документ. Полный конвейер можно увидеть ниже. В первом фрагменте вы можете видеть, что текст в столбце описание преобразован в документ с помощью DocumentAssembler. Этот столбец документ затем используется в качестве входных данных для встраивания предложений BERT. Наконец, эти вложения используются в качестве входных данных для ClassifierDL. Вот и все!

Результаты

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

Затем мы можем использовать scikit-learn для вычисления наших показателей. Как видно ниже, общая точность составила 90%!

Что мы узнали сегодня?

Я хотел поделиться с вами простым, но мощным инструментом, который можно добавить к вашему набору инструментов НЛП. Без какой-либо предварительной обработки, которая может занять довольно много времени, вложения предложений BERT были использованы для получения отличной классификации наших 4 категорий.

Я сделал это коротким и приятным, чтобы познакомить вас с силой встраивания предложений. Попробуйте и дайте мне знать, что вы думаете!