В проекте RussianGLUE оценка общего понимания языка начинается с набора тестов, отражающих различные языковые явления - Диагностического датасета. Этот набор оценивает понимание предложения через проблему причинно-следственных связей - Natural Language Inference (NLI).
Задача NLI хорошо подходит для диагностики универсальных трансформеров, поскольку тесты на логический вывод могут также дополнительно требовать обладания широкого круга навыков, связанных с общим пониманием языка, - от разрешения синтаксической неоднозначности до рассуждений, при этом обеспечивая простую систему оценки (правильно/неправильно).
На этой странице мы рассмотрим компоненты диагностического корпуса и рассмотрим разницу результатов на исходном наборе данных (английский язык) и русском переводном датасете.
Набор тестов на русском языке полностью совместим с исходным английским набором диагностических данных:https://super.gluebenchmark.com/diagnostics
Набор состоит из нескольких сотен пар предложений, размеченных соответствующими отношениями (есть логическое следствие - "entailment" или нет логического следствия - "not_entailment"), а также дополнительными метками различных лингвистических явлений, присутствующих в примерах.
Оригинальный английский датасет был создан вручную авторами GLUE и включает тексты из нескольких различных источников, включая новости, научные и энциклопедические тексты и социальные сети. Представленый здесь русский датасет - полный переводной аналог английского.
Пары предложений составлены так, что каждое предложение в паре очень похоже на другое, чтобы усложнить задачу для систем, которые полагаются на простые лексические признаки и статистику.
Разметка лингвистических явлений включает как высокоуровневые, так и низкоуровневые категории. К высокоуровневым категориям относятся лексическая семантика, структура предиката-аргумента, логика, знание и здравый смысл. Каждая из них имеет несколько подкатегорий для конкретных языковых явлений такого рода. См. Раздел «Linguistic Categorization»
Каждый пример теста в наборе диагностических данных имеет одинаковую структуру:
{
'sentence1': "Кошка сидела на коврике.",
'sentence2': "Кошка не сидела на коврике.",
'label': 'not_entailment',
'knowledge': '',
'lexical-semantics': '',
'logic': 'Negation',
'predicate-argument-structure': ''
}
где
Ниже мы будем рассматривать все разнообразие тегов и лингвистическую спецификацию.
В этом наборе тестов все примеры также обогащены двумя конкретными тегами:
Эти теги добавлены для дальнейшего удобства анализа - предлагаем использовать его при оценке вашей собственной модели [ссылка на код]
импорты необходимых библиотек
import pandas as pd
import warnings
warnings.simplefilter('ignore')
%matplotlib inline
import seaborn as sns
import matplotlib.pyplot as plt
#графики в svg выглядят более четкими
%config InlineBackend.figure_format = 'svg'
#увеличим дефолтный размер графиков
from pylab import rcParams
rcParams['figure.figsize'] = 8, 5
import pandas as pd
Английская модель - bert-large-cased, обучена на RTE.
Русская модель - DeepPavlov/rubert-base-cased-conversational, обучена на русском RTE (короткая версия в 2000 примеров)
rus_df = pd.read_csv('AX-b-rus-pred.csv', index_col = 'idx').fillna('')
en_df = pd.read_csv('AX-b-en-pred.csv', index_col = 'idx').fillna('')
print('Russian accuracy: ', round(rus_df.equal.sum()/rus_df.shape[0],3))
print('English accuracy: ', round(en_df.equal.sum()/en_df.shape[0],3))
print('\nEntailment percent (label)', round(rus_df.label.value_counts()['entailment']/rus_df.shape[0],3))
print('Entailment percent (Russian)', round(rus_df.prediction.value_counts()['entailment']/rus_df.shape[0],3))
print('Entailment percent (English)', round(en_df.prediction.value_counts()['entailment']/en_df.shape[0],3))
en_df.head()
rus_df.head()
= Причинно-следственная связь, логиический вывод, Natural Language Inference
Источники
В целом, мы рассматриваем проблему NLI на базе суждения о том, что среднестатистический читатель может посчитать явным после прочтения предпосылки, без учета возможной прагматики примеров. Неизбежно появление множества случаев, которые не являются чистыми, буквально очевидными, но мы хотим создать системы, которые будут способны делать те же выводы, что и люди. Это особенно справедливо в случае задачи целеполагания на основе "здравого смысла" (commonsense reasoning), который часто опирается на возможный логический вывод. Мы стараемся исключить из данных сомнительные случаи и не используем никаких предложений, которые не являются грамматическими или семантически некорректными. В общем случае, используются стандарты, установленные в RTE Challenges, а также рекомендациями MultiNLI.
В каждой паре предложений (предпосылка и гипотеза), мы помечаем их одним из двух зависимых отношений:
Not Entailment: гипотеза утверждает что-то, что может быть правильным или определенно неверным в отношении ситуации/события в предпосылке.
Эти определения по существу совпадают с теми, что были предоставлены разметчикам корпуса тестов MultiNLI. Создатели полагаются на предположение, что два предложения описывают одну и ту же ситуацию. Однако "ситуация" может включать несколько участников и действий, и степень детализации, при которой мы просим описанные ситуации быть одинаковыми, является несколько субъективной.
#English data
en_df['label'].value_counts()
# Examples - Entailment
index = 3
d = en_df[en_df['label']=='entailment'].iloc[index].to_dict()
print('English Entailment:\n')
print(d['sentence1'])
print(d['sentence2'])
print('\nRussian Entailment:\n')
d = rus_df[rus_df['label']=='entailment'].iloc[index].to_dict()
print(d['sentence1'])
print(d['sentence2'])
# Examples - Not Entailment
index = 3
d = en_df[en_df['label']=='not_entailment'].iloc[index].to_dict()
print('English - Not Entailment:\n')
print(d['sentence1'])
print(d['sentence2'])
print('\nRussian - Not Entailment:\n')
d = rus_df[rus_df['label']=='not_entailment'].iloc[index].to_dict()
print(d['sentence1'])
print(d['sentence2'])
Аспекты значения слов
en_df['lexical-semantics'].value_counts()
Причинно-следственное отношение может быть выражено не только на уровне предложения, но и на уровне лексики. Например, мы говорим, что "собака" лексически влечет за собой "животное", потому что все, что является собакой, также является животным, а "собака" лексически противоречит "кошке", потому что невозможно быть одновременно обоими. Это относится ко всем частям речи (существительные, прилагательные, глаголы, многие предлоги и т. Д.), И взаимосвязь между лексическим и предложенным влечением была глубоко изучена, например, в системах естественной логики. Эта связь часто зависит от монотонности в языке, поэтому многие примеры Lexical Entailment также будут помечены одной из категорий Monotone, хотя мы не делаем этого в каждом случае.
Falcon Heavy это самая маленькая ракета со времён ракеты-носителя NASA "Сатурн V", которая использовалась для полет на Луну в 1970-е годы.
Falcon Heavy это самая большая ракета со времён ракеты-носителя NASA "Сатурн V", которая использовалась для полет на Луну в 1970-е годы.
Это особый случай лексического противоречия, когда одно слово деривировано издругого: от доступного до недоступного, "пропорциональный" - "диспропорциональный" и т.д. Мы также включаем в эти примеры "когда" и "никогда". Мы также помечаем такие примеры как «Отрицание» или «Двойное отрицание», поскольку они могут рассматриваться как включающие логическое отрицание на уровне слов.
{% trans 'Brexit is a reversible decision, Sir Mike Rake, the chairman of WorldPay and ex-chairman of BT group, said as calls for a second EU referendum were sparked last week.
Brexit is an irreversible decision, Sir Mike Rake, the chairman of WorldPay and ex-chairman of BT group, said as calls for a second EU referendum were sparked last week.' %}
Пропозиции, появляющиеся в предложении, могут быть в любом причинно-следственном отношении в предложении, в зависимости от контекста, в котором они появляются.
Все спичи – это политические публичные выступления.
Джоан сомневается, что все спичи – это политические публичные выступления.
Во многих случаях это определяется лексическими триггерами (обычно глаголами или наречиями) в предложении. Например,
Некоторые предложения обозначают симметричные отношения, а другие нет; например,
Для примеров с симметричными отношениями действует правило, что их часто можно перефразировать, собирая оба аргумента в одну именную группу:
"Джон встретил Гари" влечет за собой "Джон и Гари встретились"
Является ли отношение симметричным, часто определяется по вершине группы - глаголу (например, "жениться" или "встречать"), поэтому мы классифицируем это явление в рамках лексической семантики.
Республиканские законодатели просят президента Трампа воспользоваться противоречиями в структуре Белого дома в качестве основы для предстоящих дебатов Сената об иммиграционной политике.
Президент Трамп попросит республиканских законодателей воспользоваться противоречиями в структуре Белого дома в качестве основы для предстоящих дебатов Сената об иммиграционной политике.
Если слово может быть удалено из предложения без изменения его значения, это означает, что значение слова было более или менее адекватно выражено предложением. Выявление таких случаев отражает понимание как лексической семантики, так и семантики всего предложения.
Том и Адам громко шептались в театре.
Том и Адам шептались в театре.
Слова часто называют сущности, которые существуют в мире. Есть много разных видов понимания, которые мы могли бы хотеть понять об этих именах, включая их композиционную структуру (например, "полиция Балтимора" - то же самое, что и "полиция города Балтимор") или их референты и аббревиатуры (например, "SNL" - это «Субботний вечер в прямом эфире». Эта категория тесно связана со знанием о мире, но фокусируется на семантике имен как лексических элементов, а не на базовых знаниях об их их денотатах.
Стороны пришли к соглашению после их встречи в Европе.
Стороны пришли к соглашению после их встречи в Стокгольме.
Количественное определение на естественном языке часто выражается через лексические триггеры, такие как каждый, большинство, некоторые и нет. Хотя мы резервируем категорию "Квантификация и Монотонность" для причинно-следственных связей, связанных с операциями над этими квантификаторами и их аргументами, мы решили рассматривать взаимозаменяемость квантификаторов как вопрос лексической семантики.
Рассмотрим все слова из контекста как положительные примеры – и много негативных наугад из словаря.
Рассмотрим некоторые слова из контекста как положительные примеры – и несколько негативных наугад из словаря.
Когда мы понимаем структуру предложения, часто появляется базовый набор небольших выводов, которые можно сделать с помощью логических операторов. Существует развитая традиция моделирования семантики естественного языка с использованием математических инструментов логики. Действительно, развитие математической логики первоначально было связано с вопросами о значении естественного языка, от аристотелевских силлогизмов до символов Фреге. Понятие причинно-следственной связи также заимствовано из математической логики. Поэтому неудивительно, что логика играет важную роль в языковом выводе.
en_df['logic'].value_counts()
Отрицание, Двойное отрицание, Конъюнкты, Дизъюнкты, Условные конструкции
Все основные операции логики высказываний появляются в естественном языке, и мы помечаем их там, где они соответствуют нашим примерам:
Отрицание: "Кот сидит на коврике" противоречит "Кот не сидит на коврике."
Когда у вас есть снег, очень сложно обучиться зимним видам спорта, так что мы искали все способы изучить без снега то, что я мог бы потом повторить на снегу.
Когда у вас нет снега, очень сложно обучиться зимним видам спорта, так что мы искали все способы изучить без снега то, что я мог бы потом повторить на снегу.
Двойное отрицание: На рынке невозможно не ориентироваться, влечет за собой "На рынке можно ориентроваться".
Рынок станет сложнее, но на нём будет возможно ориентироваться.
Рынок станет сложнее, но на нём не будет невозможно ориентироваться.
Конъюнкция: Температура и консистенция снега верны, значит и утверждение "температура верна" истино.
Пациент несёт часть ответственности за успех лечения.
Оба, и врач и пациент, несут часть ответственности за успех лечения.
Дизъюнкция: "Жизнь - это либо смелое приключение, либо ничто", включает "Жизнь - это смелое приключение", но не означает утверждение "Жизнь - ничто".
Они слепо доверяют партнёрам.
Реализуется одна из двух ожидаемых возможностей: либо они слепо доверяют партнёрам, либо у них конфликт интересов.
Условные конструкции: Условные конструкции немного сложнее, потому что их использование в языке не всегда отражает их значение в логике. Например, они могут использоваться на более высоком уровне, чем утверждение по вопросу: "Если вы думаете об этом, это идеальная тактика обратной психологии" влечет за собой "Это идеальная тактика обратной психологии"
У Педро нет ослов.
Если у Педро нет ослов, он не может их бить.
Универсальные, экзистенциальные Квантификаторы часто выражаются такими словами, как все, некоторые, многие и нет. Существует множество работ, моделирующих их значение в математической логике с помощью обобщенных квантификаторов. В этих двух категориях мы фокусируемся на прямых выводах из естественных языковых аналогов универсальной и экзистенциальной квантификации:
Универсальные: Утверждение "У всех попугаев есть два крыла" влечет за собой, "Мой попугай имеет два крыла", но обратно не применимо.
Ни у кого нет набора жизненных принципов.
У каждого свой набор жизненных принципов.
Экзистенциальные: Утверждение "У некоторых попугаев есть два крыла", не значит, что "Мой попугай имеет два крыла".
Никто не знает, как размножаются черепахи.
Сьюзен знает, как размножаются черепахи.
Восходящая монотонность, Нисходящая монотонность, Немонотонность
Монотонность - это свойство позиций аргументов в определенных логических системах. В общем, это дает способ выведения причинно-следственных отношений между выражениями, которые отличаются только одним подвыражением. В языке это может объяснить, как некоторые выводы распространяются через логические операторы и квантификаторы. Например, обратите внимание, что "домашнее животное" влечет за собой "домашнюю белку", что влечет за собой "счастливую домашнюю белку". Мы можем продемонстрировать, как квантификаторы ∅, нет и ровно один отличаются по монотонности:
Во всех этих примерах домашняя белка появляется в том, что мы называем ограничителем положения квантификатора. Мы говорим: ∅ является восходяще монотонным в своем ограничителе: следствие в ограничителе приводит к следствию всего утверждения. нет - нисходяще монотонный в своем ограничителе: следствие в ограничителе приводит к обратному следствию всего утверждения. ровно один является немонотонным в своем ограничителе: следствие в ограничителе не приводят к следствию всего утверждения.
Таким образом, следствия между предложениями, которые строятся из следствий подфраз, почти всегда полагаются на суждения монотонности. Однако, поскольку это такой общий класс пар предложений, для сохранения значимости логической категории мы не всегда помечаем эти примеры монотонностью. Для аналогии - эти типы монотонности тесно связаны с ковариацией, контравариантностью и инвариантностью аргументов типов в языках программирования с подтипами.
Интервалы/Числа, Время Есть некоторые аспекты рассуждения более высокого уровня, которые традиционно моделировались с использованием логики; они включают в себя математические рассуждения, зависящие от чисел, и временные рассуждения.
Интервалы/Числа:"Я выпил больше двух бутылок сегодня вечером", подразумеват "Я выпил больше одной бутылки"
Я не достиг своих целей в 1995 году.
Я не могу достичь своих целей каждый год, начиная с 1997, а сейчас 2008.
Время"Мэри ушла до того, как вошел Джон", влечет за собой "Джон вошел после того, как Мэри ушла".
Джон вошёл после того, как Мэри ушла.
Мэри ушла до того, как Джон вошёл.
Важным компонентом понимания значения предложения является понимание того, как его части составлены в единое целое. В этой категории мы решаем проблемы по всему спектру, от синтаксической неоднозначности до семантических ролей и кореференции.
en_df['predicate-argument-structure'].value_counts()
Эти две категории имеют дело исключительно с разрешением синтаксической неоднозначности. Относительные клаузы и координационная сфера являются источниками значительной неопределенности в русском и английском языке.
Мао был председателем Коммунистической партии с момента её прихода к власти в 1949 году и до своей смерти в 1976 году.
Этот шаг знаменует конец системы, созданной Дэн Сяопином в 1980-х годах, чтобы предотвратить появление очередного Мао, который был председателем Коммунистической партии с момента её прихода к власти в 1949 году и до своей смерти в 1976 году.
Связь предложной группы является особенно трудной проблемой, с которой синтаксические парсеры продолжают бороться. Мы рассматриваем это как проблему как синтаксиса, так и семантики, поскольку предложные группы могут выражать широкий спектр семантических ролей и часто семантически применяются за пределами их прямой синтаксической связи.
В воскресенье у Джейн была вечеринка.
У Джейн была вечеринка в воскресенье.
Глаголы управляют конкретными аргументами, особенно субъектом и объектом, которые могут быть взаимозаменяемыми в зависимости от контекста. Одним из примеров является эргативное чередование:
Другие перестановки основных аргументов, такие как в Symmetry / Collectivity, также попадают под метку Core Arguments.
Чередования: активный/пассивный залог, генитив/партитив, номинализация, дативные конструкции
Все четыре из этих категорий соответствуют синтаксическим изменениям, которые, как известно, следуют определенным шаблонам на английском языке:
Часто аргумент глагола или другого предиката в тексте опускается (исключается), а читатель заполняет пробел сам. Мы можем построить примеры причинно-следственной связи, явно заполнив пробел правильными или неправильными соответствиями. Например:
Кореференция относится к тем случаям, когда несколько выражений ссылаются на одну и ту же сущность или событие. Он тесно связан с анафорой, где значение выражения зависит от другого (предшествующего) выражения в контексте. Эти явления имеют значительное совпадение, например, с местоимениями (она, мы, оно), которые являются анафОрами, которые ссылаются на свои антецеденты. Тем не менее, они также могут возникать независимо, например, корреляция между двумя определенными именными фразами (например, Тереза Мэй и премьер-министр Великобритании), которые относятся к одной и той же сущности. В эту категорию мы включаем только случаи, когда есть явная фраза (анафорическая или нет), которая совпадает с предшествующей или другой фразой. Мы создаем примеры для них почти так же, как и для категории эллипсиса.
Джордж упал в воду.
Джордж пошел к озеру, чтобы поймать рыбу, но упал в воду.
Многие модификаторы, особенно прилагательные, допускают неинтерсективные употребления, которые влияют на их поведение в причинно-следственных связях. Например:
Неинтерсектвность: "он фальшивый хирург" не влечет за собой "он хирург"
Как правило, интерсективное использование модификатора, как "пожилой" у "пожилых людей", является тем, которое можно интерпретировать как обращение к набору сущностей с обоими свойствами (они пожилые и являются людьми). Лингвисты часто формализуют это, используя пересечение множеств, отсюда и берется название. Явление связано с фактивностью; например, подделка может рассматриваться как противоположный модификатор, и эти примеры будут помечены как таковые. Однако мы решили классифицировать интерсективность в структуре предикат-аргумент, а не в лексической семантике, потому что, как правило, одно и то же слово допускает как интерсективное, так и неинтерсективное употребление, поэтому интерсективность можно рассматривать как неоднозначность аргументной структуры.
Рестриктивность чаще всего используется для отсылки на свойство использования модификаторов существительных; в частности, рестриктивное использование модификатора - это такое использование, которое служит для идентификации описываемого объекта, тогда как нерестриктвное использование добавляет дополнительные детали к идентифицированному объекту. Различие часто может быть подчеркнуто последствиями:
Модификаторы, которые обычно используются нерестриктивно - это аппозитивы, относительные предложения, начинающиеся с того или иного (хотя они могут быть ограничительными, несмотря на то, что ваш учитель английского может вам сказать), и ругательства (например, надоедливые). Тем не менее, неограничительное использование может появляться во многих формах.
Неоднозначность в рестриктивности часто используется в определенных видах шуток.
Строго говоря, мировое знание и здравый смысл требуются на каждом уровне понимания языка для устранения неоднозначности смыслов слова, синтаксических структур, анафоры и многого другого. Таким образом, весь наш набор тестов в некоторой степени проверяет эти функции. Тем не менее, в этих категориях мы собираем примеры, в которых обоснование основывается не только на правильном устранении неоднозначности предложений, но и на применении дополнительных знаний, будь то конкретные знания о мировых делах или более обыденное знание о значениях слов, социум или физическая динамика.
en_df['knowledge'].value_counts()
В этой категории мы концентрируемся на знаниях, которые могут быть четко выражены в виде фактов, а также на более широких и менее распространенных географических, правовых, политических, технических или культурных знаниях. Примеры:
В этой категории мы концентрируемся на знаниях, которые труднее выразить в виде фактов, и от которых мы ожидаем, что большинство людей будут обладать ими независимо от культурного или образовательного уровня. Это включает в себя базовое понимание физического и социального взаимодействия, а также лексического значения слов (помимо простого лексического вывода или логических отношений). Примеры:
print('Russian accuracy: ', round(rus_df.equal.sum()/rus_df.shape[0],3))
print('English accuracy: ', round(en_df.equal.sum()/en_df.shape[0],3))
print('\nEntailment percent (label)', round(rus_df.label.value_counts()['entailment']/rus_df.shape[0],3))
print('Entailment percent (Russian)', round(rus_df.prediction.value_counts()['entailment']/rus_df.shape[0],3))
print('Entailment percent (English)', round(en_df.prediction.value_counts()['entailment']/en_df.shape[0],3))
Точность русской модели выше, чем у английской. К тому же распределение лейблов русской модели (38,1% Entailment) также значительной ближе к оригинальному (41,6% Entailment), чем у английской (78,4%).
У английской модели наблюдается значительный перекос в сторону Entailment, он предсказывается почти в два раза чаще, чем нужно. У русской модели такого не наблюдается, даже наоборот она немного недобирает Entailment.
Вывод распределение лейблов у русской модели намного ближе к оригинальному, соответственно и точность выше.
Далее русская и английская модели сравнивались между собой по трем признакам: logic, lexical-semantics и predicate-argument-structure. При этом для каждого признака при анализе были оставлены только те группы, в которых число примеров больше 10 (так как не вполне корректно считать статистиски при очень маленьком количестве примеров, они могут оказаться непоказательными и даже misleading).
def group_dataframe_by_label(df, label):
df_short = df[df.logic.isin(df[label].value_counts().head(13).index)]
df_short.equal = df_short.equal.map({False:0, True:1})
df_short.label = df_short.label.map({'not_entailment':0, 'entailment':1})
df_short.prediction = df_short.prediction.map({'not_entailment':0, 'entailment':1})
df_short['ss'] = [1] *df_short.shape[0]
res_df = df_short[[label,'equal','label','prediction', 'ss']].groupby(label).sum()
for col in ['equal', 'label', 'prediction']:
res_df[col] = res_df[col]/res_df.ss
res_df.sort_values('equal', ascending = False)
return res_df
res_df = group_dataframe_by_label(en_df, 'logic')
sns.heatmap(res_df[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)
sns.heatmap(group_dataframe_by_label(rus_df, 'logic')[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)
Логика
Русская модель значительно лучше справилась сNegation, Disjunction и Non-monotone, но совершенно просела на Double negation. Последнее, возможно связано с особенностями русского языка.
sns.heatmap(group_dataframe_by_label(en_df, 'lexical-semantics')[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)
sns.heatmap(group_dataframe_by_label(rus_df, 'lexical-semantics')[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)
Лексическая семантика
Русская модель намного лучше английской разобралась с Quantifiers и Factivity, но не справилась сMorphological negation и Named entities.
sns.heatmap(group_dataframe_by_label(en_df, 'predicate-argument-structure')[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)
sns.heatmap(group_dataframe_by_label(rus_df, 'predicate-argument-structure')[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)
Предикатно-аргументная структура
Из наиболее заметного, русская модель совершенно провалилась с Restrictivity в то время как английская модель показала неплохой результат.
sns.heatmap(group_dataframe_by_label(en_df, 'knowledge')[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)
sns.heatmap(group_dataframe_by_label(rus_df, 'knowledge')[['equal', 'label', 'prediction']].rename(columns = {'equal':'correct_pred'}), annot=True)