Используйте NLP для генерации неправильных ответов на вопросы MCQ в Edtech

Если вы работаете на стыке НЛП и Edtech, вы рано или поздно столкнетесь с проблемой создания отвлекающих факторов (неправильных вариантов ответа) для заданного вопроса и ответа автоматически с помощью НЛП.

Что такое отвлекающие факторы?

Отвлекающие факторы — это неправильные ответы на вопросы с несколькими вариантами ответов.

Например, если в заданном вопросе с несколькими вариантами ответов в качестве правильного ответа указан Барак Обама, нам нужно сгенерировать неправильные ответы (отвлекающие факторы), такие как Джордж Буш, Билл Клинтон, Дональд Трамп. и т. д.

При правильном ответе как найти отвлекающие факторы?

Существует несколько методов поиска отвлекающих факторов на основе графов знаний, а также неконтролируемых алгоритмов, таких как word2vec, fastText и т. д. Некоторые из них можно найти здесь, в моем предыдущем сообщении в блоге.

Давайте сосредоточимся на Sense2vec, который находится в тех же строках, что и word2vec, где вы запрашиваете заданное слово или фразу и возвращаете похожие слова/фразы в векторном пространстве.

Предположим, у нас есть вопрос и правильный ответ.

Вопрос: Кто является 44-м президентом США?
Ответ: Барак Обама.

Теперь цель состоит в том, чтобы найти неправильные варианты ответа (отвлекающие факторы) для слова «Барак Обама». Это могут быть другие президенты или кандидаты в президенты.

Но есть проблема! Если вы запросите в sense2vec запрос «Барак Обама» на наличие похожих слов, вы столкнетесь со многими почти повторяющимися словами и словами с ошибками, такими как «Барак Обама», «Президент Обама», «Обама» и т. д., которые вам необходимо отфильтровать. Вы также сталкиваетесь с другими дубликатами, такими как Джордж Буш, Джордж Буш-младший и т. д., из которых вам нужно оставить только одного в качестве отвлекающего фактора.

Похожие слова на «Барак Обама» из алгоритма sense2vec:

Барак Обама
Президент Обама
Обама
Джордж Буш
Джордж Буш-младший
Билл Клинтон
Джон Маккейн

Как мы решаем эту проблему фильтрации рядом с дубликатами? Для этого мы можем эффективно использовать вложения преобразователей предложений и максимальную предельную релевантность. И мы увидим, как через мгновение с кодом!

Алгоритм

Блокнот colab с полным кодом для этого урока можно найти здесь.

Начнем с установки библиотеки sense2vec, загрузки и инициализации модели sense2vec.

Давайте воспользуемся нашим поисковым словом «Барак Обама» и посмотрим, что выдает sense2vec.

Вывод:

['Барак Обама', 'Джордж Буш-младший', 'Джордж Буш-младший', 'Рональд Рейган', 'Джордж Буш', 'Джон Маккейн', 'Джимми Картер', 'Президент Обама', 'Билл Клинтон', ' Обама», «Хилари Клинтон», «Хиллари Клинтон», «президент», «Сара Пэйлин», «президент», «Нэнси Пелоси»]

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

Теперь, когда у нас есть векторное вложение для каждого слова/фразы, наша цель — выбрать N самых разных (далеко друг от друга) слов в пространстве встраивания.

N в нашем случае с несколькими вариантами ответов может быть четыре. Итак, итеративно мы хотим выбрать три самых разных слова/фразы для нашего ключевого слова («Барак Обама»). Но как этого добиться?

Нам на помощь приходит максимальная предельная релевантность (MMR)! Есть отличная реализация библиотеки MMR алгоритм в KeyBert от Мартена Грутендорста!

Чтобы процитировать страницу реализации алгоритма MMR выше -

MMR учитывает сходство ключевых слов/фраз с документом, а также сходство уже выбранных ключевых слов и фраз. Это приводит к выбору ключевых слов, которые максимизируют их разнообразие по отношению к документу.

Здесь документ можно заменить нашим исходным ключевым словом запроса (Барак Обама). И мы немного изменим алгоритм MMR, чтобы первое выбранное слово было нашим исходным ключевым словом (Барак Обама), а остальные слова, последовательно выбранные алгоритмом MMR, должны были отличаться от исходного ключевого слова, а также отличаться от слов в существующий список до тех пор. Это гарантирует, что мы исключаем почти дубликаты, не выбирая их из-за критериев разнообразия. Также в алгоритме есть параметр для управления разнообразием.

И вы можете видеть, что вывод -

Барак Обама
— — — — — — — — — -›
Джон Маккейн
Джордж Буш
Сара Пэйлин
Билл Клинтон

Вы можете ясно видеть, что почти дубликаты, такие как «Барак Обама», «Джордж Буш-младший», «Джордж Буш», «Президент Обама», «Обама» и т. д., отфильтровываются и отсутствуют в окончательном выводе.

Заключение

Алгоритмы вектора слов можно использовать как средство для создания отвлекающих факторов (неправильных вариантов) для вопросов с множественным выбором при условии правильного ответа.

Но из-за неконтролируемого характера обучения, связанного с алгоритмами вектора слов, возвращается много похожих слов и почти дубликатов.

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

Из заданного набора возможных отвлекающих факторов мы можем эффективно выбрать четыре лучших различных ключевых слова/фразы, которые будут использоваться в качестве отвлекающих факторов для MCQ, используя алгоритм максимальной предельной релевантности (MMR).

Удачного изучения НЛП, и если вам понравился контент, не стесняйтесь найти меня в Твиттере.

Если вы хотите научиться современному НЛП с помощью трансформеров, ознакомьтесь с моим курсом Генерация вопросов с помощью НЛП.