Сервисы Epoch 8
366

learn.epoch8.co – платформа для очистки и структурирования данных

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

В закладки

Мы запустили альфа-версию сервиса автоматической классификации текстов и картинок с помощью машинного обучения, learn.epoch8.co. С его помощью можно решать такие задачи с минимальным ручным трудом.

Работает так: загружаете ваши данные на сервис и размечаете небольшую выборку этих данных вручную. А дальше модель машинного обучения тренируется и размечает все остальные данные самостоятельно. Работает для картинок и текстов на русском или английском языке.

Результат можно получить уже через несколько часов, без помощи программистов.

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

Учим машину классифицировать отзывы из AppStore

Возьмем задачу, которая возникает практически у всех, кто работает с пользователями: это работа с обратной связью. Например, у вас может быть много отзывов в AppStore, обращений пользователей в каналы технической поддержки или, например, маркетинг может принести много заполненных NPS анкет с обратной связью.

Чтобы работать с ответами пользователей, их нужно структурировать: как минимум, присвоить каждому ответу категорию, к которой он относится (например, “сообщение об ошибке” или “запрос нового функционала”).

Ниже расскажем по шагам, как это сделать с помощью машинного обучения и learn.epoch8.co.

Процесс состоит из пяти шагов:

  • Определение нужных категорий

  • Сбор данных

  • Обучение модели
  • Использование модели
  • Улучшение модели

1. Определение нужных категорий

На какие категории нужно классифицировать тексты пользователей – это первый вопрос, на который нужно ответить.

Если мы обучаем классификатор для отзывов, то типовые категории могут быть такими:

  • Запрос нового функционала
  • Багрепорт
  • Платный функционал
  • Общий позитивный комментарий
  • Общий негативный комментарий

При выборе категорий нужно стараться, чтобы они не пересекались: при разметке не должно возникать сомнений, к какой именно категории относится запись: двусмысленность запутает модель.

Если вы тренируете ваш первый классификатор, начинайте с небольшого количества категорий (<10).

Сохраните ваши категории в excel-файле.

2. Сбор данных

Как только вы определили список категорий, нужно подготовить данные, на которых вы будете обучать модель. В идеале в обучающих данных должно быть 100 или больше примеров для каждой категории.

Сохраните ваши данные в excel-файле.

3. Создание классификатора

Список категорий и данные нужно загрузить на сервис через вашего менеджера (он будет помогать вам с того момента, как вы оставите ваши контакты на learn.epoch8.co).

После загрузки данных вы увидите интерфейс модерации.

Каждой записи можно присвоить одну из категорий, список которых вы определили ранее.

После того, как вы промодерируете первые записи, запустится автоматическое обучение.

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

Как только к процессу разметки начинает помогать машинная модель, скорость работы редактора сильно возрастает. Даже самая первая модель предлагает варианты, которые верны как минимум в половине случаев, и редактору остается только согласиться с выбором модели, что сильно экономит время. Замечено, что подтверждение корректной записи занимает в 5 раз меньше времени, чем самостоятельная разметка.

После первого запуска цикла обучения вам будет доступна статистика по качеству работы модели.

Мы видим, сколько предсказаний смогла сделать модель и сколько записей она отнесла к каждой категории.

Precision (точность) – наша главная метрика, которая показывает, сколько в процентах записей модель угадывает (например, то, что отзыв относится к категории “Багрепорт” модель корректно угадывает в 72% случаев).

Recall – это метрика, которая показывает, сколько записей из имеющихся модель находит (например, мы знаем, что модель находит 85% имеющихся у нас записей категории “Багрепорт”).

И, наконец, метрика Support показывает, на каком количестве записей построена эта статистика. Чем выше значение Support, тем точнее статистика.

4. Использование модели

Вы можете остановить обучение модели в тот момент, когда получившееся качество будет вас устраивать. Например, при классификации отзывов из AppStore вы можете остановить обучение, достигнув качества в 90% (это будет означать, что из 100 отзывов 90 модель раскладывает по категориям правильно, а в 10 случаях ошибается).

Когда ваша модель готова, вы можете загрузить на сервис новые данные и получить для них предсказания категории, выгрузив их в csv-файл или забрав с помощью API.

5. Улучшение модели

Самый простой способ улучшить качество модели – добавить больше данных к обучению. Количество данных, которые нужно разметить для того, чтобы получить хорошее качество, сильно зависит от задачи. По нашим наблюдениям, для многих задач достаточно от 20 до 100 примеров на категорию.

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

Посмотрим, что получилось

В рамках этой статьи мы обучили простую модель категоризовать отзывы из AppStore.

Давайте посмотрим, что получилось. Демо-стенд доступен на demo.epoch8.co:8000

Запросить доступ к сервису и протестировать работу сервиса на своих данных можно тут: https://learn.epoch8.co

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Epoch 8", "author_type": "self", "tags": [], "comments": 2, "likes": 10, "favorites": 25, "is_advertisement": false, "subsite_label": "services", "id": 68315, "is_wide": false, "is_ugc": true, "date": "Tue, 21 May 2019 15:42:22 +0300" }
{ "id": 68315, "author_id": 194003, "diff_limit": 1000, "urls": {"diff":"\/comments\/68315\/get","add":"\/comments\/68315\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/68315"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 200396, "last_count_and_date": null }

2 комментария 2 комм.

Популярные

По порядку

0

Ну вы вообще молодцы. Можете уже ничего и не делать.

:)

Ответить
0

Боюсь что базовый sentiment анализ еще пилить и пилить...

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Хакеры смогли обойти двухфакторную
авторизацию с помощью уговоров
Подписаться на push-уведомления
{ "page_type": "default" }