GithubHelp home page GithubHelp logo

Comments (7)

maxbachmann avatar maxbachmann commented on May 28, 2024 1

This is fixed in v0.20.2

from levenshtein.

maxbachmann avatar maxbachmann commented on May 28, 2024

I hope MatchingBlock behaves similar to a tuple. If some tuple feature is missing this would be an issue.

from levenshtein.

maxbachmann avatar maxbachmann commented on May 28, 2024

Ah you mean for the empty case. I think this could be a bug. I will look into it tomorrow.

from levenshtein.

maxbachmann avatar maxbachmann commented on May 28, 2024

I failed to reproduce this in my phone. Do you have an example?

from levenshtein.

Otterpatsch avatar Otterpatsch commented on May 28, 2024

Mhm i dont really have an example i can share. So you dont get an empty list on empty matching blocks? Than my idea is false. I dont want to alarm you but i did update to the new version and did fix the code on my side (like being depending on the last element for the information of the strings) but now our piplelines are failing which are using this code.(nothing else changed) So what is matching on a lot of string comparisons and stuff changed for some reason. Soo yeah i will be swap back to 19.0.3.

Here is the usage of your functionality in our code

`def _get_matching_blocks(query: str, text: str) -> list[tuple[int, int, int]]:
"""Get matching blocks between to strings."""
edits = Levenshtein.editops(query, text)
return Levenshtein.matching_blocks(edits, query, text)

def _get_matching_ratio(query: str, text: str) -> float:
"""Calculate how much of query is also contained in text."""
matching_blocks = _get_matching_blocks(query=query, text=text)
fragmentation_penalty = -len(matching_blocks) + 1
return (
2 * sum(match[2] for match in matching_blocks)
- len(query)
+ fragmentation_penalty
) / len(text)`

from levenshtein.

maxbachmann avatar maxbachmann commented on May 28, 2024

Ah I just tested rapidfuzz, since the Levenshtein library currently fails to install in termux (I did not apply the fix I implemented in rapidfuzz here yet). Looking at the code it appears the following line causes this issue: https://github.com/maxbachmann/Levenshtein/blob/aa4711fc2963f8a9947c69d7fe0210abbb30cb35/src/Levenshtein/__init__.py#L158

from levenshtein.

Otterpatsch avatar Otterpatsch commented on May 28, 2024

alright makes sense.

from levenshtein.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.