Сбор датасета для предотвращения суицидов: этика и методология ML в психотерапии | AiManual
AiManual Logo Ai / Manual.
16 Янв 2026 Гайд

Как мы собирали датасет для ML-инструмента, который спасает жизни: этический минное поле и методология, которая работает

Практический разбор сбора датасета для ML-инструмента по предотвращению суицидов. Этические ловушки, методология анонимизации, работа с психологами от команды П

Когда твой датасет может стоить кому-то жизни

Большинство ML-разработчиков думают о датасетах в терминах размера, баланса классов и качества разметки. Мы думали о том, можем ли мы вообще это делать. Потому что каждая строка в нашем датасете - это реальный человек, который мог не пережить следующий день. Это не классификация кошек и собак, где худшее, что случится - это падение accuracy на 2%.

Первый и главный вопрос, который мы задали себе: имеем ли мы моральное право собирать такие данные? Ответ был «нет». Пока мы не придумали, как это делать правильно.

Почему старые подходы не работают (и опасны)

Типичный путь: найти публичные посты в соцсетях, наклеить метки «суицидальные»/«не суицидальные», обучить модель. Звучит просто? Это рецепт катастрофы. Вот что происходит на практике:

  • Вы скрейпите посты человека, который написал «не могу больше» неделю назад. Сегодня он жив. Завтра - нет. Ваш алгоритм только что стал частью его истории.
  • Вы собираете контекст: комментарии друзей, реакцию сообщества. Неожиданно вы имеете не просто текст, а социальный граф чужой трагедии.
  • Ваша модель ошибается. Ложно-положительный результат - и вы навешиваете на здорового человека клеймо. Ложно-отрицательный - и пропускаете того, кому нужна помощь.

В проекте Пситехлаб мы начали не со сбора данных. Мы начали с юридического анализа и этического комитета. Потому что если ты собираешься работать с самыми уязвимыми людьми в самый тяжелый момент их жизни - твоя первая ответственность не перед accuracy, а перед ними.

Методология, которая не сломает психику (ни вашу, ни участников)

1 Источники: где брать данные, когда брать нельзя

Мы отказались от скрейпинга живых соцсетей. Вместо этого пошли тремя путями:

Источник Почему подходит Ловушки
Анонимные форумы психологической помощи Пользователи уже согласились на анонимную публикацию, есть модерация Тексты сильно отредактированы, мало контекста
Научные корпуса (уже собранные исследования) Этическое одобрение уже получено, данные очищены Маленький объем, специфический язык
Симуляция с психологами Полный контроль, можно создавать edge-кейсы Искусственность, дороговизна

Ключевой момент: мы работали только с данными, где было явное согласие на исследовательское использование. Да, это сократило потенциальный размер датасета в 10 раз. Но это единственный способ спать спокойно.

💡
Если вы думаете о похожем проекте - начните с поиска уже существующих этически чистых датасетов. Часто можно найти корпуса, собранные университетами для исследований. Это сэкономит месяцы переговоров с этическими комитетами.

2 Анонимизация, которая работает (а не просто удаление имен)

Удалить имя и фамилию - это уровень детского сада. Настоящая анонимизация выглядит так:

def deep_anonymize(text, custom_entities=None):
    """
    Глубокая анонимизация текста с учетом контекста
    """
    # 1. Удаляем имена, фамилии, ники
    text = remove_names(text)
    
    # 2. Заменяем локации на обобщенные (не "ул. Ленина, 15", а "улица в городе")
    text = generalize_locations(text)
    
    # 3. Обрабатываем временные метки (не "5 марта", а "в определенный день")
    text = obscure_dates(text)
    
    # 4. Удаляем уникальные детали, которые могут идентифицировать
    # ("работаю в единственной кофейне на районе" → "работаю в местном заведении")
    text = remove_identifying_details(text)
    
    # 5. Проверяем, остались ли пересечения с другими текстами
    # которые могут восстановить идентичность через кросс-референс
    text = check_cross_references(text, existing_corpus)
    
    return text

Но вот что интересно: слишком агрессивная анонимизация убивает смысл. Фраза «встретился с другом вечером после работы» после обработки превращается в «встретился с человеком в определенное время». Для ML-модели это уже другой текст.

Наш компромисс: многоуровневая анонимизация. Для обучения модели - умеренная очистка. Для хранения - максимальная. Для публикации датасета - только синтетические примеры на основе реальных паттернов.

3 Разметка: когда психолог важнее data scientist

Здесь мы совершили главную ошибку в начале. Думали: наймем 100 анонимных разметчиков на краудсорсинге, получим метки, обучим модель. Реальность ударила по лицу.

После 3 дней разметки один из наших разметчиков написал: «Я не могу продолжать. Каждый текст - это чья-то боль, а я просто ставлю галочки. Чувствую себя монстром». Мы остановили проект на неделю.

Новое правило: размечают только профессиональные психологи, прошедшие подготовку. Им платят не за количество текстов, а за время работы + обязательные супервизии (разбор сложных случаев с более опытным коллегой).

Методология разметки стала трехступенчатой:

  1. Первый психолог: оценка по шкале от 0 до 10 (где 10 - непосредственная угроза)
  2. Второй психолог: независимая оценка того же текста
  3. При расхождении >2 баллов - обсуждение на супервизии, консенсусная оценка

Да, это в 5 раз дороже краудсорсинга. Но согласованность оценок выросла с 65% до 89%. И главное - мы не сломали психику разметчикам. Кстати, некоторые инструменты из статьи про автоматизацию разметки датасетов нам помогли, но только на этапе предварительной фильтрации безопасных текстов.

Технические ловушки, о которых не пишут в учебниках

Классовый дисбаланс, который нельзя исправить oversampling

В обычных задачах ты берешь minority class и размножаешь. Здесь minority class - это тексты людей на грани. Размножать их синтетически? Создавать искусственные суицидальные мысли? Это этический провал.

Наше решение: многоуровневая классификация вместо бинарной. Вместо «суицид/не суицид» мы разметили 5 уровней:

  • 0: Нейтральный/позитивный контент
  • 1: Легкий стресс, повседневные трудности
  • 2: Выраженная депрессия, но без суицидальных мыслей
  • 3: Пассивные суицидальные мысли («иногда думаю, что всем было бы лучше без меня»)
  • 4: Активные суицидальные мысли или план

Так мы получили более сбалансированное распределение (уровни 0-2 встречаются часто) и сохранили важный сигнал в уровнях 3-4.

Контекст, который все усложняет

Одна и та же фраза в разном контексте значит разное. «Я устал» после марафона - это уровень 0. «Я устал» в посте о потере работы, разводе и одиночестве - это уже уровень 2-3.

Мы экспериментировали с разными подходами:

# Плохо: изолированные предложения
model.fit(sentences, labels)  # Теряем контекст

# Лучше: целые посты с историей
model.fit(posts_with_history, labels)  # Но как получить историю этично?

# Наше решение: контекстные окна с согласия
# Брали только связанные посты в рамках одного треда
# где автор явно вел диалог с собой или с другими
model.fit(thread_context, labels)

Интересно, что похожие проблемы с контекстом возникают и в других социально значимых проектах - например, в AI для диагностики аллергий, где один симптом в отрыве от других мало что значит.

Что получилось в итоге (цифры, а не эмоции)

Метрика Значение Комментарий
Размер датасета 8,423 текста Мало для ML, достаточно для proof-of-concept
Согласованность разметки 89% После внедрения трехступенчатой системы
Accuracy модели 78% на уровнях 3-4 Лучше случайного угадывания, хуже психолога
Ложные срабатывания 12% Приемлемо только с человеческой проверкой

Самое важное: мы создали не просто датасет, а методологию. Любой университет или исследовательская группа теперь может повторить наш подход, не наступая на те же грабли.

Главные ошибки, которые нельзя повторять

  • Экономить на психологах. Если размечают неспециалисты, вы получите мусор. Хуже того - вы можете причинить вред, неправильно интерпретировав текст.
  • Игнорировать психическое здоровье разметчиков. Это не очередная задача по разметке изображений. Каждый текст - эмоциональная нагрузка. Супервизии обязательны.
  • Думать, что анонимизация - это простое удаление имен. Современные методы deanonymization могут восстановить личность по совокупности, казалось бы, безобидных деталей.
  • Гнаться за размером датасета. 10 000 качественно размеченных, этично собранных текстов лучше, чем 100 000 сомнительных.

Кстати, о качестве разметки: мы использовали некоторые техники из статьи про ошибки нейросетей и человеческий фактор, но адаптировали их под нашу специфику.

Что дальше? (неочевидный прогноз)

Через 2-3 года появятся законодательные нормы для таких датасетов. Сейчас это дикий запад - каждый делает как хочет. Но когда-то и медицинские данные были ничем не регулируемы. Сейчас за нарушение HIPAA сажают.

Наш совет: если вы начинаете похожий проект сегодня - сразу делайте так, как будто законы уже есть. Получайте этическое одобрение (даже если оно не требуется). Внедряйте многоуровневую анонимизацию. Работайте только с профессионалами.

Потому что в отличие от обычного ML, здесь цена ошибки измеряется не в долларах, а в человеческих жизнях. И эта цена слишком высока, чтобы учиться на своих ошибках.

💡
Если вы работаете над социально значимым ИИ - начните с этического фреймворка. Определите красные линии, которые нельзя пересекать никогда. Запишите их. Повесьте на стену. И проверяйте каждое техническое решение против этого списка. Это скучно. Это не добавляет accuracy. Но это единственный способ делать технологии, которые помогают, а не вредят.