Slide 1

Slide 1 text

х Анастасия Ангелова DS Personalization team От ручной разметки к LLM: как мы создавали облако тегов в Lamoda 1

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

1 2 3 4 Про облако тегов Опыт с краудсорсом Автоматизируем разметку с LLM Результаты и выводы План: 4

Slide 5

Slide 5 text

5 Про облако тегов 1

Slide 6

Slide 6 text

True story Это Настя, типичный пользователь Lamoda, но есть одно НО… 6

Slide 7

Slide 7 text

True story Это Настя, типичный пользователь Lamoda, но есть одно НО… …у нее высокий подъем 7

Slide 8

Slide 8 text

Она увидела крутые кроссы… Подойдут ли они мне? 8

Slide 9

Slide 9 text

Но столкнулась с трудностями… Как же мне быть? 9

Slide 10

Slide 10 text

10 Разделяем отзывы на осмысленные теги в разных категориях (обувь, верхняя одежда, парфюм, брюки и джинсы) Облако тегов Нет открытых аналогов Разнообразные продукты → нужен гибкий и масштабируемый подход Особенности

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Больше ориентируемся на F0.5, потому что для нас важна точность Multi-Label классификация Precision Recall Как измерить качество 14

Slide 15

Slide 15 text

Какие теги вы бы выбрали для категории обувь? 15

Slide 16

Slide 16 text

удобство подъем подошва колодка каблук 16 Теги категории обувь 16 • Исходили из продуктовых потребностей • Выделяли алгоритмически • Широкие категории → уточнение скольжение для спорта стелька размер полнота материал шнурки фурнитура упаковка

Slide 17

Slide 17 text

17 Нужно очень, очень, очень-очень много качественно размеченных отзывов Проблемы Делать вручную — сложно и невероятно долго

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

20 Опыт с краудсорсом 2

Slide 21

Slide 21 text

21 Подробную инструкцию Мы сделали Интерфейс Разметку части отзывов вручную Предразметку отзывов с помощью Mistral Контрольные задания Вступительный тест

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Опыт с краудсорсингом: выводы Плюсы 24

Slide 25

Slide 25 text

Опыт с краудсорсингом: выводы + Потенциально масштабируемо Плюсы 25

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

31 Автоматизируем разметку с помощью LLM 3

Slide 32

Slide 32 text

32 Автоматизированная разметка с LLM А что мы тестировали? Проприетарные модели Открытые модели YandexGPT 3 ChatGPT 4o Mistral NeMo 12B

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

44 Постпроцессинг Автоматизированный • Очистка текста • Проверка тегов • Сбор в списки Ручной • Визуально • Проверка пропусков и доразметка

Slide 45

Slide 45 text

45 Почему нельзя слепо верить LLM? Необходима ручная валидация! • Игнорирует отзывы • Странно отвечает • Придумывает отзывы • Ленится

Slide 46

Slide 46 text

46 Результаты

Slide 47

Slide 47 text

47 Результаты

Slide 48

Slide 48 text

48 Результаты

Slide 49

Slide 49 text

49 Результаты

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

51 Результаты моделей USER-bge-m3 USER-base laBSE precision 0.88 0.87 0.87 recall 0.82 0.78 0.77 f0.5-score 0.86 0.84 0.84

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

53 Финальный пайплайн обучения модели Сбор данных из отзывов Выбор целевых тегов Разметка с помощью LLM Ручная валидация Обучение модели

Slide 54

Slide 54 text

54 Результаты 4

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

56 К чему мы пришли?

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

@nuangelova anastasiya.angelova @lamoda.ru QR-код t.me/latech Спасибо! Анастасия Ангелова DS Personalization team 63