Use Levenshtein with Corpus#

Build a local deterministic retrieval scorer without making Corpus an import requirement of the Levenshtein facade.

kitten     score=1.000 backend=levenshtein:python
bitten     score=0.833 backend=levenshtein:python
sitting    score=0.571 backend=levenshtein:python

from scikitplot.corpus import CorpusDocument, RetrievalConfig
from scikitplot.levenshtein import make_corpus_scorer

documents = [
    CorpusDocument.create("a.txt", 0, "kitten"),
    CorpusDocument.create("b.txt", 0, "bitten"),
    CorpusDocument.create("c.txt", 0, "sitting"),
    CorpusDocument.create("d.txt", 0, "unrelated"),
]

scorer = make_corpus_scorer(
    backend="python",
    score_cutoff=0.5,
)
hits = scorer("kitten", documents, RetrievalConfig(top_k=3))

assert [hit.doc.text for hit in hits] == ["kitten", "bitten", "sitting"]
assert all(hit.match_mode == "levenshtein" for hit in hits)
assert all(hit.backend == "levenshtein:python" for hit in hits)

for hit in hits:
    print(
        f"{hit.doc.text:10s} "
        f"score={hit.score:.3f} "
        f"backend={hit.backend}"
    )

Total running time of the script: (0 minutes 0.002 seconds)

Related examples

Use Levenshtein distance with Corpus retrieval

Use Levenshtein distance with Corpus retrieval

Build and Search a Real Hamlet Corpus with FluentCorpus

Build and Search a Real Hamlet Corpus with FluentCorpus

Build and Search a Real Hamlet Corpus with FluentCorpus

Build and Search a Real Hamlet Corpus with FluentCorpus

Build and Search a Real Hamlet Corpus with FluentCorpus

Build and Search a Real Hamlet Corpus with FluentCorpus

Gallery generated by Sphinx-Gallery