OpenRefine: как привести метки говорящих в расшифровке к единому виду
Очистка таблицы реплик в OpenRefine: исходные обозначения, текстовый фасет, проверка кластеров и выгрузка без потери интервью и таймкодов.
Отделите исправление метки от определения говорящего
В таблице интервью один голос может быть обозначен У01, У1 и «участник 1». Иногда это разные записи одного человека в пределах разговора, иногда — разные люди или технические ошибки. OpenRefine помогает обнаружить варианты текста; он не устанавливает, кому принадлежит голос.
После получения расшифровки аудио подготовьте рабочую таблицу реплик. Добавьте поля interview_id, time_original, speaker_raw, speaker_clean и text. В speaker_raw сохраните исходное обозначение, в speaker_clean — его рабочую копию. Текст и время в этом проходе не исправляйте вместе с метками.
Идентификатор участника рассматривайте вместе с интервью. У01 в I01 и У01 в I02 не обязаны быть одним человеком. Если нужна аналитика по источникам, используйте пару interview_id + speaker_clean. Иначе очистка одинаковых строк создаст ложную общую личность для разных разговоров.
Для проверки принадлежности реплики используйте правила разделения текста по спикерам. В этой статье рассматривается последующий технический шаг — одинаковое написание уже проверенных обозначений, а не распознавание людей по сходству имён.
Загрузите таблицу и проверьте её структуру
В OpenRefine откройте Create Project, выберите подготовленный CSV или TSV и перейдите к предварительному просмотру. Проверьте разделители, заголовки и кириллицу. Несколько реплик с запятыми не должны распасться на дополнительные столбцы.
Начните с небольшого образца. Сверьте ID интервью, время и конец длинной реплики. Если текст оказался в нескольких строках, выясните, связано ли это с переносами внутри ячейки или с неправильным чтением файла. Не продолжайте очистку таблицы, структура которой уже нарушена при загрузке.
OpenRefine создаёт собственный проект и не изменяет первоначальный источник. Это удобно для сравнения результатов: сохраните исходный файл отдельно и обозначьте версию проекта, например speakers_cleanup_v01. Не считайте возможность отмены заменой контрольной копии.
Для каждого интервью подготовьте краткое соответствие обозначений. Например, «в I01 У1 и У01 — один участник, подтверждено по голосу; У02 — другой». Такое решение должно иметь основание в записи. Сходство двух строк в таблице само по себе основанием не является.
Найдите варианты через Text facet и проверьте объединения
Откройте меню рабочего столбца speaker_clean и выберите Facet → Text facet. Фасет показывает точные текстовые значения и их количество. Он не угадывает, какие похожие значения должны совпадать. Сначала просмотрите список: случайные пробелы и разные регистры часто видны сразу.
Для конкретного значения можно использовать edit в фасете; это изменяет все совпадающие ячейки. Поэтому заранее посмотрите, какие строки выбраны, и не применяйте общую замену к нескольким интервью, если в них действуют разные правила участников. Количество строк в фильтрованном представлении относится к выбранной части данных.
Для поиска похожих вариантов используйте Edit cells → Cluster and edit или кнопку Cluster в текстовом фасете. Программа предлагает группы, но изменения применяются только к одобренным объединениям. Сравнивайте каждую группу с таблицей соответствий, а сомнительные предложения оставляйте без объединения.
Метки У01 и У02 отличаются одним символом, но могут обозначать разных людей. Напротив, длинные строки «участник 1» и «У01» могут означать одного человека и не попасть в очевидную группу. Алгоритмическая похожесть полезна для обнаружения кандидатов, а не для окончательного решения.
Проверьте результат и полный состав выгрузки
После очистки снова откройте список значений speaker_clean. Проверьте, что остались ожидаемые обозначения и отдельная метка для неопределённых голосов. Сравните несколько строк каждого интервью с speaker_raw и записью.
Перед Export снимите активные фасеты и фильтры, если требуется весь набор. Официальная документация предупреждает: многие варианты экспорта с активными фасетами выгружают только совпадающие строки. Сравните число строк и набор interview_id в исходнике и итоговом файле.
Проверьте первую и последнюю реплики, несколько длинных текстов и строки с пустой или неопределённой меткой. После повторного открытия выгрузки кириллица, таймкоды и столбцы должны оставаться читаемыми. Уменьшение числа разных меток нормально; исчезновение интервью или реплик требует отдельного объяснения.
Зафиксируйте соответствия и причину каждого неоднозначного решения в журнале исправлений. Итогом этой работы является единый способ обозначения участников, а не вывод о частоте тем или достоверности их утверждений.
Учебный пример: похожие метки не всегда нужно объединять
Данные вымышлены. Для первых двух строк известно по записи, что это один участник I01; для других строк такого общего соответствия нет.
| Источник и исходная метка | Рабочая метка | Основание |
|---|---|---|
| I01 — У1 | У01 | Подтверждено: один участник в этом интервью. |
| I01 — У01 | У01 | Уже соответствует принятой схеме. |
| I01 — У02 | У02 | Другой голос; объединять с У01 нельзя. |
| I02 — У01 | У01 в I02 | ID имеет смысл вместе с интервью I02. |
| I02 — не определён | НЕОПРЕДЕЛЁН | Личность не установлена; нужна отдельная проверка. |
Если в итоговой таблице остались только строки I01, это может быть результатом выгрузки при активном фильтре, а не успешной очисткой всего проекта. Сначала сравните состав источников.
Протокол нормализации меток
Файл и версия таблицы: Проект OpenRefine: Исходное количество строк: Список interview_id: Интервью: Исходные варианты speaker_raw: Рабочая метка speaker_clean: Основание: проверка записи / принятое обозначение Что не объединять: Неопределённые голоса: Перед выгрузкой: Фильтры сняты: Количество строк совпадает: Все интервью присутствуют: Текст и таймкоды проверены: Дата и версия результата:
Частые вопросы
Можно ли объединить все похожие метки автоматически?
Похожесть текста не подтверждает одного говорящего. Просмотрите каждую предлагаемую группу и сверяйте её с конкретным интервью и записью.
Нужно ли менять исходный столбец?
Для проверяемой работы сохраняйте speaker_raw и изменяйте отдельный speaker_clean. Тогда видно, что именно исправлено, и легче восстановить неоднозначное решение.
Почему выгрузка содержит меньше реплик?
Проверьте активные фасеты и фильтры: многие экспортеры сохраняют только совпадающие строки. Для полного набора снимите ограничения и сравните количество строк и источников.
Одинаковый ID в двух интервью означает одного человека?
Только если такая связь установлена отдельно. Обычно обозначение имеет смысл внутри интервью; используйте ID источника вместе с ID участника.