закрыто

Статус: Offline
Реєстрація: 02.11.2007
Повідом.: 1419
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #1
закрыто

закрыто
 
Останнє редагування:
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #2
Это на самом деле очень интересная задача. В продаже существует несколько платформ для ее решения. Можно погуглить. Однако опыт практического использования подобных платформ говорит, что невозможно их настроить в полностью автоматическом режиме. Они будут работать только в полуавтоматическом режиме.
 
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #3
Я не имею опыта работы с такими программами, но соглашусь, что сделать такую программу, которая хорошо работала бы автоматически - сложно. Ключевую проблему я вижу в том, что одно и то же может быть в разных прайсах названо по-разному. Простой пример из области компьютерной техники: человеку с опытом очевидно, что
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
это уже немного разные позиции, которые могут иметь разную цену. Автоматически же это распознать не так-то и легко.
 
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #4
А по-моему, как раз для таких целей Билли и создал VBA

Т.е., сделать такую программу средствами VBA не будет сложно
 
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #5
Кто считает что это не будет сложно и сможет написать такую программу, милости просшу в личку
 
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #6
Написать-то можно и не сложно. Главное, чтобы потом не оказалось, что этой программой сложно пользоваться

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

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

Удачи.

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

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

Мне кажется, что тут без понимания семантики никуда
 
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #11
Saurus, купи одно из готовых решений. Будет дешевле и лучше.

Разрабатывать для себя весьма сложный программный продукт, в то время как в продаже есть рабочие (относительно рабочие) решения - глупо.
 
  • 🔴 07:31 Повітряна тривога в Харків.обл.
  • #12
подскажите что купить? название

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

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