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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

Комментарии

Добрый день!
Спасибо за ответ
3000 руб, это настройка до рабочего варианта?

Здравствуйте, Алексей.
Видимо, что-то не так настроили
Консультации по настройке не входят в стоимость программы.
При покупке программы (3200 руб) + оплате консультаций (3000 руб) я помогу решить все проблемы с настройкой.

Здравствуйте
Спасибо за такой мощный инструмент, рад что его нашел
Возникла проблема которую никак не могу решить. После обработки прайс листов итоговый прайс выглядит весьма странно. Значения подставляются лесенкой. Сначала заполняются ячейки столбца А, потом ниже столбца Б и т.д
Подскажите как можно решить эту проблему или можно ли проконсультироваться с вами более детально лично?

Роман, такой возможности в программе нет

Добрый день! у вас написано : "Если в прайсе есть отдельный столбец с кодом производителя, и для одинаковых товаров этот код во всех прайсах одинаковый, - то всё делается очень просто." Вот у меня задача такая: несколько прайсов в которых есть столбец с колонкой производителя, некоторые коды производителя одинаковые. нужно сделать итоговый вывод чтобы выводилась минимальная цена из всех прайсов, а также выводились в соседних столбцах все цены из всех остальных прайсов. в конфигурации вывода в настройках объединения строк поставил галочку на совпадении по "коду производителя", в объединяемых строках - галочка на минимальном значении в столбце "цена", а вот как вывести остальные цены из всех остальных прайсов рядом в соседние столбцы ?