0. Serg1701 94 20.04.18 14:18 Сейчас в теме

Нечеткое сравнение строк. Метод Джаро-Винклера на 1С

Схожесть строк. Метод Джаро-Винклера. В обработке реализован алгоритм нечеткого сравнения строк.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
3. onec.developer 113 23.04.18 09:45 Сейчас в теме
Можешь простыми словами объяснить, что означает результат?
4. Serg1701 94 23.04.18 10:00 Сейчас в теме
(3) Если речь идет о сравнении по словам, то результат - это сумма попарного сравнения слов в двух строках. Допустим мы сравниваем две строки: "ааа ббб ввв" и "ббб ггг ааа". Сначала из первой строки берется слово "ааа" и поочередно сравнивается со всеми словами из второй строки: "ббб"-результат =0, "ггг"-результат =0 и "ааа"-результат максимальный 1, т.к. слово идентично. К ЗАЧЕТУ в первой итерации принимается максимальный результат 1. Далее сравнение "ббб" из первой строки, результат тоже будет 1. Прибавляем с общему результату. И наконец "ввв" с результатом 0. Итого общий результат будет 2. Можно его назвать своего рода рейтингом сравнения.
А для сравнения слов между собой применяется алгоритм Джаро-Винклера, функция которого и возвращает результат от 0 до 1.
5. Evil Beaver 5340 23.04.18 10:52 Сейчас в теме
Тут старожили с "семерки" могут вспомнить внешнюю компоненту, которая делала фонетическое сравнение. Т.е. "Джек Дэниелс" и "Jack Daniels" могла сопоставить.

И, по-моему, даже Jek D@nielz тоже могла находить.
DrAku1a; sbcode; +2 Ответить
6. Serg1701 94 23.04.18 11:31 Сейчас в теме
(5)При желании транслитерацию в данную обработку не сложно будет добавить.
9. JohnyDeath 290 23.04.18 19:54 Сейчас в теме
(6) тут не в транслитерации дело, а именно в фонетике. Т.е. в похожести звучания двух слов/выражений
15. DrAku1a 1292 26.04.18 05:21 Сейчас в теме
(9) Кстати, хорошая идея для разработки.
7. onec.developer 113 23.04.18 12:34 Сейчас в теме
Хорошо бы конечно более однозначный результат выводить.. например вычислить максимальный результат и выводить %
8. Serg1701 94 23.04.18 12:52 Сейчас в теме
(7)Согласен, можно и так. На досуге попробуем.
10. CheBurator 3566 24.04.18 02:03 Сейчас в теме
https://infostart.ru/public/14255/ - вот моя семерочная демо на основе strmatch
на основе этой ВК я столько этих нечетких сравнений для разных клиентов и областей написал...
.
было бы, конечно, интересно провести "соревнование" (не 7 с 8 ;-), а того, как ище одно и второе.
принцип простой. на вход двух программ подаем одинаковый список допустим из 1000 наименований, в т.ч. например, наименования книг с ISBN, фармацевтики, электроники и прочее - то есть достаточно смешанный

далее зрители кидают нам строку. любую. в т.ч. могут и из списка кинуть точное совпадение и с вариациями разными. как захотят.
каждая прога выдает 10 наиболее похожих из списка.
судейское жюри оценивает.
проводим батл из 40-50 раундов.. ;-)
.
прикольно, а че... хоть какой-то оживляж...
(на сайте есть и другие подобные решения - их авторов тоже можно привлечь)
BigB; Serg1701; Ovkay; Gluk_1C; KEV8383; UniversaLL; Altair777; +7 Ответить
12. rpgshnik 888 24.04.18 06:03 Сейчас в теме
(10) интересно будет в рамках инфостарт ивента... не более думаю. Подкиньте идею своему другу :)
11. CheBurator 3566 24.04.18 02:04 Сейчас в теме
если что - пишите в личку.
13. Serg1701 94 24.04.18 08:54 Сейчас в теме
Поддерживаю, интересная идея
14. o2005 59 25.04.18 08:13 Сейчас в теме
Делал такое "Программа для нечеткого сравнения строк FuzzyStringComparison"
infostart.ru/public/442217/
16. DrAku1a 1292 26.04.18 05:30 Сейчас в теме
Как-то очень-очень давно (лет 10 или более назад) - делал такое... ну как делал... нашёл алгоритм то ли на SQL, то ли на C++, разобрал и сделал аналог на 1С, применил в обработках.
Сверка справочников между базами v77
и
Сверка справочников между базами 1С v8.1

Сам алгоритм - не разбирал, но проверив показатели схожести на реальных справочниках - понял, что при "коэффициенте похожести" от 80 до 100 процентов - идут, обычно, одни и те-же позиции.

Кстати, есть ещё нюанс по поводу сравнения - это учёт аналогичных английских букв (С, О, А, Р, В...) особенно "С" - это самая злостная клавиша на клавиатуре: например, оператор набирает не глядя на экран "Cjcbcrb", понимает что имеет место очепятка - стирает всё, кроме первой буквы (она то нормальная "С") и далее пишет "Cосиски". Довольно частое явление.
17. viptextil1 13 26.04.18 11:53 Сейчас в теме
18. Leon75 13.06.18 18:14 Сейчас в теме
19. PerlAmutor 32 16.06.18 07:02 Сейчас в теме
https://infostart.ru/public/715698/ - тоже когда-то делал, но на базе алгоритма нахождения расстояния Дамерау Левенштейна.
20. German_Tagil 6 18.06.18 19:59 Сейчас в теме
надо посмотреть - искал что-то подобное с год назад
надо было номенклатуру для заявок из Экселя подобрать
пришел к выводу что ручками снабженцы быстрее набьют
но мысль осталась
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день