View source on GitHub |
Computes the Levenshtein distance between sequences.
tf.edit_distance( hypothesis, truth, normalize=True, name='edit_distance' )
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.
Given the following input,
hypothesis
is a tf.SparseTensor
of shape [2, 1, 1]
truth
is a tf.SparseTensor
of shape [2, 2, 2]
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 operaton returns a dense Tensor of shape [2, 2]
with edit distances normalized by truth
lengths.
Note: It is possible to calculate edit distance between two sparse tensors with variable-length values. However, attempting to create them while eager execution is enabled will result in a ValueError
.
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 noramlized by 'truth' lengths. # output => array([0., 0.5], dtype=float32)
Args | |
---|---|
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). |
Returns | |
---|---|
A dense Tensor with rank R - 1 , where R is the rank of the SparseTensor inputs hypothesis and truth . |
Raises | |
---|---|
TypeError | If either hypothesis or truth are not a SparseTensor . |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/edit_distance