Дан список словарей с разметкой задач людьми. В каждом элементе есть:
task_id: id задачи;worker_id: id разметчика, в этой задаче он не нужен;label: выставленный label, например relevant, not_relevant, irrelevant.Нужно вернуть словарь task_id -> majority_label, где majority_label - самый частый label для этой задачи.
Если у задачи несколько labels набрали одинаковое максимальное число голосов, верните тот label, который встретился первым среди записей этой задачи. Это детерминированная версия интервьюерского "можно выбрать любой".
def majority_gold(rows: list[dict[str, str]]) -> dict[str, str]:rows = [{"task_id":"t1","worker_id":"w1","label":"relevant"},{"task_id":"t1","worker_id":"w2","label":"not_relevant"},{"task_id":"t1","worker_id":"w3","label":"relevant"},{"task_id":"t2","worker_id":"w1","label":"irrelevant"},{"task_id":"t2","worker_id":"w2","label":"irrelevant"}]{"t1":"relevant","t2":"irrelevant"}Обычный majority vote по двум задачам
rows = [{"task_id":"tie","worker_id":"w1","label":"cat"},{"task_id":"tie","worker_id":"w2","label":"dog"}]{"tie":"cat"}Tie-break: первый label среди записей задачи
rows = [{"task_id":"a","worker_id":"w1","label":"yes"},{"task_id":"b","worker_id":"w2","label":"no"},{"task_id":"a","worker_id":"w3","label":"yes"},{"task_id":"b","worker_id":"w4","label":"yes"},{"task_id":"b","worker_id":"w5","label":"yes"}]{"a":"yes","b":"yes"}Несмежные записи одной задачи