Skip to content

Согласованность разметчиков: как её считать

Практическое руководство по согласованности разметчиков: процент совпадений, каппа Коэна и Фляйса, альфа Криппендорфа, когда что применять и как это показывает Potato.

Согласованность разметчиков (IAA) измеряет, как часто независимые разметчики дают одну и ту же метку. Это стандартное свидетельство того, что задача разметки сформулирована чётко, а полученным меткам можно доверять. Низкая согласованность обычно означает, что неясны инструкции, а не что разметчики небрежны.

Общая тема — надёжность оценок между экспертами. Potato считает согласованность вживую в админ-панели, см. контроль качества.

Почему сырого процента совпадений мало

Самая простая мера — процент совпадений: доля объектов, размеченных одинаково. Проблема в том, что часть совпадений случается по случайности. Если оба разметчика выбирают «положительно» в 90% случаев, они будут сходиться чаще всего, даже размечая наугад. Меры с поправкой на случайность это исправляют.

Коэффициент с поправкой на случайность имеет вид:

text
        P_observed − P_expected
  κ =  ─────────────────────────
            1 − P_expected

где P_observed — фактическое совпадение, а P_expected — совпадение, ожидаемое по случайности. Значение 1 — полное согласие, 0 — на уровне случайности.

Три коэффициента

  • Каппа Коэна: два разметчика, категориальные метки. Классический выбор для пары.
  • Каппа Фляйса: больше двух разметчиков, категориальные метки, когда разные объекты могут оценивать разные люди.
  • Альфа Криппендорфа: самый универсальный вариант. Работает с любым числом разметчиков, справляется с пропусками и поддерживает номинальные, порядковые, интервальные и относительные данные. Именно её Potato показывает по умолчанию.

Берите каппу для простых категориальных пар; тянитесь к альфе Криппендорфа, когда разметчиков много, пересечение неполное или метки упорядочены либо непрерывны (там, где «ошибся на единицу» должно весить меньше, чем «ошибся на четыре»).

Каппа Флейса или альфа Криппендорфа при трёх аннотаторах?

Если все три аннотатора разметили каждый элемент, а метки — неупорядоченные категории, годится любой из двух коэффициентов. Если хоть у одного элемента не хватает метки или метки упорядочены, используйте альфу Криппендорфа.

Они различаются допущениями:

  • Пропущенные метки. Каппа Флейса предполагает одинаковое число оценок у каждого элемента. Если один из трёх аннотаторов пропустил элемент, этот элемент придётся отбросить. Альфа Криппендорфа использует все имеющиеся оценки.
  • Шкала измерения. Каппа Флейса считает метки неупорядоченными, поэтому на шкале от 1 до 5 расхождение 4 и 5 весит столько же, сколько 1 и 5. Альфа Криппендорфа принимает метрику расстояния (номинальную, порядковую, интервальную или шкалу отношений) и считает близкие ответы меньшим расхождением.
  • Малые выборки. В альфу Криппендорфа встроена поправка на малые выборки, поэтому на пилоте из нескольких десятков элементов значения могут разойтись, даже если данные подходят для обоих.

На полных номинальных данных при разумном числе элементов значения обычно близки. Указывайте тот коэффициент, которого ждут в вашей области, и называйте в статье коэффициент и метрику: «согласованность составила 0,72» означает разное для каждого из них.

Potato считает альфу Криппендорфа. До версии 2.9 порядковая альфа для шкалы Лайкерта со словесными метками упорядочивала эти метки по алфавиту и на деле становилась номинальной. Если вы сообщали порядковую согласованность по шкалам со словесными метками, полученную в более ранней версии, пересчитайте её после обновления. Таблицу меток можно проверить и в браузере с помощью калькулятора согласованности: он считает номинальную, порядковую и интервальную альфу, а также каппу Коэна и каппу Флейса.

Как читать число

Универсального порога нет, но вот распространённый грубый ориентир для альфы и каппы:

  • ≥ 0,80: достаточно, чтобы на это опираться.
  • 0,67–0,80: годится для предварительных выводов; разберите расхождения.
  • < 0,67: пересмотрите инструкции, прежде чем доверять меткам.

Относитесь к этому как к поводу разобраться, а не как к пропускному экзамену. Всегда смотрите, какие объекты и какие метки создают расхождения.

Как измерить это в Potato

Пусть разметчики пересекутся на общем подмножестве, затем включите отчёт по согласованности:

yaml
agreement_metrics:
  enabled: true
  # Krippendorff's alpha is reported in the admin dashboard.

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

Что делать, когда согласованность низкая

  1. Прочитайте объекты, где мнения разошлись: неоднозначна инструкция или объект и правда сложный?
  2. Уточните определения и добавьте сложные случаи в примеры. См. Как писать инструкции для разметки.
  3. Проведите пилот заново. Если на действительно субъективных задачах согласованность остаётся низкой, подумайте о том, чтобы фиксировать само расхождение, а не выжимать единственный ответ.

Что почитать дальше