Упражнения Open-Cloze

Обработка естественного языка (NLP) за последние несколько месяцев продвинулась настолько быстро, что, просто запустив небольшой Jupyter Notebook, вы теперь можете получить ответы на грамматическое упражнение за секунды. Типичное экзаменационное упражнение для изучающих язык - закрытие или заполнение пробелов. Здесь ученик должен найти пропущенное слово, чтобы завершить фразу. Это идеальная задача для языковой модели; ведь вам нужно только правильно угадать следующее слово. Спойлер: вы можете получить более 80% этих упражнений, используя ИИ.

Кембриджские экзамены по английскому языку

Чтобы изучить использование НЛП в упражнениях открытого типа, я использовал несколько градуированных упражнений. Общеевропейские рамки владения иностранным языком (CEFR) - это международный стандарт для описания языковых способностей. Он оценивает языковые способности по шестибалльной шкале: от A1 для начинающих до C2 для тех, кто владеет языком. Cambridge English Qualifications предоставляют студентам образцы экзаменационных работ для подготовки к экзаменам и руководства для учителей в качестве ресурсов. Эти экзамены включают упражнения на открытое закрытие для студентов с уровнем выше среднего или выше (B2 First, C1 Advanced и C2 Proficiency). Задача слишком сложна для учеников с более низким уровнем английского языка; как правило, ученикам не нравится это упражнение, так как они чувствуют себя потерянными, не имея никаких подсказок, которые помогли бы им найти пропущенное слово. Подсказки, конечно же, находятся в окружающем тексте.

Перспективная модель (ULMFit от fast.ai)

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

‘Я работаю __ каскадером на мотоцикле, то есть делаю трюки на своем мотоцикле на выставках. Отсутствует слово ‘as’.

Для "Я работаю" языковая модель предсказывает наиболее вероятное следующее слово как 'с' (вероятность p = 0,14) и 'как' только с p = 0,03, поэтому выбор следующего предсказанного слова с наибольшей вероятностью не даст правильного ответа даже в этом простом примере.

Как насчет того, чтобы посмотреть вперед, чтобы увидеть, дает ли предсказание текста перед пробелом плюс слово, предсказанное для пробела, следующее слово ‘a’ в качестве предсказания? Для «Я работаю с» да, но только с вероятностью p = 0,04. «Я работаю как» имеет «а» в качестве прогноза с p = 0,78. Применение правила, согласно которому желаемое слово с наибольшей вероятностью встречается после пробела, предлагает в качестве ответа ‘as’. Итак, в этом примере этот подход к тестированию, чтобы увидеть, может ли слово, которое, по прогнозам, заполнить пробел, может быть заменено словом, стоящим после пробела, работает хорошо.

Однако это дерево решений выявляет проблему. Хотя менее вероятно, что «Я работаю с… / я работаю на… / я работаю над…» - все это верные ответы. Недостаточно просто смотреть на текст до пробела и первое слово после него. Тестирование этого подхода на образцах работ дало только около 45% правильных ответов. Недостаточно взглянуть на несколько слов до и первое слово после пробела; требуется больше контекста.

Глядя влево и вправо

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

Чтобы лучше понять, что такое BERT, послушайте подкаст Data Skeptic BERT - это волшебство.

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

Я работаю [как:] каскадером на мотоцикле - то есть я делаю трюки на своем мотоцикле на выставках. Гоночная трасса Ле-Ман во Франции была [где: где] я впервые увидел парней, выполняющих трюки на мотоциклах. Я никогда раньше не видел, чтобы кто-то ездил на мотоцикле, используя только заднее колесо, и я был [так: так] впечатлен, что пошел прямо домой и научил [себя: себя] делать то же самое. Прошло совсем немного времени, прежде чем я начал зарабатывать на жизнь выступлениями, выполняя свои собственные трюки на мотоцикле. Имею степень в области машиностроения; это помогает мне взглянуть на физику [что: ["which", "that"]] лежит в основе каждого трюка. Помимо того, что я отвечаю за конструктивные изменения мотоцикла, я должен работать [над: [‘out’, ‘on’, ‘at’]]] каждым трюком, который я выполняю. Люди часто думают, что моя работа очень опасна, но, помимо некоторых мелких механических проблем, которые иногда возникают во время трюков, ничего не выходит из строя. Я никогда не чувствую опасности [любой: любой], потому что я очень опытный.

BERT отлично справляется с этим упражнением. Результаты по семи образцам работ: B2 First, 1/2 по образцам фраз, 16/16 по тестовым фразам / C1 Advanced, 1/2, 13/16 / C2 Proficiency, 3/3, 17/24. Замечательно, что модель работает так хорошо (51/63 = 81%).

Если вместо запроса одного прогноза мы попросим модель предложить два варианта пропущенного слова и ожидаем, что ученик выберет правильное слово, тогда результаты улучшатся до 87% (55/63): B2 Во-первых, 1/2 на примере фраз, 16/16 на тестовых фразах / C1 Advanced, 1/2, 13/16 / C2 Proficiency, 3/3, 21/24.

Вот четыре примера, когда второе предсказание от BERT является правильным, все из одного текста о роботах:

1. Несмотря на то, что современные роботы являются сложными [['роботы', 'достаточно']: достаточно] для сборки автомобилей и оказания помощи во время сложных операций, они
2. немые автоматы, [['способные', 'неспособные']: неспособные] к установление отношений со своими людьми-операторами.
3. Инженеры утверждают, что по мере того, как роботы начинают превращать [['себя', 'вверх']: вверх] в большую часть общества, им потребуется способ взаимодействия с люди.
4. Главный вопрос заключается в следующем: что необходимо синтетическому компаньону, чтобы вы хотели взаимодействовать с ним [['in', 'with']: with] в течение длительного периода времени?

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

Хотя сложные роботы для сборки не имеет смысла, поэтому второй вариант лучше. Разговор о "тупых автоматах" - это отрицательное мнение, поэтому "неспособный" - лучший выбор, хотя программа просмотра Google N-gram показывает, что 'способна удара " встречается чаще, чем " неспособен нанести удар ".

Возможно, «сделать себя большей частью общества» грамматически правильно, но «составить большую часть общества» лучше. Если бы языковая модель была настроена на корпусе кембриджских текстов, она могла бы получить сильное предпочтение фразовым глаголам (Определение фразового глагола: идиоматическая фраза, состоящая из глагола и другого элемента, обычно либо наречия, как в разбить, или предлог, например see to, или их комбинацию, например смотреть сверху вниз.)

Хотя N-граммы Google показывают, что «участвуйте в этом» чаще, чем «участвуйте в этом», правильное выражение здесь - «взаимодействовать с» "синтетический компаньон".

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

И [["почему", "что"]: почему] они должны хотеть этого? [['после', 'выше']: в конце концов, возможность отправлять и получать электронные письма с мобильного устройства означает, что они могут оставаться на связи с коллегами, друзьями и семьей, независимо от того, стоят ли они в очереди в 1. в супермаркете, выпив чашечку кофе в [['бизнес', 'планирование']: между]
2. встречами или убийством [['кто-то', 'люди']: время] перед полетом.

Первая ошибка, заключающаяся в предложении «на деловых встречах», а не «между встречами», является ошибкой, которую совершают даже носители языка. Во второй ошибке мы можем понять, почему ИИ получил такую ​​дурную репутацию, вместо того, чтобы предлагать «убить время», ИИ предлагает «убить кого-то» или если вы продвинетесь дальше 'убийство людей'. Это искусственный интеллект для вас, сдайте ему экзамен по английскому, и он поощряет убийство! Опять же, это отражение данных обучения. Если бы модель была адаптирована к кембриджскому стилю идиоматического, безопасного и мягкого языка, богатого фразовыми глаголами, который необходим для международных экзаменов, он, вероятно, не сделал бы этого предложения.

Телефоны и компьютеры уже показали [['степень', 'степень']: ['степень', 'степень']], в которой люди могут развивать отношения с неодушевленными электронными объектами.
3. Дальнейшие исследования [['дальше', 'дальше']: ['вперед', 'вперед']],

Здесь я не знаю, почему модель предлагает «смотреть дальше», это даже не отображается в N-граммах Google. «Заглядывать в будущее» - лучший ответ.

В образце бумаги C1 Advanced есть три ошибки:

  1. эта жизнь может казаться очень пугающей [[«несколько», «несколько»]: в]
    раз.
  2. Очевидно, многие люди, столкнувшиеся с [[‘social’, ‘климат’]: [‘with’, ‘by’]]
    реагируют на изменения, рассматривая два возможных варианта действий,
  3. Что-нибудь простое, [[‘or’, ‘and’]: например]
    другой маршрут на работу

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

Возможные варианты использования

Какова цель этого упражнения? Моей главной мотивацией было использовать НЛП в области, в которой у меня есть некоторый опыт. То, насколько хорошо BERT справляется с задачей, показывает, что этот код может помочь студентам, изучающим, как лучше всего подготовиться к этому упражнению. Это также может быть полезно для людей, готовящих упражнения этого стиля для учеников, подчеркивая, где есть двусмысленность в возможных ответах. Двусмысленность на уровне владения C2 является желательной чертой, так как на этом уровне студенты должны иметь возможность взвесить возможные ответы и выбрать лучший, будучи уверенными в том, что они находятся в мире экзаменов по английскому, а не во вселенной языка. примеры, используемые для обучения BERT. К счастью, этот код не поможет студентам обманывать кембриджские экзамены, поскольку все электронное оборудование запрещено. Вас даже попросят снять этикетку с пластиковой бутылки с водой.

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

Технический материал

Изначально я пробовал использовать форвардную модель ULMFit с сайта f ast.ai, доработанную на предложениях MultiNLI. Эта модель обладает множеством прекрасных качеств, особенно для классификации, но не лучше всего подходит для предсказания текста.

Курс fast.ai NLP от Рэйчел Томас - отличное введение в НЛП, которое делает эту область более понятной и дает вам хорошую основу для самостоятельного изучения использования НЛП.

Мой код, используемый с предварительно обученной моделью BERT, доступен в одной короткой записной книжке Jupyter под управлением Python 3.

HuggingFace щедро предоставил предварительно обученную модель BERT и советы по ее развертыванию.

BERT: предварительная подготовка глубоких двунаправленных преобразователей для понимания языка

РЕДАКТИРОВАТЬ: 25 сентября 2019 г. Сегодня, когда объявлено AllenNLP Interpret, теперь вы можете заставить BERT выполнять эти упражнения за вас онлайн по адресу https://demo.allennlp.org/masked-lm