Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Умное сравнение строк 
:(
    Опции темы
lazarevmax_mcx
Дата 2.10.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.6.2004

Репутация: нет
Всего: нет



Такая проблема:

нужно сравнить две строки названий товара из прайса:

Сетевой фильтр Sven Platinum, 1.8 метра
Сетевой фильтр <Sven Platinum Pro> 1.8 м

и чтобы в результате сравнений было true.

а если сравниваются строки:

Сетевой фильтр Sven Platinum, 1.8 метра
Сетевой фильтр Sven Optima Special 1.8 м

возвращал false....


У кого может быть есть идеи?
PM MAIL   Вверх
Pakshin A. S.
  Дата 2.10.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Вот прикрепил идею...

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  CompareText_Demo.exe 54,81 Kb
PM   Вверх
Zero
Дата 2.10.2005, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(lazarevmax_mcx @ 2.10.2005, 09:28)
У кого может быть есть идеи?

А у меня такая:
1. Создаёш два буфера типа string;
2. Потом загоняшь в каждый буферы соответствующие строки;
3. Потом через цикл по кол-ву символов во втором буфере, удаляешь символы из него которые не подходят по определённым критериям (например: спецсимволы, скобки и т.п.)
4. Далее остатки буферов сравниваешь.

Это сообщение отредактировал(а) Zero - 2.10.2005, 11:42
PM MAIL ICQ   Вверх
Vet
Дата 2.10.2005, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



lazarevmax_mcx, под твое условие подошло бы и:
Pos('Sven Platinum', 'Строка с фильтром') > 0
PM MAIL   Вверх
cardinal
Дата 2.10.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



А у меня другая идея: навести порядок в прайс-листе. smile

Зачем парится над хитрыми решениями поиска и сравнения, когда можно внести ограничения в систему ввода наименований товара и обеспечить тем самым порядок!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Pakshin A. S.
Дата 2.10.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



cardinal Это-то само собой, но релизовать реальную сравнивалку строк тоже интересно...
PM   Вверх
Zero
Дата 2.10.2005, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



cardinal а если у них уже всё введено, и lazarevmax_mcx парится над тем как это всё объеденить, то ты предлагаешь, не парится над прогой и сделать всё вручную, т.к. голова умнее программы???
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 2.10.2005, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Впринцепе если уже речь пошла о голове, то мы ведь не сможет реализовать принцип сравнения двух строк, который аботает у нас в голове, а только максимально приблизиться к нему, а значит погрешности все-таки будут...
PM   Вверх
cardinal
Дата 2.10.2005, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(Zero @ 2.10.2005, 19:57)
то ты предлагаешь, не парится над прогой и сделать всё вручную, т.к. голова умнее программы???

А что если кто-то начал делать г...., извиняюсь, то надо продолжать это делать? Возможно это как раз тот момент, в который еще можно переработать все вручную, чтобы в будущем не париться.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
_hunter
Дата 3.10.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



+ это хорошо, что автор знает что Сетевой фильтр Sven Platinum и Сетевой фильтр Sven Platinum Pro это одно и то же. ибо я, например, так бы не сказал...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Петрович
Дата 4.10.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Интересно, значит предположим имеем три строки:

1. Сетевой фильтр Sven Platinum
2. Сетевой фильтр Sven Platinum Pro
3. Сетевой фильтр Sven Optima Special


При этом первые две это один товар, а третья это другой товар.
Интересно, но по моему, это задача даже не для искуственного интелекта, а для системы с самообучением, которая сама в состоянии производить поиск в инете, в бумажных справочниках производителей и пр.литературе.
Иначе, как она сможет определить что Platinum и Platinum Pro это одно и то же, однако сильно отличается от Optima Special?
smile
Добавлено @ 17:39
Кстати, а как на счет Сетевой фильтр Sven Platinum Pro Plus?


Это сообщение отредактировал(а) Петрович - 4.10.2005, 17:38


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Pakshin A. S.
Дата 4.10.2005, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Я предлагаю попробовать нечто типа процента несовпадения строк. Т. е. использовать схему распознавания букв, скажем в FineReader...
PM   Вверх
_hunter
Дата 4.10.2005, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



ды а толку с этого процента несовпадения? проблему предыдущих двух постов это не решит...

тут разве-что можно создать базу всех встречающихся наименований и вручную их сруппировать ( ну или id-шники одинаковые попрописывать ) и уже по этим id-шникам определять оно или не оно...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Zero
Дата 5.10.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата
2. Сетевой фильтр Sven Platinum Pro

Цитата
Кстати, а как на счет Сетевой фильтр Sven Platinum Pro Plus?

Петрович с плюсом это уже будет совсем другой элемент
А я предумал ещё один способ: smile
1. Рассмотреть в цикле каждое отдельное слово первой строки, и найти такоеже слово во второй строке;
2. потом:
-- если во второй строке, слов больше чем на одно то это разные товары,
-- если слова первой строки ненайдены во второй то тоже разные;
3. Если после сравнения каждое слово первой строки будет найдено во второй строке, и во второй строке останится максимум 1 слово, тогда ─ это один и тот же товар;....

При этом регистр должен быть одним (например все символы должны быть маленькими), при этом в обоих строках удалить все спецсимволы и т.п.

Это сообщение отредактировал(а) Zero - 5.10.2005, 11:48
PM MAIL ICQ   Вверх
_hunter
Дата 5.10.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



пункт 2.2 -- не катит ( если сравнивать наоборот )
+ алгоритм не катит -- не факт что какой-нить "креатив платинум" и "креатив про" тоже одно и то же.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.