![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Младшие товарищи спросили, есть ли функция сравнения строк. Но функция более интеллектульная, которая возвращает "процент схожести" строк. Например строки "string1" и "string2" похожи примерно процентов на 95. А строки "string_abc" и "string_def" похожи на 70 процентов (примерно). На ум приходит только по символьное сравнение, но оно обломится при первом же другом символе. То есть строки "a_string" и "bс_string" похожи на 85 процентов, а посимвольное сравнение посчитает строки вообще не похожими ИМХО.
Подскажите, есть ли еще варианты сравнения? ЗЫ Есть вариант сравнивать по 2 символа. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
судя по примерам -- сравниваеш посимвольно до первого расхождения и потом делиш длину полученнй строки на длину одной из строк
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
можно искать слово функцией Pos, не нашли , убираем последний символ и снова ищем , до победного или нет конца
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Я бы сделал так
1) посимвольно сравниваем строки записываем, сколько подряд идущих символов совпало. Сдвигаем вторую строку на один символ - опять сравниваем и вычисляем максимум идущих подряд одинаковых символов. Продолжаем сдвигать и сравнивать до окнчания второй строки. 2)Находим в какой из позиций сдвига была максимальная схожесть. 3)Удаляем одинаковые фрагменты в обоих строках. 4)Переходим опять к пункту 1 и делаем это до тех пор пока за все время поиска не найдем одинаковых последовательностей больше длинны в один символ. сумма длин всех вычтеных последовательностей деленная на всю длинну строки даст нам степень схожести -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Называеться сие: приблизительный(нечеткий) поиск
Например одна из реализаций СДВИГ-И -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
в PHP вычисляется... как же его... расстояние Ливенштейна? вроде, так... посмотри в интернете, что это такое. Уже довольно зрелый и отлаженный алгоритм...
|
|||
|
||||
| Palladin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
Да-да вроде как всё пашет(на форму кидаеш 3 edita и одну кнопку, в первом и втором едите строки которые сравниваеш, в третью выводиш процент), вот реализованый по алгоритму код:
P.S. Это то что ты хотел??? -------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
||||
|
|||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
||||
|
||||
| Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
Гы маленькая доработка и всё пашет
-------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Смотря где ещё применять такое сравнение. Вот к примеру писал сравнение прайсов от разных фирм, так там предпочтение отдавалось цифровым индексам перед словами. А ещё есть подход, когда анализируют фонетическую схожесть (типа "sounds like.." в том же буржуйском WinWord'е). В любом случае, строку всегда раскладывал на слова, потом чистил всю пунктуацию, отделял цифры от букв, переводил зарубежные слова по словарю (или тупой транслит).
Всё зависит от области применения. Кста, можно и пример посмореть (не реклама, просто, чтоб не быть голословным): Exceller --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
...ищем "расстояние Левенштейна"...
|
|||
|
||||
| Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
Я думаю что "Младшим товарищам" то что ты написал не нужно -------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
||||
|
||||
| Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
ГЫ, ща будем думать
Добавлено @ 13:42
Ошибки описанные выше устранены -------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Пашет
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |