Skip to content

Prosept-4/DS

Repository files navigation

Проект "PROSEPT"

Задача: разработка решения, которое автоматизирует процесс сопоставления товаров заказчика с размещаемыми товарами дилеров.

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

Над проектом трудились:

  1. Минайчев Денис https://github.com/SeriousDen7 (сборка проекта, оборачивание в функции, очистка названий, выделение фичей из названий, методика поэтапного сбора предсказаний: артикул, TF-IDF, МО классификация)
  2. Носач Ирина https://github.com/LolaBSL (очистка названий, лемматизация, проработка машинного обучения после перевода в задачу классификации)
  3. Мукосеев Андрей(до 28 ноября) https://github.com/Andrey-Mukoseev (Проверка языковых моделей (BERT, TF-IDF), исследование задачи классификации после ранжирования)
  4. Матушкин Николай (с 1 декабря) https://github.com/NikMaNik

Используемые библиотеки

pandas, numpy, re, nltk, faiss, sklearn, spacy

Данные от заказчика

  1. marketing_dealer - список дилеров.

  2. marketing_dealerprice - результат работы парсера площадок дилеров:

    • product_key - уникальный номер позиции;

    • price - цена;

    • product_url - адрес страницы, откуда собраны данные;

    • product_name - заголовок продаваемого товара;

    • date - дата получения информации;

    • dealer_id - идентификатор дилера (внешний ключ к marketing_dealer).

  3. marketing_product - список товаров, которые производит и распространяет заказчик:

    • article - артикул товара;

    • ean_13 - код товара (см. EAN 13);

    • name - название товара;

    • cost - стоимость;

    • min_recommended_price - рекомендованная минимальная цена;

    • recommended_price - рекомендованная цена;

    • category_id - категория товара;

    • ozon_name - названиет товара на Озоне;

    • name_1c - название товара в 1C;

    • wb_name - название товара на Wildberries;

    • ozon_article - описание для Озон;

    • wb_article - артикул для Wildberries;

    • ym_article - артикул для Яндекс.Маркета.

  4. marketing_productdealerkey - таблица матчинга товаров заказчика и товаров дилеров:

    • key - внешний ключ к marketing_dealerprice;

    • product_id - внешний ключ к marketing_product;

    • dealer_id - внешний ключ к marketing_dealer.

Проводимая работа

Основные этапы выполнения проекта

  • Изучение данных;
  • Генерация гипотез, их проверка;
  • Подготовка данных;
  • Обучение модели и оценка метрики;
  • Упаковка модели, написание ру-скриптов.

Предобработка данных

Создаем функции для предобработки:

  • Предварительная очистка текста (Добавляем пробел на явных стыках, переходах(язык, регистр)и на конкретных словах, переводим все в нижний регистр, убираем название заказчика)

  • Из названий продукции мы извлекли полезную информацию. Среди обнаруженных признаков:

      1. Артитул (может выстапуть для 100% нахождения соответствующего ID продукта);
      2. Количество/объем цифрой;
      3. Еденицы измерения (Последние 2 признака переводит в общий формат (1000 г->1 кг, 600 мл->0,6 л))
    
  • Лемматизируем слова (русские и английские).

Создаем отдельные функции для обработки данных с парсинга и с товарами производителя:

Функция для данных с парсинга делает:

- Удаляем 3 ненужные колонки, удаляем дубликаты, переименовываем колонку ключа, и выставляем новые индексы;
- Применяем функции: предварительной очистки, извлечения нужной информации, лемматизацию

Функция для обработки данных от производителя делает:

- Заполняет пропуски, собирает в одну колонку уникальные слова из четырех колонок с названиями (name, name_1c, name_wb, name_ozon) и собирает дополнительные фичи из названий
- Удаляем 7 ненужных колонок('Unnamed: 0', 'ean_13', 'category_id', 'ozon_article', 'wb_article', 'ym_article', 'wb_article_td')
- Лемматизируем
- Собираем финальную версию таблицы
- заполняем пропуски рекомендованной цены медианой

Создаем функцию нахождения id товара по артикулу:

Принимает на вход артикул строкой, 
возвращает id товара из таблицы продукции списком из 1 числав двух фреймах

Поиск ближайших соседей

Делаем функцию промежуточной проверки точности:

Принимает правильные соответствия в виде словаря, словарь предсказаний и рассматриваемое количество первых предсказаний;
Выводит текст с оценкой, в переменную никакую не записывается

Создаем функцию для обучения векторайзера текста:

Принимает 2 таблицы, составляет корпус для обучения,
Возвращает обученный векторайзер TF-IDF
Обучили векторайзер и сохранили

Создаем функцию ранжирования и отбора ближайших соседей по расстоянию между векторизированными текстами

Принимает на вход 2 таблицы векторизированного текста
выдает (base_index) словарь соответствия индекса с id продукта,
(vecs) список списков расстояний между векторами по возрастанию (n ближайших)
(idx) список списков ближайших n id продукции в соответствии с (vecs)

Делаем функцию поиска ближайших соседей (включает использование функций обучения векторайзера и самого поиска соседей)

Если передаем таблицу мэтчей - значит в работу берем только данные с известным ответом и будет показана метрика

Принимает 2 обработанные таблицы(продукция и парсерные данные) и опционально таблицу мэтчей
Выдает словарь соответствия ключа предполагаемым 10 id и при зарузке таблицы мэтчей - таргет
(Создадим две таблицы. Первая: base - данные производителя, где индексы - это id товаров. 
                       Вторая: query - соответствие запроса к парсеру и правильного ответа к продукции)

Функция объединения значений двух словарей с учетом позиций

На входе основной и дополнительный словари
На выходе обновленные основной словарь

Главная функция которая задействует все остальные функции, Принимает на вход путь к файлам, выдает словарь соответствия ключа предложения диллера с 10 id продукции заказчика

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors