Уведомления

Группа в Telegram: @pythonsu

#1 Май 27, 2020 22:30:41

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

Добрый день,
укажите мне пожста правильное направление, оставаясь в рамках приличия.
Как примерно будет выглядеть алгоритм на следующее.
Есть таблица с полем. Поле символьное, размером примерно 20 символов, может содержать от 3 до 20 символов. Записей в пределах 100.000. Посетитель вводит в окошко поиска свою строку. В случае если точного совпадения не найдено, как искать поле с максимальным совпадением двух строк? Как дать определение наилучшеему совпадению?
Строки это буквенно-цифровые обозначения, не имеющих отношения к лингвистике.
То есть, например, есть поля типа “ABCDEFGHLMNOPRST”,
Посетитель вводит свою строку типа “12ABCD11EDF155GHLM”.
Как примерно посчитать коэффициент совпадения?
Порядок символов должен сохраняться.

Офлайн

#2 Май 28, 2020 02:41:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

gtlhbkkj
То есть, например, есть поля типа “ABCDEFGHLMNOPRST”,
Посетитель вводит свою строку типа “12ABCD11EDF155GHLM”.
Как примерно посчитать коэффициент совпадения?
А какой здесь коэффициент совпадения? Ты сначала критерии введи для коэффициента совпадения. Начни с определения “совпадение строк - это …”, потом вводи метрику “строки совпадют сильно, когда … ; строки совпадают слабо, когда …”.



Отредактировано py.user.next (Май 28, 2020 02:43:38)

Офлайн

#3 Май 28, 2020 12:26:06

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

Как вариант, когда надо сравнивать строки, но совершенно не ясно, что значит “сравнивать”, можно считать расстояние Левенштейна. Чем сильнее строки различаются, тем больше это число. Дальше можно попытаться это расстояние (это некое целое число) каким-то образом преобразовать в “проценты”….

Вот эта библиотека может такое расстояние считать:
pypi.org/project/StringDist/



Офлайн

#4 Май 28, 2020 13:06:09

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

есть что-то,что имеет какие-то определенные элементы с определенными свойствами,расставленные в определенной последовательности.

Это что-то находится в определенном месте,среди других аналогичных что-то.

я беру своё аналогичное что-то,беру у него первый его элемент,

затем беру первый что-то,из списка этих что-то,

и сравниваю его первый элемент ,с первым элементом моего что-то,

если элементы одинаковые, то сделать +1 к счетчику совпадений,

беру по второму элементу этих двух что-то,

сравниваю, если да +1,иначе:сохранить значение счетчика для этого что-то,перейти к следующему что-то,из списка что-то.

повторяю операцию сравнения элементов что-то,пока не кончится список этих что-то

в конце вывожу список этих что-то по возрастанию или убыванию значений счетчиков этих что-то

только не знаю,на сколько эффективен этот алгоритм,в моей голове пока других нет

Офлайн

#5 Май 28, 2020 17:18:23

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

py.user.next
вы перефразировали мой вопрос
- как определить критерии коээфициента совпадения. Этого то я и не знаю - не могу придумать это правило.
Существуют ли какие-то методики? Пускай например вместо букв будут цифры
то есть одна строка из 20 цифр “1234564698981321320065..”
посетитель вводит свою строку цифр пускай также из 20 цифр для простоты
существуют ли какие-то методики сравнения строк и определения коэффициента совпадения?
почитать бы что уже сказано, может какие-то мысли в голову придут

Отредактировано gtlhbkkj (Май 28, 2020 17:19:40)

Офлайн

#6 Май 28, 2020 21:29:22

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

Your text to link here…

может это подойдет

Отредактировано xam1816 (Май 28, 2020 21:30:58)

Офлайн

#7 Май 28, 2020 21:36:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

gtlhbkkj
вы перефразировали мой вопрос
- как определить критерии коээфициента совпадения. Этого то я и не знаю - не могу придумать это правило.
Существуют ли какие-то методики?
Можно придумать бесконечно много способов сравнения строк. Можно сравнивать посимвольно, можно сравнивать по позициям, можно сравнивать по биграммам, можно сравнивать по триграммам, можно сравнивать по букве Z (если в обеих строках есть буква Z, то они равны; если в первой строке нет буквы Z, а во второй строке есть, то вторая строка больше первой строки), можно сравнивать по количеству букв Z (если количество букв Z в первой строке чётное и количество букв Z во второй строке чётное, то строки равны - ZZ == ZZZZZZ и Z != ZZ).

Поэтому и нужно начать с определения. Затем вводится измерение “величины” строки, если тебе ещё строки надо упорядочивать по отношению больше/меньше.



Офлайн

#8 Май 28, 2020 22:43:13

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

> Есть таблица с полем. … Посетитель вводит в окошко поиска свою строку. В случае если точного совпадения не найдено, как искать поле с максимальным совпадением двух строк? Как дать определение наилучшеему совпадению?

Такой поиск нужно производить средствами СУБД. Например: https://habr.com/ru/post/341142/



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#9 Май 29, 2020 10:57:05

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

эээ наивное подумалось … можт просто сортировка?
ну типа строка aa (эталон) а та которую сравниваем к примеру bb
ну и соответственно
aa
ab
ba
bb


ps тут еще нужно указать возможный набор символов … а если мы используем юникод то … не очень как то
pps а еще значение имеет вес символов в наборе … нет наверно слишком тежелый способ



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Май 29, 2020 11:18:49)

Офлайн

#10 Май 31, 2020 22:58:03

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

Алгоритм расчета коэффициента совпадения строк.

господа, благодарю всех за поддержку и за идеи.
Так как я ищу то, не знаю что, то и ответа однозначного на вопрос нету.
Будут новые идеи, пишите.
Спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version