Имя: Пароль:
IT
 
Выявление аналогов товара от разных поставщиков
0 spock
 
25.04.16
06:37
Ни кто не реализовывал задачу по выявлению аналогов?
Если упрощенно, то нужно для эталонного(целевого) товара найти во множестве товаров его аналоги.

Есть целевой "Товар А" с определенными характеристиками (Х1, Х2, ...Хn). Нужно проанализировать множество товаров (Т с характиристиками) и найти в нем аналоги "Товара А", опираясь на названия товаров и характеристики.
Как названия товаров, так и названия характеристик могут не соответствовать названиям целевого товара. Но название товара + его характеристики с очень высокой вероятностью определяют искомый товар. Это контекстный анализ текстового окружения анализируемой единицы.

Например, целевой товар "Куртка зимняя пуховая красная" (Товар: "Куртка", Х1: "Зимняя", Х2: "Пуховая", Х3: "Красная"), товар из множества аналогов "Пуховик зимний красный" (Товар: "Пуховик", Х1: "Зимний", Х2: "Красный").

Данных много, задача "в лоб" (на уровне Если-Тогда) не решается. Реализация возможна на любом ЯП, даже лучше, если не на 1С.

Реалистичным способом решения вижу реализацию с использованием машинного обучения, например, с помощью pandas и scikit.

Интересует практический опыт решения подобных задач.
5 Lama12
 
25.04.16
07:32
(3) + Опять же, можно автоматизировать, но автоматически не решается.
6 Lama12
 
25.04.16
07:33
(4) Она самая, но не даст однозначного решения.
7 Mikeware
 
25.04.16
07:35
(6) однозначного не даст. но даст вероятностный (ну, или взвешеный) выбор.
8 spock
 
25.04.16
07:47
Уважаемые коллеги!
Да, задача из разряда вероятностных.
Да, это кластеризация.

Мне бы послушать чей-нибудь практический опыт.
9 spock
 
25.04.16
07:50
(3) Ну как не решается? Решается, если анализировать не каждое слово отдельно, а выполняя контекстный анализ текстового окружения.
10 Jokero
 
25.04.16
07:51
Проблема справочника номенклатура, в том что там часто содержится полный бред и порой даже пользователь не может сказать, в каком он состоянии находился, когда давал позиции номенклатуры такое название.

Я как то делал сопоставление номенклатуры простым сравнением - сначала "куртка", по всей базе, всем совпавшим +1 к карме, потом "куртк", потом "курт". Потом следующее слово из названия таким же образом. А потом простая сортировка по карме по убыв и наверху были более-менее похожие аналоги.
Но у меня была основная проблема в том, что это была база с автозапчастями, которые заводили обычные девочки бухгалтера, соответственно названия там отображали суть ед. номенклатуры чуть менее, чем никак.
11 spock
 
25.04.16
07:52
Уточню: направление решения мне понятно, но т.к. задача нетривиальная и делается впервые, не хочется потерять время и упереться на одном из этапов в тупик :)
12 Mikeware
 
25.04.16
07:53
(8) За практическим - тебе, скорее всего, лучше на хабр.
тут тебе объяснят всю бездонную глупость твоей затеи, предложат организационные мероприятия, потребуют денег, расскажут, что все из-за мяса - но решения не дадут.
13 spock
 
25.04.16
08:02
(12) ок, ослабляем ограничения - готов прислушаться к разным идеям :)
14 Mikeware
 
25.04.16
08:05
(13) не, серьезно - тут нужны профильные знания.
я обладателей таковых тут не наблюдаю...
15 Лодырь
 
25.04.16
08:05
(13) python тут лишний. решается вполне на 1с.
задача разовая или постоянная?
(14) ну я например профильный специалист
16 spock
 
25.04.16
08:08
Постоянная.
17 spock
 
25.04.16
08:09
+16 Если б разово, то можно было врукопашную все сделать, с помощью Excel и какой-то матери.
18 Лодырь
 
25.04.16
08:09
(16) То бишь для нового товара с некоторым заданным набором характеристик вы будете выявлять аналоги?
19 spock
 
25.04.16
08:11
(15) Задача ведь не академическая - сделать крутой алгоритм и оттащиться от крутой реализации и кучи потраченного времени. Нужно дешевле, используя популярные библиотеки/фреймворки. А на 1с я такого не видел.
20 spock
 
25.04.16
08:12
(18) Да.
21 Лодырь
 
25.04.16
08:25
(19) В 1с есть свои неплохие инструменты ) Во всяком случае учебные задачи на них решаются с хорошей точностью.
http://v8.1c.ru/overview/Term_000000271.htm
(20) А какое общее число характеристик?
22 spock
 
25.04.16
08:35
(21) До 10 характеристик.
23 Lama12
 
25.04.16
09:48
(9) Вот... Нужно контекстное окружение. В (0) и в (1) про контекст ничего не сказано :)
24 spock
 
25.04.16
09:52
(21) Ты заинтересовал идиота, а дальше что? Можешь озвучить реализованные задачи и способы их реализации?
25 spock
 
25.04.16
09:52
(23) "...Это контекстный анализ текстового окружения анализируемой единицы...." - это из (0)
26 Maniac
 
25.04.16
09:55
(0) справочник называется "Номенклатура поставщиков""
если в УТ10 - то регистр Номенклатура поставщиков.
27 Maniac
 
25.04.16
09:56
Отвечает за хранение соответствий между разными номенклатурами поставщика к единой номенклатуре компании.
28 Lama12
 
25.04.16
09:57
(24) Там только Кластерный анализ подойдет.
(25) В (0) под контекстом перечислено то, что по сути является только малой частью для анализа. По сути, я б еще использовал данные по реализации, сезонности и т.д.
29 spock
 
25.04.16
10:00
(28) В данном случае товары - это упрощенное описание. На самом деле мне нужно не аналогизировать товары. Но для понимания, уважаемые коллеги, будет понятнее. Пример задачи про адреса реальный, но это низкоприоритетная для меня задача.
30 spock
 
25.04.16
10:01
(27) Женя, ты зря возбудился. Я не претендую на твою нишу :) У меня совсем другая задача.
31 Лодырь
 
25.04.16
10:03
(28) Лично меня пугает число кластеров. Лучше, имхо, решить N задач поиска растояния между объектами.
32 Лодырь
 
25.04.16
10:06
Кстати да, тебе по факту надо всего то считать расстояния между новым объектом и всеми старыми. Если расстояние достаточно мало - вероятность совпадения велика и наоборот.
Вопрос, что взять за метрику.
33 Maniac
 
25.04.16
10:49
Разложение наименования на массив слов.

По каждому слову из массива поиск по полному вхождению или не полному (через оператор подобно).

потом соответственно анализ результатов.

Например 5 слов в искомом наименовании. Нашли 4. 2 полных вхождения и 2 неполных.

Таблица результатов - и предложение выбрать наилучший вариант если результат выше какого то процента.
34 Злопчинский
 
25.04.16
10:54
Куртка и куртяшечка и курточка сломают вам все алгоритмы тупого поиска српоставления или итог будет давать большое количество низкорелевантных совпадений

Для товаров можно с большой долей успеха использовать strmatch
35 Злопчинский
 
25.04.16
10:55
У меня таких привязок на основе strmatch вагон и тележка понаписано, из последних успешно работает на сопоставлении всяких аксессуаров для мобтелефонов
36 Maniac
 
25.04.16
11:33
(34) можно завести справчоник регулярных выражений. Где такие исключения просто накапливать. назовем его справочником Автозамены слов.
37 Maniac
 
25.04.16
11:33
С помощью справочника на первой стадии разложения в массив делаем прогон по справочнику автозамен и сразу заменяем искомые слова.

Дальше уже поиск по базе с учетом автозамен.
38 spock
 
25.04.16
11:34
Поиск по подстроке не подойдет. Да, куртешки запросто могут быть.
Например, "Пуховик" и "Куртка зимняя на пуху" - аналоги.
39 Maniac
 
25.04.16
11:36
(38) заведи справочник автозамен. и пусть юзеры по мере выявления туда вбивают вот такие вещи.
Это своего рода у тебя база данных, где всякие проблематушки будут накапливаться накапливаться и в тоге давать большую автоматизацию.
40 spock
 
25.04.16
11:44
(39) Первый релиз задачи приведения адресов к кладровскому виду я сделал именно так, у меня получился словарь таких синонимов. Контекст не анализировался. Все-таки это не правильный путь.
41 Maniac
 
25.04.16
11:46
(40) а по мне - это стандартный подход. предполагаю что даже поисковые монстры используют базы данных с исправлением(уточнением) в случае если юзер что то криво набрал в поисковой строке.
42 Maniac
 
25.04.16
11:48
ВОт например в телефоне ты набираешь текст и срабатывает Т9. Из воздуха то не берутся те слова которые он начинает выдавать.
43 Лодырь
 
25.04.16
11:54
(40) Дефакто это метрика для данной характеристики/названия с 0 на сработавшей автозамене или совпадении и 1 на несовпадении.
Подход имеет право на жизнь. Но решит задачу достаточно плохо.
44 4St
 
25.04.16
12:02
Попробуй загнать базу товаров в ElasticSearch и уже им искать.
45 Maniac
 
25.04.16
12:02
Единственное что решит задачу - это чтобы поставщики выдавали производственные артикулы или как минимум штрихкоды.

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

Ибо если из 100 товаров, он неверно сопоставит номенклатуру. а в 1С это значит цена упадет не на ту позицию. Ее наценят неправильно, продадут неправильно.
А потом получится что продали по цене одно что стоит в себестоимости гораздо дороже.

Уьыток, пересортицы, проблемы до бесконечности.
46 4St
 
25.04.16
12:03
(45) +100500
47 4St
 
25.04.16
12:07
И ещё решение может сильно зависеть от предметной области. В автозапчастях есть номера и производители,которые тоже содержат ошибки. В продуктах питания и строй материалах почти всегда есть штрихкоды. А в шмотье хуже всего. Мало того,что ШК редко кто регистрирует, так ещё размеры по-разному интерпретируют: то товарами, то характеристиками.
48 Maniac
 
25.04.16
12:17
Хуже всего в компьютерных комплектующих. Особенно когда какие нибудь ноутбку. в которых наименование под 300 символов.
49 Maniac
 
25.04.16
12:19
и как начнут в наименовании лепить все из чего этот конкретный ноутбук состоит....

А втозапчастях обычно буква С рус с буквой С анг. И еще пара таких букв.
Нули где то пропущены и тп. Буква спереди не добавлена.
50 Maniac
 
25.04.16
12:19
Это про артикулы. наименования в автозапчастях вообще гроша выеденного не стоит.
51 Tateossian
 
25.04.16
12:20
Кто говорит, что это кластерный анализ - он не прав. Кластерный оперирует математическими терминами, а не формальным словарем. Это вопрос лексического анализа.
52 mingw
 
25.04.16
12:28
Ну классика же. https://basegroup.ru/community/articles/knn
53 Maniac
 
25.04.16
12:29
Я только что клиенту решил задачу автоматического поиска в базе на примере

Наименование в прайсе Карт перезапр Epson Pro 3800
В справочнике 1С содержится номенклатура ПЗК для Epson Stylus Pro 3880, 3800 (9х80 мл.)
Алгоритм правильно определяет ключевые слова из загружаемого наименования и производит точный поиск в базе 1С.
54 Maniac
 
25.04.16
12:30
(0) Любые алгоритмы которые будешь пытаться делать - делай визуально. Чтобы все результаты выходили на форме. когда будешь понимать что где идет неправильно - будешь методом исключений вырабатывать более точный алгоритм.
55 Карупян
 
25.04.16
12:32
Построй свою deep neural сеть.
Самое верное направление
56 Карупян
 
25.04.16
12:35
Эх кто бы мне такую задачу поставил, да времени месяц выделил хотя бы
57 mingw
 
25.04.16
12:36
(55) Нейронные сети не нужны. В данном случае. Только помешают.

(56) Потому не ставят. Тут нечего месяц делать. Пара дней на алгоритм. Неделю на тестирование.
58 mingw
 
25.04.16
12:41
(52)+ Все признаки перевести в числа-измерения. Есть слово Пуховой - измерение X1 = 1, иначе X1 = 0.
Каждая номенклатура будет точкой. В сильно многомерном пространстве.
Далее ищем соседние точки. Ближайших соседей. Они и есть аналоги.
Останется исключить ненужные аналоги.
Когда искали "Куртка зимняя пуховая красная". А нашли "Юбка зимняя пуховая красная".
59 Карупян
 
25.04.16
12:43
(58) Вот ты практически пишешь нейросеть, просто ты дальше начала не ушел
60 Maniac
 
25.04.16
12:48
Давайте начнем с того что касаемо одежды - можно реально описать списко  вещей.

Так уж сложишь что слов у одежды не 1 миллион, и явно даже не 10 000 слов.

Шарф, юдка, куртка, пояс, дубленка, фиговка, и так далее.

Этот список очень даже рально создать. Перечень вещей из словаря.

Эти слова, конкретно орпеделяющие вещь - главные во всем наименовании.

А значит если мы определили это главное слово - то поиск уже можно значительно сузить и искамть далее остальные второстепенные слова.
61 mingw
 
25.04.16
12:49
(59) Боюсь не понимаете принцип работы НС. И их назначение.
Они хороши в ограниченных случаях. Обучения на примерах. С учителем или без.
Встретив незнакомый вид номенклатуры. Вместо куртка или юбка - шарфик. НС впадет в ступор. Выдаст случайный результат.
62 Maniac
 
25.04.16
12:50
А если например еще будет вестись справочник производителей.
То главное слово + производитель. Еще более точнее определять и сузят список.

Сужение списка - будет влиять не только на более точные результаты но и корость выборки данных из базы. Так как всем известно что при большом справочнике номенклатуре и большим списке загружаемого прайса поставщика. При нечетком поиск - поиск может уйти в ступор что юзеру можно будет полдня ходить курить.

Надо максимально проанализировать и составить правила.

Первым шагом - нужно сто процентов завести хранимую таблицу перечня слов одежды.
63 Maniac
 
25.04.16
12:51
Если у тебя есть слово куртка. Но уже может быть первым запрос где мы выберем только куртки.
64 mingw
 
25.04.16
12:52
(62) Не одну таблицу. Еще нужен словарь синонимов.
65 mingw
 
25.04.16
12:52
(63) Куртка = пуховик?
66 Maniac
 
25.04.16
12:54
(65) ок. тогда уточнябющий признак у главного слова с перечнем комбинаций.

Добавь табличную часть у этого справочника с перечнем комбинаций.

Логично что это значительно упростит задачу.
67 Maniac
 
25.04.16
12:56
Программа должна понимать какие слова являются сто процентными и заглавными. На которые с высокой степенью до 100 процентов можно опираться.

Останется только искать весь остальной хлам. Но мы уже методом исключений решим этим задачу на 80 процентов.

Дальше уже будешь думать в рамках 20 процентов. И так далее.
68 spock
 
25.04.16
12:56
(65) см (38) - "Например, "Пуховик" и "Куртка зимняя на пуху" - аналоги."
69 Maniac
 
25.04.16
12:57
Те же прилагательные имеют окончание ая, ый и прочее. Тоже можно включить алгоритм.
70 Maniac
 
25.04.16
12:58
(68) все это вбиваем в справочник.

Явно касаемо одежды база данных таких расождений не будет огромной.
71 mingw
 
25.04.16
12:58
(69) Словарь синонимов. Он и есть.
72 Maniac
 
25.04.16
12:59
Я думаю что для одежды если 1000 наберется подобных ситуаций. то это будет максимумом.
73 Maniac
 
25.04.16
13:00
осенняя весення летняя зимняя.

Окончания убираем. тоже всего 4 определяющих слова
74 Maniac
 
25.04.16
13:01
осен - весен - летн - зимн

Этого быдет достаточно чтобы определить все комбинации сезонности конкретной одежды.
75 Maniac
 
25.04.16
13:02
Опять таки - всего навсего эти 4 слова - сузят диапазон поиска.

В сочетании с перечнем видов одежды.

Итого получаем справочники:

Вид одежды - тут даже можно какой нить стандартный заюзать. Например Ногменклатурные группы.


Далее справочник Сезонности - где 4 слова.
76 Maniac
 
25.04.16
13:03
Вот вам уже офигеть не встать 90 процентов.

А по сути если вы с одеждой работаете то в конце сто процентов и такой справчоник как Сеззонность просто всегда необходим.

Того глядишь еще и конфа получится торговля одеждой. какая нибудь.
77 Maniac
 
25.04.16
13:05
Справочник цветов.

Вот и все!
За три справчоника полностью решается задача.

Всякие приставки можно игнорировать. Напиши в списке разложения на ключевые слова чтобы все что меньше 3 знаков выбрасывалось.
78 Карупян
 
25.04.16
13:05
(61) Обучение сети - тоже что и составление таблицы аналогов.
Все вручную.
Мимо таблицы - промах
79 Maniac
 
25.04.16
13:05
если это бквы типа приставок. Их тоже в русском языке всего 10 штук.
80 Maniac
 
25.04.16
13:07
1) ВИды одежды - главный справочник перечисления одежды
2) Сезонность - с обрезкой окончания.
3) Цвета
4) Размеры.
Весь остальной мусор выбрасывать при поиске.
81 mingw
 
25.04.16
13:07
Можно без разбора на признаки. Очень быстрый поиск. Гуглить simhash.
82 Maniac
 
25.04.16
13:12
От чувака явно требуют решить конкретно в 1С и скорее всего конкретно идет о загрузке данных, приходных и тп.
83 spock
 
25.04.16
13:27
(82) Маня, ты как всегда мимо кассы. см. (29) - товары приведены здесь в качестве упрощения. Вообще, это нужно не для 1С и не про товары. Но вариант на 1с я тоже приму (см. в нулевом - "Реализация возможна на любом ЯП, даже лучше, если не на 1С. ").
84 Maniac
 
25.04.16
13:31
Ну ок мимо значит мимо. задача из того же рода.
85 spock
 
25.04.16
13:34
(84) "задача из того же рода." - это да.
86 spock
 
25.04.16
13:37
(12) На хабре один товарищ очень полезные статейки на этот счет написал: https://habrahabr.ru/users/kuznetsovin/
87 Лодырь
 
25.04.16
13:43
(85) Так о чем задача то изначальная? И самое главное, при чем тут mista, если 1с не надо, от слова совсем )
88 spock
 
25.04.16
13:48
(87) см (0): "Интересует практический опыт решения подобных задач."
89 spock
 
25.04.16
13:59
(87) Отвечу по другому: есть фронт, который работает с данными, а анализ и обработка частично реализована в бэке на 1с со словарями и всякими помощниками. Это не удобно. Желательно это перенести из бэка на фронт с минимумом человеческого участия, вмешательство нужно только, если появились новые данные, которых до этого не было в модели.
90 Лодырь
 
25.04.16
14:16
(89) Так понятно. Если я верно понял, вы хотите задачу чистки данных в бэке уменьшить за счет фронта. Не пробовали использовать регламенты заполнения данных? Например жесткую стандартизацию. Де факто то, что вы описываете в (1)
91 Лодырь
 
25.04.16
14:27
(89) У нас есть подобная система, которая ищет аналоги для новых товаров, чтобы их не плодить, но она работает очень тупо - мы жестко стандартизируем виды и характеристики товара. И не создаем новую номенклатуру при наличии существующих с аналогичными комбинациями вида и новые характеристики при наличии аналогичных характеристик. Работает хорошо. НО! тк у нас целое стадо разных связанных баз, то в момент смены модели у нас творится иногда полный пиндец, если где то модель не успела обновится(или не успели пересчитаться характеристики по новой модели).
92 mingw
 
25.04.16
14:35
(78) Нет. По алгоритму достаточно добавить запись. В таблицу.
С НС заново нужно обучать. Пройтись по всем сочетаниям. Иначе не поймет.
93 Лодырь
 
25.04.16
14:41
(92) Ну изменится у вас коэфф между входом "куртка пуховая" и классом "пуховик" с 0 до скажем 0.9. В чем разница?
94 mingw
 
25.04.16
14:44
(93) Не понял. Была обученная сеть. Добавили входов. И не надо переобучать?
95 Pixelrat
 
25.04.16
14:55
(0) Допустимы ли ложные ассоциации?
96 Лодырь
 
25.04.16
14:56
(94) Полностью нет.
97 mingw
 
25.04.16
14:58
(96) Да ну? Смотря какая сеть. Но соседние с добавленными будут врать. Дико.
98 Pixelrat
 
25.04.16
15:04
Затык первый:
как из "Куртка зимняя пуховая красная" и "Пуховик красный" вычленить характеристики (Товар: "Куртка", Х1: "Зимняя", Х2: "Пуховая", Х3: "Красная")?
99 mingw
 
25.04.16
15:12
(98) Еще раз. Повторю. Словарь.
Поиск слов. И сочетаний слов. Из наименований в словаре.
Или нашли и знаем что это. Или не нашли и спрашиваем. Что это?
100 mingw
 
25.04.16
15:13
(99)+ Для неважных будет признак - выкинь.
101 Pixelrat
 
25.04.16
15:16
(99) Ненужное беспокойство, т.к. у меня именно так и реализовано. Это ТСа нужно на путь направить.
102 Pixelrat
 
25.04.16
15:17
Есть целые конторы, получающие деньги за привязку к канону.
103 Pixelrat
 
25.04.16
15:22
Кстати, хорошо если канон есть.
104 spock
 
25.04.16
15:34
(98) Тут все просто, пусть каждое слово в названии товара будет считаться характеристикой.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой