Skip to content

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

Notifications You must be signed in to change notification settings

ivbelkin/AGRR_2019

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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. Итоговые предикты были получны одной сетью.

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages