Giter Club home page Giter Club logo

agrr_2019's Introduction

Winning solution of 'Automatic Gapping Resolution for Russian' track of 'Dialogue Evaluation 2019'

Results: https://github.com/dialogue-evaluation/AGRR-2019

Описание решения: Решаем как задачу тегирования токенов и классификации.

Описание архитектуры: Сетка получает токенизированое предложение, и для каждого токена дает пять вероятостей тегов: cV, cR1, cR2, R1, R2, а также одну вероятность для всего предложения - вероятность геппинга. Позиция(позиции) V восстанавливается после тегирования как начало R1 (если R2 не обнаружен), или как начало R2. В предложениях явно прослеживается не независимость порядка тегов. Для того, чтобы это учесть, на этапе постпроцессинга выходы сети используются как веса ребер в некотором графе(см. приложение, нужно еще представить, что каждое ребро разделяется на два тегом [None], соответствующим отсутствию тега, а также каждая вершина соединена сама с собой петлей). В этом графе ищется путь максимального веса, состоящий из фиксированного числа вершин (у меня - 128, что соответствует числу токенов, до которого дополняется или усекается каждое предложение (да, усечение может приводить к падению качества, но я не заметил сильных проблем из-за этого)).

Метод обучения: Обучаем по OneCyclePolicy. Один цикл в две эпохи - голову сети (классификатор + теггер). Два цикла в две эпохи - всю сеть. Еще два цикла по две эпохи - тоже всю сеть, но с меньшей максималной скоростью обучения.

Работа с данными. Объединяем train+dev. Делим на пять фолдов. На четырех обучаем, на одном валидируем, сохраняем по три чекпоинта. Итого 15 наборов весов. Далее считаем предсказания для add.csv с автоматической разметкой. И фильтруем это следующим образом: если предикты хотя бы одной сети совпали с разметкой для данного предложения, то его (такое предложение) добавляем в финальную обучающую выборку. Иначе, если предикты хотя бы 8 сетей совпали, то такое предложение тоже добавляем в обучающее множество, но разметку берем от сетей, а не из фаила. Так осталось ~95% исходных данных. Далее добавляем к ним train и обучаем, валидируясь на dev. Итоговые предикты были получны одной сетью.

agrr_2019's People

Contributors

ivbelkin avatar

Stargazers

 avatar  avatar

Forkers

gilmoright

agrr_2019's Issues

BERT fine-tuning

Можете рассказать насколько затратно дообучать BERT, что для этого надо (характеристики железа), насколько долго и т. д.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.