Змінюй хід війни! Допомагай ЗСУ!

закрыто

  • Автор теми Автор теми Saurus
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 02.11.2007
Повідом.: 1419
закрыто

закрыто
 
Останнє редагування:
Это на самом деле очень интересная задача. В продаже существует несколько платформ для ее решения. Можно погуглить. Однако опыт практического использования подобных платформ говорит, что невозможно их настроить в полностью автоматическом режиме. Они будут работать только в полуавтоматическом режиме.
 
Это на самом деле очень интересная задача. В продаже существует несколько платформ для ее решения. Можно погуглить. Однако опыт практического использования подобных платформ говорит, что невозможно их настроить в полностью автоматическом режиме. Они будут работать только в полуавтоматическом режиме.
Я не имею опыта работы с такими программами, но соглашусь, что сделать такую программу, которая хорошо работала бы автоматически - сложно. Ключевую проблему я вижу в том, что одно и то же может быть в разных прайсах названо по-разному. Простой пример из области компьютерной техники: человеку с опытом очевидно, что
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 , то ясный пень, это значение свойства частота процессора. Понятно, не обязательно класса процессора, но по совокупности свойств определить класс реально. Таким образом из строки определяем класс и формируем объект со выделеными значениями свойств. Вот этот объект и запускать на сравнение. Каждый прайс при поступлении ковертировать в объекты. Собственно именно такой логикой мы и сами определяем написаное. Сначала класс объекта, а затем его свойства.
Такой принцип я применил в трансляторе своего языка программирования. Там еще имеет значение позиция лексемы. Но это не принципиально. Главное что б в случае не определения класса или двойственности сообщать, например, подкрашиванием строки.. Или как я делаю расцвечивать объекты каждого класса отдельным цветом, а не определенные красным. Любопытно, что при синтаксическом ****изе можно класс объекта определить цветом (в общем случае шрифтом). Синтаксический ****изатор способен ****изировать и свойства шрифта, а не только коды букв. Это малость отличается от классической схемы работы транслятора.. Но это уже теория.. Главное, что такая схема работает и обоснована.. Да, не дешево, но решает массу проблем..
 
Да, не дешево, но решает массу проблем..
не только решает, но и создает каждый раз, как секретарше тютькиной придет в голову новый способ записывать конфигурацию компюьтера.
 
не только решает, но и создает каждый раз, как секретарше тютькиной придет в голову новый способ записывать конфигурацию компюьтера.

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