mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!
Статья является инструкцией по использованию программы «Прайс-лист»

Объединение одинаковых товаров из прайс-листов

Часто ко мне обращаются с просьбой настроить объединение данных из нескольких прайс-листов,
чтобы по каждому товару выводились цены конкурентов, и можно было найти минимальную цену:

 

В большинстве случаев, это задача нерешаемая, и вот почему:

чтобы программа смогла вывести цену какого-то товара у разных поставщиков,
программе надо как-то сопоставить (сравнить) записи из разных прайсов.

Если в прайсе есть отдельный столбец с кодом производителя, и для одинаковых товаров этот код во всех прайсах одинаковый, - то всё делается очень просто.
Но, на практике, в 99% случаев такого столбца нет (или код произодителя для одного и того же товара в разных прайс-листах может отличаться)

Искать одинаковые товары, сравнивая их названия (определяя степень похожести) - не получится.
Без помощи искусственного интеллекта, эту задачу не решить.

Вы мне можете возразить, - типа, есть функции (макросы) в том же Excel, определяющие степень похожести фраз,
и, сравнивая все строки всех прайсов между собой, и анализируя коэффициент похожести наименований товаров, можно найти бОльшую часть соответствий, а что не найдётся, - сопоставить вручную.

Да, такие решения существуют, но я в своих программах их не использую, т.к. это чревато очень большим количеством ошибок
Очень часто будут находиться соответствия между названиями, относящимися к разным товарам, - эти ошибки отследить очень сложно,
а избежать их не получится. А эти ошибки чреваты серьёзными проблемами, вплоть до потери прибыли (в прайсе программа может поставить более низкую цену, ошибившись в определении похожести).  Да и вы, пользователи моей программы, потом будете задавать мне вопросы, - а почему это нашлось неправильно, а это не нашлось, а вот эта цена откуда взялась, и т.д. Сейчас я могу ответить на любой вопрос по программе, объяснив, почему вы получили тот или иной результат, - программа обрабатывает данные предсказуемо, в полном соотвествии с заданными настройками (если на выходе что-то неправильно - надо искать ошибку в настройках обработки прайсов)
А если я реализую этот алгоритм поиска похожих наименований, - будет куча претензий ко мне, и мне постоянно придётся оправдываться, что не существует алгоритма, который безошибочно найдет все совпадения. Потому, такой опции в программе нет, и не будет.

 

Что же делать, если всё же надо привести названия товаров к единому виду?

В моей программе обработки прайс-листов есть функционал таблиц замены - именно его нам и придётся использовать.

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

Например, мы продаём товар с названием Микроволновая печь SUPRA MWS-1801MW

При обработке 3 прайсов поставщиков, в итоговой таблице мы получим 3 разные строки:
(обратите внимание - ни один из полученных вариантов не соответствует тому написанию, который мы хотим видеть в своем прайсе, и на своем сайте)

Микроволновка SUPRA MWS-1801 MW 18 л
Микроволновая печь SUPRA MWS1801MW 700 Вт
Печь MWS-1801 SUPRA белая

Когда человек видит эти 3 строки, - он понимает, что речь идет об одном и том же товаре.
Но программе это понять намного сложнее (напомню, искусственный интеллект ещё не изобретен)

КАК НАСТРОИТЬ ТАБЛИЦУ ЗАМЕН ДЛЯ ЭТОГО СЛУЧАЯ

Самый простой вариант настройки таблицы замен:
(тут мы просто указали слева исходные наименования, а справа - нужное нам название товара)

пример настройки таблицы замен

Недостатки этого способа:

  • слишком большое количество строк в таблице замен (долго её составлять)

  • если в исходном названии что-то поменяется (добавится слово, или  даже лишний пробел) - замена не выполнится

 

Есть другой вариант настройки замены тех же наименований:


 

тут мы ограничились 2 записями, - но результат будет тот же, - если в наименовании товара встречается MWS1801MW или MWS-1801,
то программа заменит всё это наименование на нужное нам Микроволновая печь SUPRA MWS-1801MW

Вероятность ошибки в этом случае есть (например, если среди товарных позиций встретится Пылесос SAMSUNG HDMWS-18015A),
но, по факту, при правильной настройке шансы столкнуться с ошибками невелики.

 

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

 

Здесь мы использовали МАСКУ наименования товара MWS*1801*MW,
с использованием подстановочного символа * (который заменяет любое количество любых символов)

Т.е. если в наименовании товара встречаются MWS, 1801 и MW (именно в этом порядке),
то наименование товара будет преобразовано в нужный нам вариант написания.

Тут вероятность ошибки выше, - например, под эту маску попадет и товар Холодильник Nord MWSH-12 арт. 5418016 AMWA
(название товара, конечно, выдуманное, - но принцип, думаю, понятен)

Если суммарное количество строк в обрабатываемых прайс-листах исчисляется десятками или сотными тысяч, — вряд ли вы осилите настройку такой таблицы замен
(нужна внимательность, огромное терпение, и куча времени...)

Но можно избежать этой работы, если вы делаете прайс не для своих покупателей,
а для удобства работы менеджера, или для публикации на сайте.

Дело в том, что ...

Объединять строки с одинаковыми товарами совсем необязательно!

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

Да, если вы отправляете прайс Excel своим заказчикам, это, действительно, не очень хороший вариант
(хотя и это можно объяснить - например, разными сроками доставки)

 

Если же вы делаете прайс для менеджера, чтобы он при помощи поиска быстро находил все предложения поставщиков по этому товару, — всё делается гораздо проще, и нет никакой необходимости объединять строки с одинаковыми товарами.

Как организовать быстрый поиск товара по всем прайс-листам

Для человека, нет особой разницы, в каком виде представлены результаты поиска, — он с легкостью воспримет результат как из одной строки, где в разных столбцах будут цены поставщиков, так и результат из нескольких строк, где в каждой строке - стоимость товара у очередного поставщика.

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

Мы в поиске набрали название товара - и увидели цены на этот товар у всех поставщиков, несмотря на то, что название товара везде разное.

Для приведенного выше примера с микроволновками, - в поиске надо набрать текст MWS 1801
(через пробел или звёздочку), и мы увидим в таблице 3 строки в разными названиями, но относящиеся к одному и тому же товару.

 

Что касается публикации прайса на сайте:

допустим, вы собрали все товары из нескольких прайс-листов поставщиков,
и на выходе получили файл CSV из 50 тысяч строк, причем реально там всего 30 тысяч разных товаров,
а «лишние» 20 тысяч - это дубликаты товаров (соответственно, с разными ценами)

И вы не хотите, чтобы пользователь, при поиске на сайте, обнаруживал дубликаты, и думал, "как же это так, один товар по разной цене продается..."

На самом деле, выгрузить все эти 50 тысяч товаров на сайт, — очень хорошая идея.

Ведь для чего делается сайт, - для привлечения покупателей, верно?
А кто приводит покупателей к вам на сайт? Разумеется, поисковые системы типа Яндекса и Google.

Возьмём тот же пример с микроволновками, - у вас на сайте 3 позиции (от 3 поставщиков) с разными ценами.
А у большинства ваших конкурентов, на сайте только одна позиция по этому товару.

И вот Яндекс (или Google) получает от будущего покупателя поисковый запрос в виде SUPRA MWS-1801

Угадайте, чей сайт окажется выше в результатах поиска, - тот, где «правильная» база данных (без дубликатов),
или ваш сайт, где под запрос пользователя подходят целых ТРИ страницы?

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

Вам ведь выгодно продать эту микроволновку по любой из этих 3 разных цен, - при обработке прайсов вы закладываете разную наценку на товары разных поставщиков,
т.е. вам надо только знать при заказе, позицию какого поставщика выбрал покупатель.

Таким образом, экономя время на объединении строк с одинаковыми товарами, вы получаете сразу несколько плюсов: бОльший ассортимент, более высокие позиции вашего сайта в результатах поиска, меньше проблем с обработкой прайсов поставщиков.

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  _      __     __  _  __  __              
| |__ \ \ / / / | \ \/ / ____ _ __
| '_ \ \ \ / / | | \ / |_ / | '_ \
| | | | \ V / | | / \ / / | |_) |
|_| |_| \_/ |_| /_/\_\ /___| | .__/
|_|
Введите код, изображенный в стиле ASCII-арт.