/
Вопросы и ответы
/
Промт-инжиниринг
/

Как использовать языковую модель для разметки обучающих данных

Как использовать языковую модель для разметки обучающих данных

17 дней назад

Никита Вихров

Ответы

0

Как использовать языковую модель для разметки обучающих данных

Ручная разметка — дорого и медленно. Языковая модель может размечать данные в несколько раз быстрее и дешевле человека, если задача хорошо сформулирована.

Подход: модель расставляет метки, человек проверяет выборку, исправляет ошибки.

Когда это работает

  • Классификация текста (тональность, тема, намерение).
  • Извлечение сущностей (имена, суммы, даты, организации).
  • Оценка качества (релевантность, полнота, вежливость).

Пример: разметка намерений пользователя

from openai import OpenAI
from dataclasses import dataclass
import json

client = OpenAI()

НАМЕРЕНИЯ = ["вопрос", "жалоба", "оплата", "отмена", "прочее"]

@dataclass
class Размеченная:
    text: str
    intent: str
    confidence: str
    comment: str

def label_intent(text: str) -> Размеченная:
    prompt = f"""Определи намерение пользователя в обращении.

Допустимые намерения: {", ".join(НАМЕРЕНИЯ)}

Верни JSON:
{{"intent": "...", "confidence": "высокая"|"средняя"|"низкая", "comment": "..."}}

Обращение: {text}"""

    resp = client.chat.completions.create(
        model="gpt-4.1",
        temperature=0.0,
        max_tokens=128,
        messages=[{"role": "user", "content": prompt}]
    )

    данные = json.loads(resp.choices[0].message.content)
    return Размеченная(
        text=text,
        intent=данные["intent"],
        confidence=данные["confidence"],
        comment=данные["comment"]
    )

Пример: пакетная разметка с отбором на проверку

def label_batch(тексты: list[str]) -> dict:
    размеченные = [label_intent(t) for t in тексты]

    # Случаи с низкой уверенностью — на ручную проверку
    авто = [r for r in размеченные if r.confidence != "низкая"]
    на_проверку = [r for r in размеченные if r.confidence == "низкая"]

    return {
        "auto_labeled": авто,
        "needs_review": на_проверку,
        "auto_rate": len(авто) / len(размеченные)
    }

тексты = [
    "Когда придёт мой заказ?",
    "Хочу вернуть деньги, товар сломан",
    "Как изменить адрес доставки?",
    "Спасибо, всё отлично!",
    "Не понял что вообще происходит"
]

результат = label_batch(тексты)
print(f"Авторазметка: {результат['auto_rate']:.0%}")
print(f"На проверку: {len(результат['needs_review'])} записей")

Правила

  • Всегда проверяйте случайную выборку — минимум 5–10% от всего объёма.
  • Случаи с низкой уверенностью проверяйте вручную все.
  • Сохраняйте версию промпта вместе с данными: при изменении инструкции метки могут расходиться.
  • Не используйте разметку моделью как единственный источник правды для обучения другой модели.

17 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845