закрыто

Статус: Offline
Реєстрація: 02.11.2007
Повідом.: 1418
закрыто

закрыто
 
Останнє редагування:
Это на самом деле очень интересная задача. В продаже существует несколько платформ для ее решения. Можно погуглить. Однако опыт практического использования подобных платформ говорит, что невозможно их настроить в полностью автоматическом режиме. Они будут работать только в полуавтоматическом режиме.
 
Это на самом деле очень интересная задача. В продаже существует несколько платформ для ее решения. Можно погуглить. Однако опыт практического использования подобных платформ говорит, что невозможно их настроить в полностью автоматическом режиме. Они будут работать только в полуавтоматическом режиме.
Я не имею опыта работы с такими программами, но соглашусь, что сделать такую программу, которая хорошо работала бы автоматически - сложно. Ключевую проблему я вижу в том, что одно и то же может быть в разных прайсах названо по-разному. Простой пример из области компьютерной техники: человеку с опытом очевидно, что
INTEL Pentium Dual-Core E2200 2.2GHz (800MHz,1MB,Conroe,S775) tray
из одного прайса и
CPU Intel s775 Dual-Core E2200 (2.2Ghz, L2: 1024Kb, 800Mhz) tray
из другого это одно и то же, в то время как
INTEL Pentium Dual-Core E2180 2.0GHz (800MHz,1MB,Conroe,S775) box
и
CPU Intel s775 Dual-Core E2180 (2.0Ghz, L2: 1024Kb, 800Mhz) tray
это уже немного разные позиции, которые могут иметь разную цену. Автоматически же это распознать не так-то и легко.
 
А по-моему, как раз для таких целей Билли и создал VBA

Т.е., сделать такую программу средствами VBA не будет сложно
 
Кто считает что это не будет сложно и сможет написать такую программу, милости просшу в личку :)
 
Кто считает что это не будет сложно и сможет написать такую программу, милости просшу в личку :)
Написать-то можно и не сложно. Главное, чтобы потом не оказалось, что этой программой сложно пользоваться ;)

Теперь по сути:
Я думаю, что универсальное решение это совсем мрачно, а вот специализированное в какой-то области может оказаться значительно проще. Поэтому я рекомендую вам задуматься над тем, чего Вы хотите на самом деле и какой объём работ по настройке и поддержке автоматической работы Вы готовы совершать.
Например, есть простая идея реализации. Оператор обязан явно указать соответствия разных названий во всех прайсах, после чего программа использует именно эти данные без каких-бы то ни было признаков ИИ. Если прайсы небольшие, и номенклатура меняется редко - это вполне реалистичное решение. Если же Вы хотите анализировать, например, все прайсы харьковских компьютерных фирм, то объём работ по поддержке будет просто нереальным.

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

Удачи.

P.S. vlad7, мне любопытно, во сколько Вы оцениваете написание программы (на VBA или в любой другой среде), которая будет работать автоматически и корректно обрабатывать для начала хотя бы два прайса разных известных харьковских компьютерных фирм, из которых собственно и были взяты мои примеры в предыдущем посте? А если добавить ещё и третью фирму?
 
Останнє редагування:
Я от програмирования ушел достаточно давно, но когда-то встречал и использовал алгоритм, который определял степень в процентах схожести двух строк. Я его использовал в БД oracle, писал на plsql. Так вот один из вариантов следующий - пользователь задает уровень совпадения в %, и любые две строки, которые по определённому алгоритму показывают уровень совпадения выше порогового, считаются равными. Ну и тогда сравниваются цены. Написать програмку такую конечно можно, но чтобы не сильно гемороиться нужно знать формат таблиц прайсов, ну или загонять строки прайсов в БД без привязке к структуре самого прайса и сравнивать всё со всем, в общем задача интересная, в большей степени сложность в алгоритме, чем в реализации.
 
Я от програмирования ушел достаточно давно, но когда-то встречал и использовал алгоритм, который определял степень в процентах схожести двух строк. Я его использовал в БД oracle, писал на plsql. Так вот один из вариантов следующий - пользователь задает уровень совпадения в %, и любые две строки, которые по определённому алгоритму показывают уровень совпадения выше порогового, считаются равными. Ну и тогда сравниваются цены. Написать програмку такую конечно можно, но чтобы не сильно гемороиться нужно знать формат таблиц прайсов, ну или загонять строки прайсов в БД без привязке к структуре самого прайса и сравнивать всё со всем, в общем задача интересная, в большей степени сложность в алгоритме, чем в реализации.

Если готов взяться за такую програмку, напиши в личку, пообщаемся на эту тему :)
 
Останнє редагування:
wiki Расстояние Дамерау — Левенштейна
думаю идти следует в этом направлении
 
wiki Расстояние Дамерау — Левенштейна
думаю идти следует в этом направлении
Направление хорошее, но идти по нему не близко. Если считать расстояние, прямо как завещали отцы основатели, то просто посмотрите, какое оно будет для моих примеров и насколько (относительно) мала разница между расстояниями для совпадающих и не совпадающих позиций.

Мне кажется, что тут без понимания семантики никуда
 
Saurus, купи одно из готовых решений. Будет дешевле и лучше.

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

подскажите
 
Ради интереса в excel залил два прайса 2 компьютерных фирм города и попытался найти соответствие записи из одного прайса во втором. Использовался известный алгоритм нечёткого сравнения строк, в инете он хорошо описан, есть уже и код, так вот, поиск соответствия для одной записи в прайсе из примерно 1000 наименований занял около 20 сек, а сколько времени нужно для сравнения всех со всеми, а если прайсов не 2 а 10, в общем в лоб без дополнительных ограничений по поиску вряд ли такая задача решается за приемлемое время.
 
Есть любопытный подход. Использую в своей системе. Конечно, вопрос семантики. Т.е. сначала надо описать классы сравниваемых объектов. Затем по строке определить принадлежность классу и из данных строки определить свойства объекта. Это легче, потому как описание свойств (вместе с вариантами) есть в описании класса (прийдется описать лексемы, но это не так сложно. Механизм описания лексики присутсвует в средствах языка. Немного похож на формы БНФ). Например, если в строке встречается 2.0GHz , то ясный пень, это значение свойства частота процессора. Понятно, не обязательно класса процессора, но по совокупности свойств определить класс реально. Таким образом из строки определяем класс и формируем объект со выделеными значениями свойств. Вот этот объект и запускать на сравнение. Каждый прайс при поступлении ковертировать в объекты. Собственно именно такой логикой мы и сами определяем написаное. Сначала класс объекта, а затем его свойства.
Такой принцип я применил в трансляторе своего языка программирования. Там еще имеет значение позиция лексемы. Но это не принципиально. Главное что б в случае не определения класса или двойственности сообщать, например, подкрашиванием строки.. Или как я делаю расцвечивать объекты каждого класса отдельным цветом, а не определенные красным. Любопытно, что при синтаксическом анализе можно класс объекта определить цветом (в общем случае шрифтом). Синтаксический анализатор способен анализировать и свойства шрифта, а не только коды букв. Это малость отличается от классической схемы работы транслятора.. Но это уже теория.. Главное, что такая схема работает и обоснована.. Да, не дешево, но решает массу проблем..
 
Да, не дешево, но решает массу проблем..
не только решает, но и создает каждый раз, как секретарше тютькиной придет в голову новый способ записывать конфигурацию компюьтера.
 
не только решает, но и создает каждый раз, как секретарше тютькиной придет в голову новый способ записывать конфигурацию компюьтера.

А вот как раз и наплевать. Ну, если уж она совсем лажу напишет. Вариантов не так уж много. А порядок не ибет..
 
Назад
Зверху Знизу