Этот блог разработан на основе Zindi Sustainable Development Goals (SDGs): Text Classification Challenge. Предполагается, что его читатели имеют некоторые базовые знания о глубоких нейронных сетях. Задача состоит в том, чтобы разработать модель классификации, которая способна классифицировать текст в соответствии с его соответствием 27 показателям третьей ЦУР, хорошего здоровья и благополучия. Разработанная модель будет полезна для выявления проектов развития, организаций и документов, которые относятся к одним и тем же целям и индикаторам ЦУР. Такой инструмент был бы полезен для правительств, доноров развития и исполнителей, стремящихся согласовать ресурсы, найти партнеров или провести исследования, ориентированные на конечные результаты, чтобы обеспечить лучшие результаты по этим показателям.

Стремясь помочь улучшить эти показатели, была разработана модель, основанная на текстах тендеров, программ и документов. А также новостные статьи о международном развитии и гуманитарной помощи и текстовые описания организаций, задействованных в этих секторах, которые были удалены из Интернета для классификации текста в соответствии с его соответствием 27 индикаторам ЦУР 3. Это может быть использовано для продвижения межотраслевое и организационное сотрудничество с целью улучшения этих показателей.

Взаимосвязь показателей ЦУР 3 и ЦУР 3 со всеми другими ЦУР влечет за собой важность сотрудничества в попытках улучшить эти показатели, например, программа, направленная на сокращение подростковой беременности, может выполняться одновременно с программой, направленной на сокращение ВИЧ. инфекции, поскольку все они направлены на сексуальное поведение. Если задействованы разные организации, они могут захотеть объединить ресурсы и запускать программы одновременно. Это означает важность такой модели, поскольку она полезна для получения доступа к индикаторам, над которыми работают другие организации, и может помочь улучшить совместные подходы к достижению установленных целей.

Разработка модели

Как представлено в задаче Zindi, перед нами стоит проблема классификации нескольких классов и меток. К счастью для нас, уже существует множество различных алгоритмов для решения таких задач классификации. Единственная работа, которую мы должны предпринять, - это поместить данные в форму, в которой наш классификатор сможет выполнять вычисления. Что касается нашей проблемы, у нас есть 27 меток, каждая из которых может быть связана с некоторым текстом.
В качестве метрики для задачи использовалась функция потерь Хэмминга для выбора из 6 моделей, которые были разработаны и оценены с использованием тестовых примеров, приведенных в задаче. Эта функция потерь вычисляется как доля неправильных меток в общем количестве меток и варьируется от 0, указывающего на отсутствие неправильных меток, до 1, указывающего на все неправильные метки. Из шести разработанных моделей лучше всего работает двунаправленный стробируемый рекуррентный блок (GRU), на котором мы остановимся ниже.

Преобразование данных и предварительная обработка

Адаптация этих моделей потребовала преобразования набора обучающих данных и некоторой предварительной обработки. Преобразование потребовало извлечения 27 индикаторов, которые были представлены в виде текста под столбцами меток начального набора обучающих данных, и преобразования их в формат, который связывает их с каждым вводимым текстом относительно того, соответствует ли ввод текста конкретному конкретному объекту. показатель. После этого преобразования баланс классов был проверен, и на рисунке ниже показаны дисбалансы классов, существующие в данных, и предполагалось, что необходимо сбалансировать классы для повышения производительности модели.

После этого преобразования обучающий текст был очищен путем удаления разметки HTML. Затем текст был преобразован в числовые значения с помощью функции токенизации и подготовлен для обучения модели.

Двунаправленный стробируемый рекуррентный блок (GRU)

Двунаправленные GRU - это тип двунаправленных рекуррентных нейронных сетей с только входными воротами. Это позволяет использовать информацию как из предыдущих временных шагов, так и из более поздних временных шагов, чтобы делать прогнозы о текущем состоянии. На рисунке 3 показана типичная структура двунаправленной рекуррентной нейронной сети.

Замена каждых A и A ’на диаграмме закрытым повторяющимся блоком дает двунаправленный GRU. На рисунке 4 показана типичная структура стробируемого рекуррентного блока, где Z - логический элемент обновления, а r - логический элемент сброса.

Для получения более подробной информации о двунаправленном GRU обратитесь к блогу Colah.
Используя реализацию Keras, модель была разработана с предварительно обученными встраиваемыми Fasttext в слой внедрения, за которым следовали одномерный слой исключения 0,2, затем двунаправленный слой GRU и затем оба средних значения. и max-pooling, где проводится, а затем объединяется. Кроме того, при подборе модели к набору обучающих данных учитывалась балансировка классов. Затем производительность модели оценивалась по метрике потерь Хэмминга в соответствии с правилами конкурса. Обученная модель получила оценку 0,0709644, что указывает на то, что только около 7% классов были неверно предсказаны на основе тестовых данных. Это привело меня к 18 позиции в таблице лидеров конкурса и дает надежду на дальнейшее улучшение.

Заключение

Хотя модель работает достаточно хорошо и может быть полезна для задачи классификации текста на основе его соответствия показателям ЦУР № 3, ее недостаточно для победы в конкурсе. Поскольку конкуренция остается открытой, необходимо рассмотреть дальнейшие корректировки, такие как настройка параметров и сборка с другими моделями, чтобы помочь улучшить позицию в таблице лидеров.