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

Если вы хотите опробовать расширенный генератор вопросов вживую, посетите https://questgen.ai/

Входные данные: входными данными в нашу программу будут любые следующие статьи:

There is a lot of volcanic activity at divergent plate boundaries in the oceans. For example, many undersea volcanoes are found along the Mid-Atlantic Ridge. This is a divergent plate boundary that runs north-south through the middle of the Atlantic Ocean. As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in the crust. Molten rock, called magma, erupts through these cracks onto Earth’s surface. At the surface, the molten rock is called lava. It cools and hardens, forming rock. Divergent plate boundaries also occur in the continental crust. Volcanoes form at these boundaries, but less often than in ocean crust. That’s because continental crust is thicker than oceanic crust. This makes it more difficult for molten rock to push up through the crust. Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at a subduction zone. The leading edge of the plate melts as it is pulled into the mantle, forming magma that erupts as volcanoes. When a line of volcanoes forms along a subduction zone, they make up a volcanic arc. The edges of the Pacific plate are long subduction zones lined with volcanoes. This is why the Pacific rim is called the “Pacific Ring of Fire.”

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

Верный приговор (из рассказа):

Divergent plate boundaries also occur in the continental crust

Ложные предложения (сгенерированный GPT-2)

a) Divergent plate boundaries also occur in the low and high latitudes.
b) Divergent plate boundaries also occur in regions with more frequent rainfall.
c) Divergent plate boundaries also occur in the brain of mammals and vertebrates.
d) Divergent plate boundaries also have been proposed.
e) Divergent plate boundaries also may be used to map and reduce traffic congestion.
f) Divergent plate boundaries also had to be adjusted and the data collected from different cities was sent on a regular basis.

Вы можете переставить и задать истинные или ложные вопросы, как показано ниже -

Divergent plate boundaries also occur in the continental crust
a) True
b) False
Divergent plate boundaries also occur in regions with more frequent rainfall.
a) True
b) False
--------------------------------------------------------------------

Весь код и блокнот jupyter доступны по адресу -



Большой ! С приведенным выше пониманием того, что мы собираемся построить, приступим.

Истинные или ложные утверждения

Для начала рассмотрим несколько способов создания утверждений True или False из данного утверждения. Мы увидим, как GPT2 может помочь нам в некоторых случаях.

1) Добавить или удалить отрицание

2) Изменить именованную сущность

3) Изменить прилагательное

4) Изменить основной глагол

5) Разделите составные или сложные предложения на простые предложения

6) Изменение именной или глагольной фразы

Wordnet, Conceptnet и векторы слов (word2vec, glove) могут использоваться для поиска похожих именованных сущностей, а также антонимов глаголу. Эти подходы можно использовать для решения 2) и 4) выше. Моя предыдущая статья о Генерации вопросов с множественным выбором (MCQ) показывает, как получить отвлекающие факторы с помощью wordnet и Conceptnet.

В этой статье мы сгенерируем истинные и ложные утверждения, используя 6) изменение именной или глагольной фразы.

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

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

Импортируйте необходимые библиотеки и скачайте файлы NLTK и Benepar (нейронный парсер Berkley).

Шаг 1. Загрузите содержимое из текстового файла

Результат будет:

There is a lot of volcanic activity at divergent plate boundaries in the oceans. For example, many undersea volcanoes are found along the Mid-Atlantic Ridge. This is a divergent plate boundary that runs north-south through the middle of the Atlantic Ocean. As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in the crust. Molten rock, called magma, erupts through these cracks onto Earth’s surface. At the surface, the molten rock is called lava. It cools and hardens, forming rock. Divergent plate boundaries also occur in the continental crust. Volcanoes form at these boundaries, but less often than in ocean crust. That’s because continental crust is thicker than oceanic crust. This makes it more difficult for molten rock to push up through the crust. Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at a subduction zone. The leading edge of the plate melts as it is pulled into the mantle, forming magma that erupts as volcanoes. When a line of volcanoes forms along a subduction zone, they make up a volcanic arc. The edges of the Pacific plate are long subduction zones lined with volcanoes. This is why the Pacific rim is called the “Pacific Ring of Fire.”

Шаг 2. Обобщите загруженный контент

Обобщайте загруженный контент с помощью извлекающей библиотеки сумматора summa. Также из обобщенных предложений удалите предложения, содержащие одинарные кавычки, двойные кавычки и вопросительные знаки, так как они не подходят для создания тестов True или False.

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

As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in the crust

Divergent plate boundaries also occur in the continental crust

Volcanoes form at these boundaries, but less often than in ocean crust

Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at a subduction zone

Мы будем использовать приведенные выше 4 предложения и генерировать из них ложные предложения, изменяя глагольную фразу или именную фразу или и то, и другое.

Шаг 3. Разделите предложение в нужном месте с помощью синтаксического анализатора Berkley Constituency.

Здесь мы используем синтаксический анализатор Berkley Constituency, чтобы разбить предложение на окончание глагольной фразы или именной фразы. Например: если введено предложение Расходящиеся границы плит также встречаются в континентальной коре, мы разбиваем его по конечной фразе с существительным, чтобы получить Расходящиеся границы плит также встречаются в континентальной коре и мы разбиваем его в конце глагольной фразы, чтобы получить Также расходящиеся границы пластин. Теперь мы передаем частично разделенное предложение Расходящиеся границы тарелок также встречаются в в OpenAI GPT-2, чтобы генерировать предложения с разными окончаниями. Вот как мы генерируем ложные предложения с другой конечной глагольной фразой или существительной.

Как вы можете видеть на диаграмме выше, сгенерированной с помощью демо-версии синтаксического анализатора AllenNLP, последняя глагольная фраза - происходить в континентальной коре, а последняя именная фраза - континентальная кора. . Мы разбиваем исходное предложение на последнюю глагольную фразу, чтобы получить Также расходящиеся границы пластин. Мы разбиваем исходное предложение по последней фразе с существительным, чтобы получить Расходящиеся границы пластин также встречаются в.

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

{'As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in the crust': ['As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in'], 'Divergent plate boundaries also occur in the continental crust': ['Divergent plate boundaries also occur in', 'Divergent plate boundaries also'], 'Volcanoes form at these boundaries, but less often than in ocean crust': ['Volcanoes form at these boundaries, but less often than in'], 'Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at a subduction zone': ['Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at']}

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

Например: «Границы расходящихся плит также встречаются в континентальной коре»: [«Границы расходящихся плит также встречаются в», «Границы расходящихся плит также встречаются»]

Обратите внимание, что иногда в конце предложения нет ни глагольной, ни существительной фразы. Следовательно, не все предложения будут иметь два значения в приведенном выше словаре.

Функция get_right_most_VP_or_NP в приведенном выше коде является основной функцией, в которой мы используем динамическое программирование для рекурсивного просмотра дерева предложений и определения последней глагольной фразы или последней существительной фразы, на которую нужно разделить .

Объект дерева синтаксического анализа из Benepar (объект дерева nltk) не сохраняет пробелы и другие детали. Следовательно, если есть предложение вроде Мэри съела яблочный пирог Джона, мы определяем существительную фразу и используем get_flattened, чтобы получить существительную фразу как яблоко Джона. пирог . Если вы заметили, что в существительной фразе между апострофом и s после Иоанна есть пробел. Если мы просто попытаемся сопоставить строку с основным предложением Мэри съела яблочный пирог Джона и попытаемся удалить яблочный пирог Джона, это будет невозможно. Поэтому я написал вспомогательную функцию get_termination_portion, выше, чтобы добавить настраиваемую логику для сопоставления независимо от места и вернуть Мэри съела, удалив словосочетание яблочный пирог Джона .

Шаг 4. Загрузите OpenAI GPT2 и Sentence BERT

Мы просто выполняем некоторую инициализацию, чтобы загрузить openAI GPT2 и предложение BERT для наших следующих шагов по генерации текста с частично разделенными предложениями выше.

Шаг 5: Создайте ложные предложения и отфильтруйте их по сходству с исходным предложением.

Сгенерируйте несколько предложений с помощью OpenAI GPT2 и среди них отфильтруйте (с помощью Sentence BERT) похожие, поскольку мы хотим оставить только несходные предложения как ложные.

Давайте разберемся, что делает приведенный выше код, на практическом примере.

Предположим, что наше первоначальное предложение: «Много лет назад в монастыре жил один святой». Затем, начиная с шага 3 выше, мы разбиваем предложение на словосочетание существительное, чтобы получить «Много лет назад был святой человек, который жил в a».

Мы даем частичное предложение «Много лет назад был святой человек, который жил в» функции generate_sentences выше и получаем следующие сгенерированные предложения:

1 Many years ago, there was a holy man who lived in a monastery that had been built on ruins of an ancient building.

2 Many years ago, there was a holy man who lived in a cave and said that the only thing which he did not know is God.

3 Many years ago, there was a holy man who lived in a monastery.

4 Many years ago, there was a holy man who lived in a mountain area.

5 Many years ago, there was a holy man who lived in a temple with no people.

6 Many years ago, there was a holy man who lived in a small village.

7 Many years ago, there was a holy man who lived in a town called Foula.

Мы передаем все эти сгенерированные предложения вместе с исходным предложением «Много лет назад в монастыре жил святой человек» функции sort_by_similarity, которая дает косинусное сходство оценка за каждое из 7 приведенных выше предложений по сравнению с исходным предложением. Мы используем предложение BERT для кодирования каждого предложения и используем Scipy для получения оценок косинусного сходства. Затем мы выбираем самые непохожие (с низким показателем сходства), так как хотим получить ложные предложения, не совпадающие с исходным предложением. Мы также фильтруем предложения, которые очень длинные по сравнению с исходным предложением.

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

Original : Many years ago, there was a holy man who lived in a monastery.


======================
Generated and filtered sentences:

1 )  Many years ago, there was a holy man who lived in a small village.
2 )  Many years ago, there was a holy man who lived in a mountain area.
3 )  Many years ago, there was a holy man who lived in a town called Foula.
4 )  Many years ago, there was a holy man who lived in a temple with no people.
5 )  Many years ago, there was a holy man who lived in a cave and said that the only thing which he did not know is God.

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

Окончательный результат:

1) True Sentence (from the story) :
As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in the crust
False Sentences (GPT-2 Generated)
a) As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in the crust that provide access to oxygen-rich water.
b) As tectonic plates pull away from each other at a divergent plate boundary, they create deep fissures, or cracks, in the seafloor that are more sensitive to wind velocity and pressure than most continental surfaces.
2) True Sentence (from the story) :
Divergent plate boundaries also occur in the continental crust
False Sentences (GPT-2 Generated)
a) Divergent plate boundaries also occur in the low and high latitudes.
b) Divergent plate boundaries also occur in regions with more frequent rainfall.
c) Divergent plate boundaries also occur in the brain of mammals and vertebrates.
d) Divergent plate boundaries also have been proposed.
e) Divergent plate boundaries also may be used to map and reduce traffic congestion.
f) Divergent plate boundaries also had to be adjusted and the data collected from different cities was sent on a regular basis.
3) True Sentence (from the story) :
Volcanoes form at these boundaries, but less often than in ocean crust
False Sentences (GPT-2 Generated)
a) Volcanoes form at these boundaries, but less often than in any other country," he says.
b) Volcanoes form at these boundaries, but less often than in a large coastal country (such as the USA) they must be found along well-defined water bodies such that their location can become clear.
4) True Sentence (from the story) :
Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at a subduction zone
False Sentences (GPT-2 Generated)
a) Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at a rate of 1.1, 3–4 km/h (5).
b) Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at about 25% of its original location.
c) Many volcanoes form along convergent plate boundaries where one tectonic plate is pulled down beneath another at a rate of about 100 million km/year.

Некоторые из сгенерированных ложных предложений почти похожи на предложения, созданные человеком, в то время как некоторые из них не так логичны. Вы можете поиграться с параметрами текстового генератора GPT-2 и настроить его дальше.

Что можно улучшить?

  1. Вы можете использовать разрешение местоимения (разрешение нейронных со-ссылок) в полном тексте, прежде чем передавать его в Summa summarizer. Затем любые предложения с местоимениями должны быть разрешены таким образом, чтобы, когда они представлены как Истина или Ложь, они выглядели законченными и независимыми. Но поскольку разрешение местоимения не идеальное, мы также столкнемся с некоторыми нежелательными ошибками.
  2. Вместо того, чтобы давать GPT2 просто незаконченное предложение вроде «Также встречаются расходящиеся границы тарелок» и просить его генерировать предложения, дайте несколько предложений, которые стоят перед незавершенным предложением. Тогда у GPT-2 будет больше контекста для создания связного текста.
  3. Используйте синтаксический анализатор группы клиентов, чтобы разделить составные и сложные предложения на простые предложения. Затем вы можете давать простые предложения как истинные утверждения. Это затронет пункт № 5), упомянутый в начале, о различных способах генерации True или False.

Мы выполнили очень практичный проект по созданию вопросов "правда или ложь" для образовательного контента, сочетая современное НЛП - OpenAI GPT2, Sentence BERT и Berkley Neural Parser.

Я Рамсри, фрилансер в области искусственного интеллекта и НЛП. Я создаю Questgen.ai, ИИ для генерации вопросов, чтобы автоматически генерировать оценки (Верно / Неверно, MCQ, Заполнить пробелы и т. Д.) Из любого контента для образования K-12. Я открываю исходный код большей части технологий, созданных для Questgen.ai, здесь на носителе.

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

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

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