подписка
Подписаться
Главная Форум Ведение бизнеса Автоматизация

Автоматизация обработки прайс-листов поставщиков

Подписка на RSS
altsupport
14/01/2008
Цитата:

морфологический анализ

Это больше поможет при создании синонимайзера =)

Цитата:

Но вопрос: где взять эталонную базу моделей?

Завести самим, ну, или, "понаграбить" с Яндекс.Маркета

Цитата:

Если интересно - могу описать алгоритм более подробно

Да, было бы интересно на него посмотреть.
Скопировать ссылку на сообщение
Ответить
Svyat
19/01/2008
to altsupport:
Цитата:

Да, было бы интересно на него посмотреть.


Всё просто до безобразия. У нас есть две таблицы товаров, одна "эталонная" - с правильными названиями, описаниями и.т.п. для выгрузки в магазины, а вторая - все прайсы поставщиков с ихними наименованиями. Для первой таблицы триггер при изменении наименования добавляет в подчинённую таблицу слова которые содержит это наименование. Например для "Пылесос GST1120/RT это будут:
    Пылесос
    GST
    1120
    RT


При идентификации, искомое наименование тоже разбивается на слова и SQL-запросом выбираются эталонные товары с наибольшим коефициентом совпадения.

Это описание алгоритма вкратце. Замечу, что при количестве товара в эталонной базе около 5000 и суммарному количеству в прайсах поставщиков 40000 на core quad 2400 (на одном ядре!!!) процесс идентификации по всем товарам занимает менее 7-ми минут. А вот процент успешной идентификации зависит от правильности наименований номенклатуры как эталонной так и поставщиков.

Также в ближайшее время планируется усовершенствование этого механизма, например составление списка слов не принимающих участия в идентификации, очень актуально, например, для мобильных телефонов, т.к. в названии часто указывают перечень цветов.
Скопировать ссылку на сообщение
Ответить
altsupport
20/01/2008
2Svyat
А вы ведете базу знаний? Ведь поставщик в своей базе не так часто меняет названия. Да и при суммарном 40 000, не так часто появляется новый товар?
Т.е. по таблицам (после модерации) получается вот так (немного по-другому будет (см. ниже)):
Название-эталон|Название как у поставщика 1|Название как у поставщика 2
...
Получаете прайс поставщика. Берете название, сверяете с названием его колонки. Если на 100% совпадает, значит это то и есть.
Все что не совпало, то в конце автоматического распихивания выведется на ручное распихивание. При ручном распихивании, также пополняется (запоминается) база знаний (какое наименование какому эталоному).
А чтобы быстрее сверялось, то добавить еще колонку, где будет храниться хэш названия (тем же md5). И тогда - получили названия поставщика, его в md5 (удалив двойные пробелы и в начале и конце) и сверять с колонокой. Полю md5 назначит индекс или уникал. Тогда очень быстро будет чекаться.
...
Весь гиммор это создание эталоной базы (но можно понапарсить) и первичного создания базы знаний. Но все зависит как организуете. Ведь если сделать удобный интерфейс первоначального распихивания (с алгоритмом предугадывания), то для наполнения сиди и тока кликай мыхой выбирая раздел, фирму и т.п. На создание такой базы у одного человека уйдет около месяца (если не свихнется). Поэтому надо сажать всех. Главное чтобы без ошибок распихивали. А чтобы без ошибок, тогда надо дублировать друг-друга. Т.е. если один человек этот товар поместил сюда и второй тоже этот же товар поместил сюда, то так и есть. Если они поместили в разные места, то все вернуть назад, а товар пометить как проблемный.

Цитата:

списка слов не принимающих участия в идентификации

Тоже грамотно. Главное чтобы эти товары по цене не отличались. А то иногда бывает что из-за цвета один дороже другого.
...
Вообще, уже обсуждали — было бы все едино для всех. Т.е. у каждого товара был бы свой ID (как ISBN у книг) и каждый поставщик вставлял бы его в свои прайсы. Как бы резко в гору пошла коммерция! Так как многих такие сопоставления останавливают. Была бы конкуренция. Цены снизились. Повысилось качество. Потому, что в таком случае продавцы бы обрабатывали большее количество прайсов, соответствено выбирали бы те, где дешевле или где обслуживают быстрее и качественей.
Т.е. на том же государственном уровне ввели бы реестр (обязателен для производителей).
Выпустил товар? Дуй в реестр, вводи название, вводи описание, получай ИД.
А остальные (цепочка от производителя до конечного продавца) этот ИД держат в колонке к товару.
Скопировать ссылку на сообщение
Ответить
Svyat
21/01/2008
to altsupport:
Цитата:

А вы ведете базу знаний? Ведь поставщик в своей базе не так часто меняет названия. Да и при суммарном 40 000, не так часто появляется новый товар?

В нашей системе используется СУБД MS MSQL Server, поэтому мы можем себе позволить хранить две таблицы как эталонный катклог так и все ранее импортированные прайсы, и при импорте прайса поставщика мы есесно сверяем номенклатуру с уже имеющейся у нас (или по уникальному коду поставщика или по наименованию) и привязка к эталонам идёт по ID которые являются уникальными ключами записи (md5 сдесь уже никчему). Более того, у нас храниться вся история изменений всех полей, от даты импорта до наименования и цены!!! (Логируется триггерами).

Цитата:

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

Выше я приводил скриншот этого механизма, вся привязка занимает не более 2-5 секунд если товар есть в эталонной базе. И делается это только один раз и только в случае, если автоматическая идентификация не сработала. Один оператор за день легко может привязать более 3000 прайс-строк.

Цитата:

Главное чтобы без ошибок распихивали. А чтобы без ошибок, тогда надо дублировать друг-друга. Т.е. если один человек этот товар поместил сюда и второй тоже этот же товар поместил сюда, то так и есть. Если они поместили в разные места, то все вернуть назад, а товар пометить как проблемный

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



А вообще у меня идей по усовершенствованию алгоритма масса, и по возможности они тестируются на приемлемость использования. Главный параметр, это чтобы идентификация 1-й строчки прайса не занимала много времени. Для интернет-магазинов это не особо критично, т.к. количество прайс-строк в них редко превышает 100 тыс, и добавляется/изменяется в них за менсяц 5-10%. А вот для больших каталогов и прайс обменников это очень критично. Сейчас скорость довольно приемлема но о результатах смогу сообщить после завершения тестов и некоторого времени "промышленной" эксплуатации.

А по поводу единой базы идентификаторов - есть тот же штрих-код, но я кажись видел его в прайсах раза. Да и например китайцы, тот же Orion грешит тем, что тулит один и тот же штрих-код на все котобки. Везде есть свои изъяны.
Скопировать ссылку на сообщение
Ответить
altsupport
21/01/2008
Цитата:

md5 сдесь уже никчему

Не, ИД это ИД (наверное автоинкремент), а мд5 - это хэш от наименования. Хэш с хэшем (считайте тоже строка но меньше) быстрее сравниваются (по нему выбирается). Так не заметно, а при больших количествах (несколько сотен тысяч) разница будет видна.
Тоже самое пораспихивая на кучу маленьких таблиц. Но для вас всё это мало актуально, у вас свой SQL Server.

Вы делитесь усовершенствованиями, что удалось выяснить эксперементальным путем. Так как актуально.
Скопировать ссылку на сообщение
Ответить
S
23/01/2008
Тема очень интересная, но наша компания реально однаждый связалась с хохлами и очень потом пожалела об этом... Да и весь треп на 4 страницы это ни что иное как реклама!!! Какие мы хорошие, какие мы умные и т.д. Не написать ли проще господа хочу продать свою программу, функционал такой-то, возьмите хоть кто-то. Я например моло разбираюсь в этих тонкостях которые написаны выше, но даже я понимаю насколько непростая задача. Хотелось бы посмотреть продукт и цену на него.
Скопировать ссылку на сообщение
Ответить
altsupport
23/01/2008
Цитата:

Не написать ли проще господа хочу продать свою программу,

Я сообщить, что меня из списка вычеркивайте.
Я лично для себя.
Скопировать ссылку на сообщение
Ответить
Svyat
19/02/2008
to S:
Успех внедрения зависит не только от исполнителя но и от заказчика, а в данном случае наверное ещё и существенно.

И если писать
Цитата:

"Я например моло разбираюсь в этих тонкостях которые написаны выше"

то зачем тогда брызгать слюной?
Скопировать ссылку на сообщение
Ответить
Valmi
03/03/2008
Автоматическое обновление цен и наличия - это не так сложно, как кажется.
В нашем магазине обновление производится ежедневно. На локальном сервере обновление прайс-листов из 5000-10000 позиций товарв занимает 20-30 секунд.
На сервере в инете примерно так же, больше определяется скоростью закачки.

Всем товарам ИМ должны быть назначены артикулы:
1 вариант: артикулы поставщика и будут артикулами ИМ - в случае, если товары не пересекаются у поставщиков.
2 вариант, посложнее: артикулы ИМ формируются свои (можно AABBCCC, где AA - номер раздела, BB - номер подраздела, CCC - порядковый номер товара в подразделе). Но для того, чтобы по артикулам поставщика скриптом узнавались товары в ИМ, нужно составить таблицу соответствий артикулов ИМ и поставщиков. При первоначальном заполнении базы это несложно делать.

Скрипт пишется на PHP/MySQL, файлы прайсов поставщиков только нужно будет пересохранять из xls в формат csv (есть в любом Экселе) - текстовый файл, разделенный запятыми.
Скопировать ссылку на сообщение
Ответить
Леонид
03/03/2008
А как быть, если поставщик выдает файл с остатками, в котором к ячейках с артикулами произвольное количество пробелов после артикулов? Поиск то уже пойдет не по строгому соответствию... и тогда некоторые артикулы могут стать для экселя тождественными.. 001 и 0001 например
Скопировать ссылку на сообщение
Ответить
altsupport
03/03/2008
Цитата:

А как быть, если поставщик выдает файл с остатками, в котором к ячейках с артикулами произвольное количество пробелов после артикулов?

Так все-равно для каждого поставщика пишеться свой обработчик.
Тут проблема больше в человеческом факторе. Не туда тыкнули, не то ввели, раз в неделю будут оформление прайса менять. Поэтому и самое лучшее, но почти не реальное (уже писали) - на государсвенном уровне ввести какой-нить единый реестр товаров. И там четко прописать (ГОСТ?) как должен выглядеть прайс (какие поля) и каждому товару присваивается свой уникальный артикул. И когда все будут по этому реестру - вот тогда не жизнь, а сказка. Причем - всем. Хотя человеческий фактор и ошибки все-равно остануться.
Скопировать ссылку на сообщение
Ответить
Svyat
03/03/2008
Ну пробелы между остатком и артикулом - это далеко не самое страшное, для этого можно написать дополнительный скрипт обработки который при необходимости будет разделять остаток от артикула а лишние пробелы удалять. Да и артикул не лучшая привязка, лучше всего это уникальный код из базы данных поставщика. У многих он в прайсе есть, этим они хорошо упрощают жизнь не только себе но и другим.
Скопировать ссылку на сообщение
Ответить
Disem
13/03/2008
А еще лучше когда все услуги по согласованию прайсов и справочника клиента берет на себя организация предоставляющая услугу сводного прайса))) Ведь мало того что нужно закачать прайсы в систему - нужно же еще и наименования к единому коду привести. Или как в нашем случае мы приводим к единому эталонному наименованию в нашем справочнике. Так что получается и прайсы поставщиков и справочник клиента привязан к единому коду. Нужно только количество для заказа проставить да и то можно автоматом дефектуру загрузить и заявки автоматом по поставщикам разойдутся. :) А в результате поставщик получает заявки со своим кодом и наименованием(может получить и в нужном ему формате) а наш клиент получает накладную в своем формате и со своими наименованиями и кодами.
Скопировать ссылку на сообщение
Ответить
hqiuha8a
28/03/2008
Всем здравствуйте.

Lev Alin:

Почитал я Ваши дискусии и засел за новый продукт, который думаю будет отвечать многим требованиям продиктованным рынком. Постараюсь в новой конфигурации к 1С совместить и "Анализ прайс-листов" и "Выгрузку в ИМ из 1С", которые уже зарекомендовали себя. Правда скоро не ждите месяца через 3-6 будет.

Вопрос к Автор: Lev Alin
Подскажите плз. а чем Вас сейчас Ваша версия продукта не устраивает? Что именно хотите доработать?
По описанию вроде бы у Вас сейчас есть все, о чем шла речь в этом топике
http://www.b2b-soft.ru/content/view/13/31/#b1

Или же Ваше описание не соответствует реальным возможностям программы? (надеюсь, что все соответствует)
Тогда в чем же дело?
С уважением
Сергей
Скопировать ссылку на сообщение
Ответить
hqiuha8a
28/03/2008
Автор: Lev Alin
Спасибо Вам за ответ.

Lev Alin:

1С Управление торговлей очень хорошая конфигурация, но она слишком перегружена поэтому ее постоянно приходится затачивать под потребности заказчика.

У меня на этот счет другое мнение...
Ничего там в конфигурации "затачивать" не нужно..... тем более для мелких предприятий....

Автор: Lev Alin
К Вам еще вопрос:
Со стандартной конфигурацией 1С 8.0 Управление торговлей 10.2 Ваша обработка
http://www.b2b-soft.ru/content/view/13/31/#b1
сейчас нормально работает?
Все заявленные функции в описании обработки выполняются?

У меня есть желание приобрести эту обработку НО!
1. Т.к. у данной обработки нет демо-версии (есть только описание)
2. Есть не совсем гладкая история общения с разработчиком....
3. Кто и как будет осущствлять/уже осуществляет саппорт по данной обработке
4. Меня не интересуют какие-либо "затачивания" или "доработки".... Интересует только ГОТОВЫЙ ПРОДУКТ с конкретно описанным функционалом и под СТАНДАРТНЫЕ конфигурации.

Подскажите плз. кто-нибудь уже использует обработку Автор: Lev Alin ?
Какие впечатления? отзывы?
А то платить 12000 только за описание на сайте как-то для меня пока не очень....

Ко всем с уважением
Сергей
Скопировать ссылку на сообщение
Ответить
Ответить
Разделы форума
Открытие бизнеса
Привлечение клиентов
Удержание клиентов
Ведение бизнеса
Работа с маркетплейсами
Тенденции развития
Специальные форумы