Calculate various string metrics efficiently


Version on this page:0.3.0@rev:4
LTS Haskell 22.30:0.3.2@rev:4
Stackage Nightly 2024-07-24:0.3.2@rev:4
Latest on Hackage:0.3.2@rev:4

See all snapshots text-metrics appears in

BSD-3-Clause licensed and maintained by Mark Karpov
This version can be pinned in stack with:text-metrics-0.3.0@sha256:c1cd01ada6a1b13224ea6d5d133ed0ff87a85b47b570d40a19cb949e70cfed04,2981

Module documentation for 0.3.0

Used by 5 packages in lts-14.27(full list with versions):

Text Metrics

License BSD3 Hackage Stackage Nightly Stackage LTS Build Status Coverage Status

The library provides efficient implementations of various strings metric algorithms. It works with strict Text values.

The current version of the package implements:

Comparison with the edit-distance package

There is edit-distance package whose scope overlaps with the scope of this package. The differences are:

  • edit-distance allows to specify costs for every operation when calculating Levenshtein distance (insertion, deletion, substitution, and transposition). This is rarely needed though in real-world applications, IMO.

  • edit-distance only provides Levenshtein distance, text-metrics aims to provide implementations of most string metrics algorithms.

  • edit-distance works on Strings, while text-metrics works on strict Text values.


Although we originally used C for speed, currently all functions are pure Haskell tuned for performance. See this blog post for more info.


Copyright © 2016–2017 Mark Karpov

Distributed under BSD 3 clause license.


Text Metrics 0.3.0

  • All functions are now implemented in pure Haskell.

  • All functions return Int or Ratio Int instead of Natural and Ratio Natural.

  • Added overlap (returns overlap coefficient) and jaccard (returns Jaccard similarity coefficient).

Text Metrics 0.2.0

  • Made the levenshtein, levenshteinNorm, damerauLevenshtein, and demerauLevenshtein more efficient.

  • Added jaro and jaroWinkler functions.

Text Metrics 0.1.0

  • Initial release.