Open Aktsvigun opened 2 years ago
Ссылка на репозиторий: https://github.com/kovvalsky/LangPro
LangPro берёт множество предпосылок и гипотезу, после чего доказывает семантическую связь между ними.
Analytical Tableaux - метод для проверки, что множество высказываний в логике высказываний ложно. Смысл в том, что по утверждениям строится дерево, где корень - исходное множество. Далее можно взять любое утверждение на пути от корня до листа и к листу добавить:
LLF (Lambda Logical Forms) - Выражение для лямбда-исчисления с лексическими терминами.
Natural Tableau - Analytical Tableaux, но для естественной логики со своими правилами исчисления и вершинами. Вершины - это четвёрка (модификаторы, LLF, список аргументов, T или F).
CCG (Combinatory Categorical Grammar) - Дерево, описывающее предложение. В каждой вершине указана часть предложения и её тип (существительное, предложение, подлежащее, ...)
Сначала LLFGenerator чистит полученное CCG дерево:
Затем "LLFs are obtained from corrected CCG terms by type-raising QNPs from np to the type (vp, s) of generalized quantifiers."
Он состоит из четырёх компонент, которые захардкожены:
Датасет | Ссылка на репозиторий | Описание |
---|---|---|
SICK | https://zenodo.org/record/2787612 | NLI датасет + gold label + gold score - насколько предложения похожи от 1 до 5. В пары входили: очищенное от времён и прочего предложение + схожее, очищенное + противоположное, очищенное + обратное. |
FraCaS | ftp://ftp.cogsci.ed.ac.uk/pub/FRACAS/del16.ps.gz Это ссылка на статью, в статье инструкция |
Фреймворк для 346 задач на следствие в NLP. |
На FraCas, на секциях, где обычно оценивают модель, accuracy получается 87%.
Результаты SICK указываю прямо из статьи. SOTA - это SOTA модели до 2017 года.
Модель | accuracy |
---|---|
SOTA | 81-87% |
LangPro | 82.1% |
Human | 84% |
Ссылка на репозиторий: https://github.com/ShannonAI/Self_Explaining_Structures_Improve_NLP_Models
Авторы замечают, что обычная NLP модель не имеет интерпретируемости, то есть мы не знаем, почему модель выбрала именно такой вариант.
Есть решения в виде специальных интерпретационных моделей, но они отделены от исходной => модель не обучается с помощью самообъяснения (self-explaining) + интерпретация получается такая себе. Также интерпретационные модели хорошо объясняют поведение на отдельных словах, но плохо на предложениях, абзацах и на полных текстах.
Авторы создали специальный слой интерпретации, который можно добавить к любой NLP модели сразу перед Softmax. Он обеспечивает в обучении самообъяснение => улучшается качество итоговой модели.
Датасет | Ссылка на репозиторий | Описание |
---|---|---|
SNLI | https://nlp.stanford.edu/projects/snli https://huggingface.co/datasets/snli |
NLI датасет + для каждой пары есть пять аннотаторов + есть деревья синтаксиса предложений |
SST-5 | https://nlp.stanford.edu/sentiment/index.html https://huggingface.co/datasets/SetFit/sst5 |
Аналог IMDB: По отзыву на фильм нужно оценить его окраску от 0 (very negative) до 4 (very positive) |
NeuralLog: Natural Language Inference with Joint Neural and Logical Reasoning
Ссылка на репозиторий: https://github.com/eric11eca/NeuralLog
Обзор
Статья посвящена NLI. Задача NLI - по утверждению и гипотезе сказать связь между ними.
Авторы предлагают объединить DL подход (нейронки) с символическим подходом (эвристики, логика, поиск путей).
Схема работы
Утверждение и гипотеза попадают в аннотатор полярности (polarity annotator), в статье используется Udep2Mono. Там все слова поляризуются и представляются в виде дерева зависимостей.
Дерево зависимостей (universal dependency tree) - это дерево над предложением, где каждая вершина охватывает отрезок предложения и говорит, что это за часть предложения.
Поляризация - это назначение слову или части предложения полярности трёх видов:
Предложение проверяют на противоречивость с помощью переходов к противоречию - "я иду" → "я не иду". Если получается гипотеза, то модель говорит contradiction.
Предложение переделывают в другое с помощью какой-то операции inference. Всего возможных операций inference три типа:
Разумеется, возможно много вариантов операции, и многие из них бесполезны. Для выбора полезных используется Sentence Inference Controller.
Если получили гипотезу, то возвращает entail. Иначе для нового предложения считается расстояние его эмбеда до эмбеда гипотезы и эта пара кладётся в очередь с приоритетами.
Берётся предложение с наименьшим расстоянием, после чего переходим к шагу 2.
Если модель ничего не вернула (скажем, прошло много раундов), то neutral.
Используемые датасеты:
NLI датасет - это датасет с:
Результаты