levenshtein / README.md
Nathan Fradet
editing readme
23bb343 unverified

A newer version of the Gradio SDK is available: 5.29.0

Upgrade
metadata
title: Levenshtein distance
emoji: ✍️
colorFrom: blue
colorTo: green
tags:
  - evaluate
  - metric
description: Levenshtein (edit) distance
sdk: gradio
sdk_version: 5.24.0
app_file: app.py
pinned: false

Metric Card for the Levenshtein (edit) distance

Metric Description

This metric computes the Levenshtein distance, also commonly called "edit distance". The Levenshtein distance measures the number of combined insertions, deletions and substitutions operations (one per character) to perform on a string so that it becomes identical to a second one. It is a popular metric for text similarity. This module directly calls the Levenshtein package for fast execution speed.

How to Use

Inputs

List all input arguments in the format below

  • predictions (string): sequence of prediction strings
  • references (string): sequence of reference string;
  • kwargs keyword arguments to pass to the Levenshtein.distance method.

Output Values

Dictionary mapping to the average Levenshtein distance (lower is better) and the ratio ([0, 1]) distance (higher is better).

Examples

Levenshtein distance

import evaluate

levenshtein = evaluate.load("Natooz/Levenshtein")
results = levenshtein.compute(
    predictions=[
        "foo", "baroo"  # 0 and 2 edits
    ],
    references=[
        "foo", "bar"
    ],
)
print(results)
# {"levenshtein": 1, "levenshtein_ratio": 0.875}

Indel (insertion-deletion) distance

The weight of each operation can be provided in order to customize the score. For example, the substitution score can be set to 2 to compute the "indel" distance, so that each substitution is counted as two operations (deletion + insertion).

import evaluate

levenshtein = evaluate.load("Natooz/Levenshtein")
results = levenshtein.compute(
    predictions=[
        "foo", "baroo"  # 0 and 2 edits
    ],
    references=[
        "foo", "bar"
    ],
    weights=(1, 1, 2),  # weight of 2 for substitutions
)
print(results)
# {"levenshtein": 1, "levenshtein_ratio": 0.875}

Citation

@ARTICLE{1966SPhD...10..707L,
       author = {{Levenshtein}, V.~I.},
        title = "{Binary Codes Capable of Correcting Deletions, Insertions and Reversals}",
      journal = {Soviet Physics Doklady},
         year = 1966,
        month = feb,
       volume = {10},
        pages = {707},
       adsurl = {https://ui.adsabs.harvard.edu/abs/1966SPhD...10..707L},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}