Найти - Пользователи
Полная версия: Алгоритм расчета коэффициента совпадения строк.
Начало » Python для новичков » Алгоритм расчета коэффициента совпадения строк.
1
gtlhbkkj
Добрый день,
укажите мне пожста правильное направление, оставаясь в рамках приличия.
Как примерно будет выглядеть алгоритм на следующее.
Есть таблица с полем. Поле символьное, размером примерно 20 символов, может содержать от 3 до 20 символов. Записей в пределах 100.000. Посетитель вводит в окошко поиска свою строку. В случае если точного совпадения не найдено, как искать поле с максимальным совпадением двух строк? Как дать определение наилучшеему совпадению?
Строки это буквенно-цифровые обозначения, не имеющих отношения к лингвистике.
То есть, например, есть поля типа “ABCDEFGHLMNOPRST”,
Посетитель вводит свою строку типа “12ABCD11EDF155GHLM”.
Как примерно посчитать коэффициент совпадения?
Порядок символов должен сохраняться.
py.user.next
gtlhbkkj
То есть, например, есть поля типа “ABCDEFGHLMNOPRST”,
Посетитель вводит свою строку типа “12ABCD11EDF155GHLM”.
Как примерно посчитать коэффициент совпадения?
А какой здесь коэффициент совпадения? Ты сначала критерии введи для коэффициента совпадения. Начни с определения “совпадение строк - это …”, потом вводи метрику “строки совпадют сильно, когда … ; строки совпадают слабо, когда …”.
Striver
Как вариант, когда надо сравнивать строки, но совершенно не ясно, что значит “сравнивать”, можно считать расстояние Левенштейна. Чем сильнее строки различаются, тем больше это число. Дальше можно попытаться это расстояние (это некое целое число) каким-то образом преобразовать в “проценты”….

Вот эта библиотека может такое расстояние считать:
pypi.org/project/StringDist/
xam1816
есть что-то,что имеет какие-то определенные элементы с определенными свойствами,расставленные в определенной последовательности.

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

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

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

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

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

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

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

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

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

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

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

Поэтому и нужно начать с определения. Затем вводится измерение “величины” строки, если тебе ещё строки надо упорядочивать по отношению больше/меньше.
Rodegast
> Есть таблица с полем. … Посетитель вводит в окошко поиска свою строку. В случае если точного совпадения не найдено, как искать поле с максимальным совпадением двух строк? Как дать определение наилучшеему совпадению?

Такой поиск нужно производить средствами СУБД. Например: https://habr.com/ru/post/341142/
AD0DE412
эээ наивное подумалось … можт просто сортировка?
ну типа строка aa (эталон) а та которую сравниваем к примеру bb
ну и соответственно
aa
ab
ba
bb


ps тут еще нужно указать возможный набор символов … а если мы используем юникод то … не очень как то
pps а еще значение имеет вес символов в наборе … нет наверно слишком тежелый способ
gtlhbkkj
господа, благодарю всех за поддержку и за идеи.
Так как я ищу то, не знаю что, то и ответа однозначного на вопрос нету.
Будут новые идеи, пишите.
Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB