|
Выявление аналогов товара от разных поставщиков | ☑ | ||
---|---|---|---|---|
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) Тут все просто, пусть каждое слово в названии товара будет считаться характеристикой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |