Porownanie strignow w procentach

0

Tak jak w temacie. Mysle i nie moge wymyslec jak do tego sie zabrac.
Przykladowo mam dwa stringi
'ala ma kota' == 'ala ma kota' dostaje 100%
'Tak' =='Ta' dostaje okolo ~33%
Do glowy mi przychodzi jednynie opcja by pozbierac z kazdego striga ilosc liter itp i potem je prownywac. Czy istnieje jakis inny lepszy sposob?

0

Pierwsze co mi przychodzi do głowy to Odległość Levenshteina - https://pl.wikipedia.org/wiki/Odleg%C5%82o%C5%9B%C4%87_Levenshteina, czyli algorytm typowo wymyślony do mierzenia podobieństwa/stopnia różnienia się tekstów.

Wprawdzie w Pythonie nie siedzę, ale po szybkim sprawdzeniu widzę, że Python posiada gotowe biblioteki do tego - chociażby https://pypi.org/project/python-Levenshtein/.

Poza tym jeszcze rzuć okiem na:
https://stackabuse.com/levenshtein-distance-and-text-similarity-in-python/
https://www.python-course.eu/levenshtein_distance.php
https://blog.paperspace.com/implementing-levenshtein-distance-word-autocomplete-autocorrect/

0

Może dla prosty przypadków wystarczy coś z:
Odległość Hamminga (Hamming distance) ?
Podobieństwo cosinusowe (cosine similarity) ?

0

Hamming distance jest pomiedzy stringami o takiej samej długości. Dopóki OP nie sprecyzuje dokładniej co chce zrobić, to możemy tu tylko zgadywać.

0

Zalezalo mi na prostych porownaniach do porownywania hasel ,nazw uzytkowanika podczas rejestracji i logowania. Troche bajerow dorzucic. Jak haslo/login/mail sie nie zgadza by mowilo zgodnosc w procentach. Kiedys na jakis stronach mi sie to przewinelo ze haslo zgodne w ..% .Czegos nowego chce sie pouczyc :P

0

Kiedys na jakis stronach mi sie to przewinelo ze haslo zgodne w ..%

Nie wiem co to były za strony, ale trzymaj się od nich z daleka. Żeby porównać podobieństwo dwóch tekstów to trzeba je znać. A trzymanie haseł w postaci jawnej to jedna z większych zbrodni, tak się nie robi. Zamiast tego powinno się trzymać ich hashe, czyli (w dużym uproszczeniu) hasła w postaci zaszyfrowanej. Algorytmy hashujące mają to do siebie, że delikatna zmiana nawet jednego znaku, powoduje powstanie totalnie innego hasha. W związku z tym, jeśli jakaś strona Ci zwraca informacje o haśle i jego podobieństwie, to znaczy że powinna się zapalić czerwona lampka, bo chyba trzymają hasło w postaci jawnej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1