Show HN: RapidFuzz – A fast string matching library for Python
github.com
github.com
I use fuzzy text searching to compare LPR license plates with those on lists for parking enforcement.
I wrote a blog entry about Vladimir Losifovich Levenshtein and practical description of string comparison here:
https://blog.easyalpr.com/2019/09/16/calculating-license-pla...
Also, here's a UI on top of fuzzy string matching if you just want to play with levenshtein distance for a few minutes: https://easyalpr.com/tools/string-compare/
>It is MIT licensed so it can be used whichever License you might want to choose for your project, while your forced to adopt the GPLv2 license when using FuzzyWuzzy
How is it using FuzzyWuzzy to be exact in order to be MIT licensed?
https://github.com/rhasspy/rapidfuzz/blob/c225979db3b02caccb...
https://github.com/seatgeek/fuzzywuzzy/blob/2188520502b86375...
I think (IANAL) that that clears it up - not using the same code, but the same algorithm.
Is it really that clear cut?
We relicensed fuzzywuzzy mostly because I am not a lawyer and really just wanted to stop having the same argument with the same three people about whether what we were doing was legal. I actually think that we were violating the license by not including the license header on the included file, but were fine with the rest of the project being MIT, but again, not a lawyer, and the emails from the same ~3 people were becoming quite annoying.
Link here: https://github.com/seatgeek/fuzzywuzzy/issues/130
That said, if their interpretation is right, then unless you clean-roomed the reimplementation, that derivative is also GPL.
Again, not a conversation I personally care for, and I no longer work for SeatGeek so it's no longer really on me :)
Any chance you could also implement a weighted-levenshtein version? (or allow passing in a weight-table for various characters combinations as like a kwarg or something?)
edit: Something like this, but with the speed of C++ would be amazing. https://pypi.org/project/weighted-levenshtein/
I once solved a performance problem by using the pure-python mysql drivers and pypy, rather than the normal c-wrapped drivers and python. The result was actually faster than a Java version of the same program using the normal JDBC drivers.
Something feels deeply wrong with a world where database performance can depend on basic string interpolation performance deep in your client-side mysql drivers... Its soul-destroying to see a naive 'safe' parameterization code coming up hottest in Java profiling results.
Not contradicting your point, btw.