Перейти к содержимому

Как использовать LLM в качественном кодировании и отчитаться об этом

Используйте LLM, чтобы предлагать коды, дублировать кодирование выборки для проверки надёжности или кодировать первым для проверки людьми, затем сообщите согласованность модели и защитите расшифровки.

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

Качественное кодирование присваивает коды из кодбука фрагментам интервью, фокус-групп, полевых заметок или открытых ответов. Дедуктивное кодирование применяет кодбук, написанный до начала кодирования, а индуктивное кодирование выводит коды из данных. Большая языковая модель (LLM) порождает текст по промпту. Получив промпт с кодбуком и одним фрагментом, модель возвращает коды для этого фрагмента. Надёжность между кодировщиками — это согласованность между кодировщиками, которые независимо кодируют один и тот же материал. Обычно её сообщают как каппу Коэна или альфу Криппендорфа.

Все цитируемые здесь исследования кодирования проверяли дедуктивное кодирование по кодбуку, который написали сами исследователи, и советы на этой странице исходят из того же дизайна. Wheeler (2025) отмечает, что рефлексивный тематический анализ плохо сочетается с анализом при помощи ИИ. Рефлексивный тематический анализ исходит из того, что интерпретация исследователя определяет каждый этап. Отдельные руководства описывают, когда сообщать надёжность между кодировщиками, как составить кодбук, механику предразметки моделью, когда автоматизировать разметку и куда каждая программа QDA отправляет текст.

Три роли модели

Роли различаются тем, кто принимает окончательное решение о коде, и тем, что вы сообщаете, чтобы показать, помогла ли модель.

РольЧто делает модельЧто делает человекЧто сообщать
Советчик по кодамПредлагает коды или подсказки для фрагмента, открытого у кодировщикаРешает о каждом кодеКак часто кодировщики принимали предложение, и согласованность на фрагментах, закодированных без предложений
Второй кодировщикНезависимо кодирует выборку для проверки надёжностиКодирует ту же выборку, не видя кодов моделиСогласованность модели с людьми рядом с согласованностью между людьми, по каждому коду
Первичный дедуктивный кодировщикКодирует каждый фрагмент до того, как человек его откроетПодтверждает или исправляет каждый кодСколько кодов изменили проверяющие, и согласованность на выборке, закодированной вслепую

Опубликованные исследования качественного кодирования с LLM

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

Xiao et al. (2023) закодировали 668 детских вопросов с помощью GPT-3 при температуре 0 по кодбуку, составленному психологами. Согласованность с экспертным кодированием достигла κ = 0,61 для сложности вопроса и κ = 0,38 для синтаксической структуры, тогда как между экспертами она составила κ = 0,88 и κ = 0,90. Лучше всего сработали промпты, оформленные как кодбук, с описанием и примерами для каждого кода.

В препринте Chew et al. (2023) закодировали с помощью GPT-3.5 выборки по 100 документов из четырёх открытых наборов данных и оценили согласованность по AC1 Гвета (Gwet's AC1). Согласованность модели с людьми была близка к согласованности между людьми на большинстве кодов и заметно отставала на кодах о хештегах, @-упоминаниях и заглавных буквах. На хештегах согласованность модели с людьми составила 0,18 против 0,96 между людьми.

В препринте Dunivin (2024) закодировал отрывки из статей New York Times, упоминающих W.E.B. Du Bois. На 111 эталонных отрывках GPT-4 достигла κ ≥ 0,6 на 8 из 9 кодов, а GPT-3.5 в среднем показала κ = 0,34. Просьба объяснять каждый код повысила среднее κ с 0,59 до 0,68.

Tai et al. (2024) запускали один промпт с кодбуком по 160 раз на каждом из трёх фрагментов интервью в ChatGPT 3.5. Коды менялись от запуска к запуску. Для одного фрагмента модель присвоила код Persistence в 59,4% запусков.

Schroeder, Roy и Kabbara (2025) проверили роль советчика на 350 разметчиках в субъективных задачах. С предложениями разметчики работали не быстрее, а распределение их меток сместилось. Модели, оцениваемые по меткам, полученным с подсказками, выглядели значимо лучше, чем модели, оцениваемые по меткам, данным без предложений.

Согласованность модели с людьми на выборке для проверки надёжности

Если в разделе о методах вы сообщаете альфу Криппендорфа между кодировщиками, рассчитайте альфу между моделью и каждым кодировщиком на той же выборке для проверки надёжности, по каждому коду, и приведите эти значения рядом со значением для людей. Не включайте модель в значение для людей. Один коэффициент по матрице, где модель смешана с людьми, не описывает ни ту, ни другую группу. Кодировщик, видевший коды модели, уже не независим от модели, поэтому кодировщики-люди кодируют выборку для проверки надёжности, не видя кодов модели. Установите температуру 0 или запускайте модель несколько раз на каждом фрагменте и сообщайте, как часто запуски совпадают.

Высокая согласованность сама по себе не показывает, что модель могла бы заменить кодировщика. Тест альтернативного разметчика Calderon, Reichart и Dror (2025) по очереди исключает одного кодировщика-человека. Затем тест проверяет, согласуется ли модель с остальными кодировщиками не хуже, чем исключённый кодировщик, в пределах допуска. Potato выполняет этот тест для схем с одним вариантом ответа и схем оценок.

Пометка кодов модели в данных

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

Записи о промпте и модели

Без промпта читатель не может оценить или повторить кодирование моделью. Запишите в приложение следующие сведения:

  • Название модели и точную версию, например датированный снимок API или идентификатор, который выводит ollama list.
  • Провайдера или сервер, на котором работала модель, и даты запусков.
  • Полный промпт вместе с текстом кодбука, с датой каждой редакции.
  • Температуру и число запусков на фрагмент.
  • Что происходило, когда модель не возвращала допустимого кода.

Облачные и локальные модели и информированное согласие

Облачный API обрабатывает текст участников на серверах провайдера по условиям хранения провайдера, а локальная модель оставляет текст на машине, которой управляет команда. Перед облачным запуском сверьте условия провайдера о хранении и обучении на данных с формой информированного согласия и одобрением этического комитета. Wheeler (2025) рекомендует сначала обезличить данные, предупреждает, что одной замены имён не всегда достаточно, и рекомендует включать в формы информированного согласия заявление об обработке генеративным ИИ. Руководство Ратгерского университета по согласию на использование ИИ предлагает указывать название инструмента, лицензирован ли инструмент университетом или он внешний, может ли поставщик обучать модели на этих данных и как долго поставщик хранит данные.

Коммерческие программы QDA отправляют текст в разные места. AI Coding в ATLAS.ti отправляет текст в OpenAI, AI Assist Premium в MAXQDA может использовать модель, размещённую на вашем собственном компьютере или сервере, а помощник NVivo под названием AURA работает в NVivo AI Cloud. Разметка в изолированной среде описывает работу вообще без выхода в сеть.

Кодирование с помощью LLM в Potato 2.13.1

С ai_support модель предлагает подсказки, выделение ключевых слов, обоснование для каждого кода и предлагаемые коды для фрагмента, открытого у кодировщика, а решает кодировщик. Помощник работает на схемах с пометкой codebook: true и в проекте QDA Mode. Промпт перечисляет текущие названия кодов и description схемы, без определений, хранящихся в кодбуке. Записывайте решающие критерии в description. Если задать endpoint_type как ollama или vllm с base_url на вашем собственном сервере, фрагменты остаются там, а с openai, anthropic и gemini каждый фрагмент отправляется соответствующему провайдеру.

Для первичного кодирования pre_annotation заранее заполняет коды модели из отдельного predictions_file. Предзаполненный код становится ответом кодировщика только после сохранения, и Potato записывает исходное значение в поведенческие данные фрагмента. Неизменённые коды можно подсчитать, сравнив исходное значение с сохранённым кодом. ai_support.holdout.fraction скрывает предложения и предзаполненные коды для случайной доли пар «кодировщик — фрагмент». Вкладка AI influence в панели администратора сравнивает две группы по согласованности с моделью и по альфе внутри каждой группы. Конфигурация ниже настраивает предложения, предзаполненные коды и контрольную группу с локальной моделью:

yaml
annotation_task_name: Clinic access interviews
task_dir: .
output_annotation_dir: annotation_output/
data_files:
  - data/excerpts.json
item_properties:
  id_key: id
  text_key: text
user_config:
  allow_all_users: true
  users: []
 
# Coders apply the agreed codes and cannot add new ones
codebook_mode: fixed
 
annotation_schemes:
  - annotation_type: multiselect
    name: codes
    description: Which codes from the codebook apply to this excerpt?
    codebook: true
    labels: [access barriers, cost concerns, provider trust, administrative burden]
 
# A model on the team's own machine offers hints and suggested codes
ai_support:
  enabled: true
  endpoint_type: ollama
  ai_config:
    model: llama3.1:8b
    base_url: http://localhost:11434
    temperature: 0
    include:
      all: true
  holdout:
    fraction: 0.2
    salt: clinic-access-2026
 
# The model's first-pass codes, kept in their own file
pre_annotation:
  enabled: true
  predictions_file: data/model_codes.json
  allow_modification: true

Файл предсказаний сопоставляет каждому идентификатору фрагмента коды модели по каждой схеме, как в {"p01-03": {"codes": ["access barriers"]}}. Без include.all: true кнопки помощника не появляются. Не меняйте salt и fraction на протяжении всего исследования, потому что изменение любого из этих значений заново перемешивает группы.

Чтобы использовать модель как второго кодировщика, объявите идентификатор кодировщика модели в machine_annotators, указав модель и дату запуска. Если провайдер предоставляет датированный снимок модели или ollama list выводит для модели ID, добавьте это значение как version рядом с model. Добавьте этот блок к конфигурации выше:

yaml
machine_annotators:
  enabled: true
  annotators:
    - id: llm_coder
      kind: llm
      endpoint_type: ollama
      model: llama3.1:8b
      run_date: "2026-11-02"

После этого /admin/iaa оставляет основные значения только для людей и сообщает модель в отдельно названных разделах. Экспорты csv, tsv и parquet добавляют столбец annotator_origin (human или llm), а экспорт jsonl включает полное объявление. Экспорт reliability объединяет всех кодировщиков фрагмента. Чтобы рассчитать альфу между моделью и людьми, отфильтруйте экспорт csv по annotator_origin и загрузите строки в калькулятор согласованности. Для схем с одним вариантом ответа и схем оценок GET /admin/api/alt-test выполняет тест альтернативного разметчика, когда три или более кодировщика-человека закодировали каждый не менее 30 фрагментов, которые закодировала и модель.

Чтобы записать коды модели под этим идентификатором, напишите скрипт, который отправляет модели ваш задокументированный промпт, входит как llm_coder и сохраняет результат через /updateinstance (справочник API). --strategy llm у симулятора такой скрипт не заменяет. Симулятор использует общий промпт, отправляет первые 500 символов каждого фрагмента и записывает случайный код, когда ответ не совпадает ни с одним кодом. Solo Mode сообщает простой процент согласия между одним кодировщиком и моделью, а разметка с ICL возвращает один код на фрагмент и схему. Прежде чем сообщать результаты любой из этих функций в разделе о методах, рассчитайте альфу по экспортированным кодам.

Часто задаваемые вопросы

Можно ли использовать ChatGPT для качественного кодирования?

ChatGPT или другую LLM можно использовать для дедуктивного кодирования по письменному кодбуку, если вы измеряете согласованность модели с кодировщиками-людьми на собственных данных и сообщаете результат. Опубликованная согласованность различалась по кодам, от κ = 0,61 до κ = 0,38 на одном кодбуке у Xiao et al. (2023). Для данных интервью проверьте форму информированного согласия и одобрение этического комитета, прежде чем использовать облачный сервис.

Как рассчитать надёжность между кодировщиками-людьми и LLM?

Считайте модель ещё одним кодировщиком на выборке для проверки надёжности и рассчитайте коэффициент вашей команды между моделью и каждым кодировщиком-человеком. Обычно это альфа Криппендорфа или каппа Коэна. Сообщайте значения согласованности модели с людьми по каждому коду рядом со значением для людей, рассчитанным без модели. Калькулятор согласованности рассчитывает альфу и каппу по CSV-файлу с кодами.

Как описать кодирование с помощью LLM в разделе о методах?

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

Можно ли загружать расшифровки интервью в ChatGPT?

Загружайте расшифровки в облачный сервис, только если форма информированного согласия и одобрение этического комитета допускают отправку текста участников этому провайдеру. Сначала обезличьте расшифровки и помните, что одной замены имён не всегда достаточно. Модель, запущенная через Ollama или vLLM на собственном сервере команды, не выпускает расшифровки на внешние серверы.

Дополнительные материалы

Источники

  1. Calderon, N., Reichart, R., & Dror, R. (2025). The Alternative Annotator Test for LLM-as-a-Judge: How to Statistically Justify Replacing Human Annotators with LLMs. Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), 16051-16081. https://doi.org/10.18653/v1/2025.acl-long.782
  2. Chew, R., Bollenbacher, J., Wenger, M., Speer, J., & Kim, A. (2023). LLM-Assisted Content Analysis: Using Large Language Models to Support Deductive Coding. arXiv preprint 2306.14924. https://arxiv.org/abs/2306.14924
  3. Dunivin, Z. O. (2024). Scalable Qualitative Coding with LLMs: Chain-of-Thought Reasoning Matches Human Performance in Some Hermeneutic Tasks. arXiv preprint 2401.15170. https://arxiv.org/abs/2401.15170
  4. Schroeder, H., Roy, D., & Kabbara, J. (2025). Just Put a Human in the Loop? Investigating LLM-Assisted Annotation for Subjective Tasks. Findings of the Association for Computational Linguistics: ACL 2025, 25771-25795. https://doi.org/10.18653/v1/2025.findings-acl.1323
  5. Tai, R. H., Bentley, L. R., Xia, X., Sitt, J. M., Fankhauser, S. C., Chicas-Mosier, A. M., & Monteith, B. G. (2024). An Examination of the Use of Large Language Models to Aid Analysis of Textual Data. International Journal of Qualitative Methods, 23. https://doi.org/10.1177/16094069241231168
  6. Wheeler, K. (2025). How to Use Generative AI to Assist the Analysis of Qualitative Data. Sage Research Methods: Data and Research Literacy. https://doi.org/10.4135/9781036217471
  7. Xiao, Z., Yuan, X., Liao, Q. V., Abdelghani, R., & Oudeyer, P.-Y. (2023). Supporting Qualitative Analysis with Large Language Models: Combining Codebook with GPT-3 for Deductive Coding. Companion Proceedings of the 28th International Conference on Intelligent User Interfaces, 75-78. https://doi.org/10.1145/3581754.3584136