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

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

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

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

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

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

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

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

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

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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

Ведущий программист 1С
Омск
зарплата от 70 000 руб. до 110 000 руб.
Полный день

Консультант-аналитик 1С ЗУП 3.1
Белгород
зарплата от 40 000 руб. до 50 000 руб.
Полный день

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