# tf.edit_distance

Computes the Levenshtein distance between sequences.

This operation takes variable-length sequences (`hypothesis` and `truth`), each provided as a `SparseTensor`, and computes the Levenshtein distance. You can normalize the edit distance by length of `truth` by setting `normalize` to true.

#### For example:

Given the following input,

````hypothesis = tf.SparseTensor(`
`  [[0, 0, 0],`
`   [1, 0, 0]],`
`  ["a", "b"],`
`  (2, 1, 1))`
`truth = tf.SparseTensor(`
`  [[0, 1, 0],`
`   [1, 0, 0],`
`   [1, 0, 1],`
`   [1, 1, 0]],`
`   ["a", "b", "c", "a"],`
`   (2, 2, 2))`
`tf.edit_distance(hypothesis, truth, normalize=True)`
`<tf.Tensor: shape=(2, 2), dtype=float32, numpy=`
`array([[inf, 1. ],`
`       [0.5, 1. ]], dtype=float32)>`
```

The operation returns a dense Tensor of shape `[2, 2]` with edit distances normalized by `truth` lengths.

For the following inputs,

``````# 'hypothesis' is a tensor of shape `[2, 1]` with variable-length values:
#   (0,0) = ["a"]
#   (1,0) = ["b"]
hypothesis = tf.sparse.SparseTensor(
[[0, 0, 0],
[1, 0, 0]],
["a", "b"],
(2, 1, 1))

# 'truth' is a tensor of shape `[2, 2]` with variable-length values:
#   (0,0) = []
#   (0,1) = ["a"]
#   (1,0) = ["b", "c"]
#   (1,1) = ["a"]
truth = tf.sparse.SparseTensor(
[[0, 1, 0],
[1, 0, 0],
[1, 0, 1],
[1, 1, 0]],
["a", "b", "c", "a"],
(2, 2, 2))

normalize = True

# The output would be a dense Tensor of shape `(2,)`, with edit distances
normalized by 'truth' lengths.
# output => array([0., 0.5], dtype=float32)
``````

`hypothesis` A `SparseTensor` containing hypothesis sequences.
`truth` A `SparseTensor` containing truth sequences.
`normalize` A `bool`. If `True`, normalizes the Levenshtein distance by length of `truth.`
`name` A name for the operation (optional).

A dense `Tensor` with rank `R - 1`, where R is the rank of the `SparseTensor` inputs `hypothesis` and `truth`.

`TypeError` If either `hypothesis` or `truth` are not a `SparseTensor`.

[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]