Upgrade to Pro — share decks privately, control downloads, hide ads and more …

От ручной разметки к LLM: как мы создавали обла...

От ручной разметки к LLM: как мы создавали облако тегов в Lamoda. Анастасия Ангелова, Data Scientist, Lamoda Tech

Осенью прошлого года в Lamoda Tech появилась задача разделять отзывы клиентов по осмысленным категориям (тегам). Перед нами стоял вызов: получить большие объёмы качественно размеченных данных для обучения нейросети, не имея готовых решений и аналогов на рынке. Я расскажу о полном цикле создания подобного решения, уделив особое внимание следующим пунктам:
• Почему первоначальный подход с ручной разметкой и краудсорсингом оказался недостаточно эффективным для масштабного решения задачи?
• Как мы тестировали опенсорс и некоторые проприетарные LLM для разметки, и что повлияло на итоговый выбор?
• Как выбирались подходящие теги и формировался финальный набор данных для обучения модели?
• Какие модели мы рассматривали и на какой остановились?
• Какие результаты мы получили и какие планы по дальнейшему развитию проекта?

Этот доклад будет интересен всем, кто работает с NLP, построением DS-пайплайнов, применением LLM и решает задачи разметки больших массивов пользовательских текстов.

Avatar for Lamoda Tech

Lamoda Tech

April 18, 2025
Tweet

More Decks by Lamoda Tech

Other Decks in Technology

Transcript

  1. х Анастасия Ангелова DS Personalization team От ручной разметки к

    LLM: как мы создавали облако тегов в Lamoda 1
  2. Работаю с рекомендашками и NLP Беспощадно причиняю улучшение пользовательского опыта

    2 Давайте знакомиться Верю, что хорошие ML-продукты начинаются с правильных вопросов Люблю искать нетривиальные решения и тестировать гипотезы на практике
  3. 3 О чем этот доклад и кому он будет полезен

    Работать с NLP Выстраивать DS-пайплайны Размечать большие массивы данных Внедрять LLM в продакшене Вам понравится, если вы уже занимаетесь или хотите научиться: О полном пути разработки ML части выделения облака тегов из отзывов с ключевыми сложностями и решениями
  4. 1 2 3 4 Про облако тегов Опыт с краудсорсом

    Автоматизируем разметку с LLM Результаты и выводы План: 4
  5. 10 Разделяем отзывы на осмысленные теги в разных категориях (обувь,

    верхняя одежда, парфюм, брюки и джинсы) Облако тегов Нет открытых аналогов Разнообразные продукты → нужен гибкий и масштабируемый подход Особенности
  6. Идеи решения задачи #1 Выделять из каждого товара свои теги

    •Семантически грязные тексты •Краткость отзывов •Опечатки в выделенных тегах 11
  7. 12 Идеи решения задачи #1 Выделять из каждого товара свои

    теги #2 Заранее определять теги для крупных категорий •Семантически грязные тексты •Краткость отзывов •Опечатки в выделенных тегах • Сложность определения границ категорий • Риск пропуска «уникальных» тегов • Необходима разметка
  8. 13 Итоговый выбор #1 Выделять из каждого товара свои теги

    #2 Заранее определять теги для крупных категорий •Семантически грязные тексты •Краткость отзывов •Опечатки в выделенных тегах • Сложность определения границ категорий • Риск пропуска «уникальных» тегов • Необходима разметка
  9. Больше ориентируемся на F0.5, потому что для нас важна точность

    Multi-Label классификация Precision Recall Как измерить качество 14
  10. удобство подъем подошва колодка каблук 16 Теги категории обувь 16

    • Исходили из продуктовых потребностей • Выделяли алгоритмически • Широкие категории → уточнение скольжение для спорта стелька размер полнота материал шнурки фурнитура упаковка
  11. Использовать краудсорс высокое качество Как можно размечать? + быстро –

    дорого нужны дополнительные приготовления создание интерфейса, контрольных заданий, правил и т.д. 18
  12. Использовать краудсорс высокое качество Как можно размечать? + быстро –

    дорого нужны дополнительные приготовления создание интерфейса, контрольных заданий, правил и т.д. 19 Использовать LLM дешево + быстро – много ошибок легко низкая точность
  13. 21 Подробную инструкцию Мы сделали Интерфейс Разметку части отзывов вручную

    Предразметку отзывов с помощью Mistral Контрольные задания Вступительный тест
  14. Инструкция для исполнителей Определить, к каким тегам можно отнести информацию,

    содержащуюся в текстах отзывов на парфюмерные продукты. Все отзывы предразмечены с помощью модели машинного обучения, задача – проверить разметку и переставить / доставить / удалить теги в случае необходимости Цель задания О задании Список доступных меток: ['аромат', 'стойкость', …] Описание тегов: аромат Описание: данный тэг проставляется при наличии в отзыве упоминания / оценки / информации о запахе/аромате духов 22
  15. Инструкция для исполнителей Тег проставляется только тогда, когда в отзыве

    есть явное указание на него Правила разметки • «Обалденно» - здесь тег не ставится, потому что нет явного указания на один тег из списка • «Обалденный запах» - здесь уже нужно поставить тег «аромат» Примеры Лучше не ставить тег, если вы не уверены, чем проставить его лишний раз. Нам важна точность Важно! 23
  16. Опыт с краудсорсингом: выводы + Потенциально масштабируемо − Люди, не

    уделяющие достаточного внимания качеству выполнения заданий Плюсы Минусы 26
  17. Опыт с краудсорсингом: выводы + Потенциально масштабируемо − Люди, не

    уделяющие достаточного внимания качеству выполнения заданий − Нужно очень тщательно настраивать задания, готовить тесты Плюсы Минусы 27
  18. Опыт с краудсорсингом: выводы + Потенциально масштабируемо − Люди, не

    уделяющие достаточного внимания качеству выполнения заданий − Нужно очень тщательно настраивать задания, готовить тесты Плюсы Минусы − Дорого (при хороших проверках) 28
  19. Опыт с краудсорсингом: выводы + Потенциально масштабируемо − Люди, не

    уделяющие достаточного внимания качеству выполнения заданий − Нужно очень тщательно настраивать задания, готовить тесты Плюсы Минусы − Дорого (при хороших проверках) − Долгий процесс из-за фильтрации исполнителей 29
  20. Опыт с краудсорсингом: выводы + Потенциально масштабируемо − Люди, не

    уделяющие достаточного внимания качеству выполнения заданий − Нужно очень тщательно настраивать задания, готовить тесты Плюсы Минусы − Дорого (при хороших проверках) − Долгий процесс из-за фильтрации исполнителей − Нужен отдельный человек, который всё это контролирует 30
  21. 33 • Работали с промптом • Настраивали гиперпараметры (температура, batch

    size) • Постпроцессинг 0 1. [‘флакон’] 1 2. [‘аромат’, ‘стойкость’] 2 3. [‘аромат’, ‘стойкость’] 3 4. [‘ничего’] 4 5. [‘аромат’, ’для кого’] … … 376 368. [‘аромат’, ’для кого’] 377 369. [‘аромат’, ’для кого’] 378 370. [‘флакон’] 379 371. [‘ничего’] 380 372. [‘аромат’] Разметка с LLM
  22. 34 Про промпт Представь, что ты разметчик данных и тебе

    нужно размечать отзывы. У тебя есть отзывы в категории “парфюм” и тебе нужно проставить им метки Список доступных меток: ['аромат', 'стойкость', …] Описание тегов: аромат Описание: данный тэг проставляется при наличии в отзыве упоминания/оценки/информации о запахе/аромате духов
  23. 36 Про промпт Примеры проставления меток: 'Запах сладкий, но не

    стойкий. Пахнет очень приятно' – ['аромат', 'стойкость']
  24. 37 Про промпт Примеры проставления меток: 'Запах сладкий, но не

    стойкий. Пахнет очень приятно' – ['аромат', 'стойкость'] 'Приятный аромат'
  25. 38 Про промпт Примеры проставления меток: 'Запах сладкий, но не

    стойкий. Пахнет очень приятно' – ['аромат', 'стойкость'] 'Приятный аромат' – ['аромат']
  26. 39 Про промпт Примеры проставления меток: 'Запах сладкий, но не

    стойкий. Пахнет очень приятно' – ['аромат', 'стойкость'] 'Приятный аромат' – ['аромат'] 'Духи неплохие, но быстро выветриваются'
  27. 40 Про промпт Примеры проставления меток: 'Запах сладкий, но не

    стойкий. Пахнет очень приятно' – ['аромат', 'стойкость'] 'Приятный аромат' – ['аромат'] 'Духи неплохие, но быстро выветриваются' – ['стойкость']
  28. 41 Про промпт Примеры проставления меток: 'Запах сладкий, но не

    стойкий. Пахнет очень приятно' – ['аромат', 'стойкость'] 'Приятный аромат' – ['аромат'] 'Духи неплохие, но быстро выветриваются' – ['стойкость'] 'Быстро улетучивается'
  29. 42 Про промпт Примеры проставления меток: 'Запах сладкий, но не

    стойкий. Пахнет очень приятно' – ['аромат', 'стойкость'] 'Приятный аромат' – ['аромат'] 'Духи неплохие, но быстро выветриваются' – ['стойкость'] 'Быстро улетучивается' – ['стойкость']
  30. 43 Про промпт Тег проставляется только тогда, когда в отзыве

    есть явное указание на него Правила разметки • «Обалденно» - здесь тег не ставится, потому что нет явного указания на один тег из списка • «Обалденный запах» - здесь уже нужно поставить тег «аромат» Примеры Лучше не ставить тег, если вы не уверены, чем проставить его лишний раз. Нам важна точность Важно!
  31. 44 Постпроцессинг Автоматизированный • Очистка текста • Проверка тегов •

    Сбор в списки Ручной • Визуально • Проверка пропусков и доразметка
  32. 45 Почему нельзя слепо верить LLM? Необходима ручная валидация! •

    Игнорирует отзывы • Странно отвечает • Придумывает отзывы • Ленится
  33. 50 Какую модель мы в итоге обучили и на чём

    model CPU, ms/sentence GPU, ms/sentence size, MB dim IC deepvk/USER-bge-m3 523.4 22.5 1371.1 1024 0.81 deepvk/USER-base 33.1 12.2 473.2402 768 0.8 cointegrated/laBSE-en-ru 133.4 15.3 489.6621 768 0.79 • Тестовая выборка размечалась строго вручную • Важные критерии: быстродействие и качество • Encodechka Leaderboard
  34. 52 Результаты моделей USER-bge-m3 precision recall f0.5-score в офис 0.93

    0.93 0.93 внешний вид 0.84 0.66 0.80 для дома 0.78 0.47 0.69 для спорта 0.84 0.70 0.81 качество 0.87 0.86 0.86 колодка 1.00 0.94 0.99 подошва 0.75 0.92 0.78 подъем 1.00 0.87 0.97 стиль 0.76 0.78 0.77 температура 0.95 0.75 0.90 USER-base precision recall f0.5-score в офис 0.95 0.70 0.89 внешний вид 0.86 0.69 0.82 для дома 0.71 0.33 0.58 для спорта 0.82 0.60 0.76 качество 0.83 0.86 0.83 колодка 0.93 0.71 0.87 подошва 0.76 0.78 0.76 подъем 0.92 0.74 0.88 стиль 0.74 0.67 0.72 температура 0.92 0.78 0.89 laBSE precision recall f0.5-score в офис 0.96 0.89 0.94 внешний вид 0.81 0.79 0.80 для дома 0.63 0.33 0.53 для спорта 0.87 0.67 0.82 качество 0.79 0.88 0.81 колодка 0.94 0.86 0.92 подошва 0.75 0.80 0.76 подъем 0.96 0.81 0.93 стиль 0.76 0.71 0.75 температура 0.87 0.74 0.84
  35. 53 Финальный пайплайн обучения модели Сбор данных из отзывов Выбор

    целевых тегов Разметка с помощью LLM Ручная валидация Обучение модели
  36. 55 Идеально сели на мой высокий подъём Те, у кого

    высокий подъём — вам подойдёт идеально С моим низким подъёмом слишком свободно. Отказ Так намного легче! Подъём 1198 отзывов …теперь Настя сможет удобнее выбирать обувь
  37. 58 К чему мы пришли? • Нейросетевая разметка работает: дёшево,

    масштабируемо, достаточно точно • Контроль качества необходим всегда
  38. 59 К чему мы пришли? • Нейросетевая разметка работает: дёшево,

    масштабируемо, достаточно точно • Контроль качества необходим всегда • Определили самую точную модель из всех рассмотренных типов
  39. 60 К чему мы пришли? • Нейросетевая разметка работает: дёшево,

    масштабируемо, достаточно точно • Контроль качества необходим всегда • Определили самую точную модель из всех рассмотренных типов • Сейчас тестируем облако тегов в категориях обувь, парфюм, брюки и джинсы, верхняя одежда
  40. 61 К чему мы пришли? • Нейросетевая разметка работает: дёшево,

    масштабируемо, достаточно точно • Контроль качества необходим всегда • Определили самую точную модель из всех рассмотренных типов • Сейчас тестируем облако тегов в категориях обувь, парфюм, брюки и джинсы, верхняя одежда • Планируем масштабировать и развивать проект дальше — в планах больше категорий из бьюти и одежды
  41. 62 К чему мы пришли? • Нейросетевая разметка работает: дёшево,

    масштабируемо, достаточно точно • Контроль качества необходим всегда • Определили самую точную модель из всех рассмотренных типов • Сейчас тестируем облако тегов в категориях обувь, парфюм, брюки и джинсы, верхняя одежда • Планируем масштабировать и развивать проект дальше — в планах больше категорий из бьюти и одежды • Дальше — больше: в планах sentiment analysis и summary