text-metrics-0.1.0: Calculate various string metrics efficiently

Copyright© 2016 Mark Karpov
LicenseBSD 3 clause
MaintainerMark Karpov <markkarpov@openmailbox.org>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.Text.Metrics

Contents

Description

The module provides efficient implementations of various strings metrics. It works with strict Text values and returns either Natural numbers (because the metrics cannot be negative), or Ratio Natural values because returned values are rational non-negative numbers by definition.

Synopsis

Levenshtein variants

levenshtein :: Text -> Text -> Natural Source #

Return Levenshtein distance between two Text values. Classic Levenshtein distance between two strings is minimal number of operations necessary to transform one string into another. For Levenshtein distance allowed operations are: deletion, insertion, and substitution.

See also: https://en.wikipedia.org/wiki/Levenshtein_distance.

levenshteinNorm :: Text -> Text -> Ratio Natural Source #

Return normalized Levenshtein distance between two Text values. Result is a non-negative rational number (represented as Ratio Natural), where 0 signifies no similarity between the strings, while 1 means exact match. The operation is virtually as fast as levenshtein.

See also: https://en.wikipedia.org/wiki/Levenshtein_distance.

damerauLevenshtein :: Text -> Text -> Natural Source #

Return Damerau-Levenshtein distance between two Text values. The function works like levenshtein, but the collection of allowed operations also includes transposition of two adjacent characters. The function is about 20% slower than levenshtein, but still pretty fast.

See also: https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance.

damerauLevenshteinNorm :: Text -> Text -> Ratio Natural Source #

Return normalized Damerau-Levenshtein distance between two Text values. Result is a non-negative rational number (represented as Ratio Natural), where 0 signifies no similarity between the strings, while 1 means exact match. The operation is virtually as fast as damerauLevenshtein.

See also: https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance.

Other

hamming :: Text -> Text -> Maybe Natural Source #

O(n) Return Hamming distance between two Text values. Hamming distance is defined as number of positions at which the corresponding symbols are different. The input Text values should be of equal length or Nothing will be returned.

See also: https://en.wikipedia.org/wiki/Hamming_distance.