Сценарий обучения и предварительно обученная модель для алгоритма генерации вопросов с использованием набора данных BoolQ и модели преобразования текста в текст T5.

Вход

Входными данными в нашу программу будет любой общий контент / абзац -

Months earlier, Coca-Cola had begun “Project Kansas.” It sounds like a nuclear experiment but it was just a testing project for the new flavor. In individual surveys, they’d found that more than 75% of respondents loved the taste, 15% were indifferent, and 10% had a strong aversion to the taste to the point that they were angry.

Выход

Результатом будут логические (да / нет) вопросы, сгенерированные на основе вышеуказанных входных данных.

Логические (да / нет) вопросы, созданные с помощью модели T5:

1: Does coca cola have a kansas flavor?
2: Is project kansas a new coca cola flavor?
3: Is project kansas the same as coca cola?

Сегодня мы увидим, как мы можем обучить модель T5 из библиотеки Huggingface’s transformers, чтобы генерировать эти логические вопросы. Мы также увидим, как мы можем использовать предоставленную предварительно обученную модель для генерации этих логических (да / нет) вопросов.

Практический пример использования (чат-бот для обучения)

Представьте себе сценарий, в котором вы, студент, взаимодействуете с чат-ботом, чтобы интерактивно изучить концепцию. Чат-бот представляет вам соответствующие фрагменты размером в байты из главы учебника на основе ваших ответов. Он также хочет в режиме реального времени оценить, поняли ли вы представленную тему. Непрактично вручную предварительно создавать оценки для каждого фрагмента главы учебника. Чат-бот может использовать этот алгоритм для генерации логических (да / нет) вопросов в режиме реального времени и оценки вашего понимания по теме.

Давайте начнем -

Набор данных

Я использовал набор данных BoolQ для сбора троек отрывок, вопрос и ответ, а также подготовил обучение и проверку. наборы.

Набор данных boolQ имеет следующий формат -

{
  "question": "is france the same timezone as the uk",
  "passage": "At the Liberation of France in the summer of 1944, Metropolitan France kept GMT+2 as it was the time then used by the Allies (British Double Summer Time). In the winter of 1944--1945, Metropolitan France switched to GMT+1, same as in the United Kingdom, and switched again to GMT+2 in April 1945 like its British ally. In September 1945, Metropolitan France returned to GMT+1 (pre-war summer time), which the British had already done in July 1945. Metropolitan France was officially scheduled to return to GMT+0 on November 18, 1945 (the British returned to GMT+0 in on October 7, 1945), but the French government canceled the decision on November 5, 1945, and GMT+1 has since then remained the official time of Metropolitan France."
  "answer": false,
  "title": "Time in France",
}

Существует «отрывок», которому соответствует «вопрос» и правильное логическое значение «ответ» - истина или ложь.

Мы подробно обсудим, как можно -

  1. Используйте мою предварительно обученную модель, чтобы генерировать логические вопросы для любого заданного содержания.
  2. Используйте мой обучающий код и набор данных, чтобы воспроизвести результаты на своем собственном компьютере с графическим процессором.

Алгоритм обучения - Т5

T5 - это новая модель преобразователя от Google, которая проходит сквозное обучение с текстом в качестве входных и измененным текстом в качестве выходных. Вы можете прочитать больше об этом здесь".

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

Я дал «отрывок» и «ответ» в качестве входных данных для моей модели трансформатора T5 и обучил ее генерировать «вопрос» как вывод.

Код

Весь код для использования предварительно обученной модели и обучения модели с заданными данными доступен по адресу -



Использование предварительно обученной модели

Файл Python t5_inference.py содержит весь код, представленный ниже.

Сначала установите необходимые библиотеки -

!pip install torch==1.4.0
!pip install transformers==2.9.0
!pip install pytorch_lightning==0.7.5

Выполните вывод с любым текстом или абзацем в качестве ввода и просмотрите сгенерированные логические вопросы -

Выход из приведенного выше кода -

Context:  Months earlier, Coca-Cola had begun “Project Kansas.” It sounds like a nuclear experiment but it was just a testing project for the new flavor. In individual surveys, they’d found that more than 75% of respondents loved the taste, 15% were indifferent, and 10% had a strong aversion to the taste to the point that they were angry.
Beam decoding [Most accurate questions] ::
Does coca cola have a kansas flavor?
Is project kansas the same as coca cola?
Is project kansas a new coca cola flavor?
TopKP decoding [Not very accurate but more variety in questions] ::
Does coca cola have a koala flavor?
Is kakao the same as project kansas?
Was project ksoda a real thing?
Time elapsed  1.2351574897766113

Обучение собственной модели

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

1. Подготовка данных

Файл boolQ_prepare_train_validation_dataset.ipynb содержит весь код для подготовки наборов данных для обучения и проверки. Я взял набор данных boolQ, который доступен в виде файла JSON, и преобразовал его в файл csv.

2. Обучение

Спасибо Сурадж Патил за потрясающий Блокнот Colab по обучению T5 для любой задачи преобразования текста в текст. Я позаимствовал большую часть обучающего кода из записной книжки Colab, изменив только класс набора данных и параметры обучения. Я адаптировал класс набора данных к нашему набору данных boolQ.

Обучающий код доступен как train . Py в репозитории Github.

Все, что вам нужно сделать, это клонировать репозиторий на любом компьютере с графическим процессором, установить requirements.txt и запустить train.py для обучения модели Т5.

Обучение этой модели в течение 4 эпох (по умолчанию) заняло около 5–6 часов на p2.xlarge (AWS ec2).

Класс набора данных выглядит следующим образом -

Ключевым моментом является то, как мы передаем наши входные и выходные данные тренеру модели T5. Я дал «отрывок» и «ответ» в качестве входных данных для моей модели трансформатора T5 и обучил ее генерировать «вопрос» как вывод, как показано ниже -

Формат ввода в T5 для обучения

truefalse: yes passage: At the Liberation of France in the summer of 1944, Metropolitan France kept GMT+2 as it was the time then used by the Allies (British Double Summer Time). In the winter of 1944--1945, Metropolitan France switched to GMT+1, same as in the United Kingdom, and switched again to GMT+2 in April 1945 like its British ally. In September 1945, Metropolitan France returned to GMT+1 (pre-war summer time), which the British had already done in July 1945. Metropolitan France was officially scheduled to return to GMT+0 on November 18, 1945 (the British returned to GMT+0 in on October 7, 1945), but the French government canceled the decision on November 5, 1945, and GMT+1 has since then remained the official time of Metropolitan France. </s>

Формат вывода в T5 для обучения

Is france the same timezone as the uk? </s>

Примечание. Текст «truefalse: да» или «truefalse: no» должен генерировать соответствующее логическое значение вопрос, на который в тексте дан ответ «да» или «нет». Но с моими тренировками на Т5 это было неэффективно. Поэтому убедитесь, что вы не полагаетесь на первоначальный знак «да» или «нет», данный в качестве ответа на сгенерированный логический вопрос.

Общий набор данных составляет всего около ~ 10 тысяч выборок, поэтому качество создаваемых вопросов иногда не очень хорошее. Обратите внимание на это.

Удачного кодирования!

Живой когортный курс: Практическое введение в НЛП

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

Генерация вопросов с помощью НЛП - Курс

Я запустил очень интересный курс Udemy под названием Генерация вопросов с помощью НЛП, в котором подробно рассматриваются некоторые методы, обсуждаемые в этом сообщении в блоге. Если хотите посмотреть, вот ссылка.

Не стесняйтесь подключаться к Linkedin, если у вас есть какие-либо вопросы или вы просто хотите поздороваться!