[−][src]Struct eddie::slice::DamerauLevenshtein
Damerau-Levenshtein distance.
Usage
use eddie::slice::DamerauLevenshtein; let damlev = DamerauLevenshtein::new(); let dist = damlev.distance(&[1, 2, 3, 4, 5], &[1, 3, 2, 4, 5]); assert_eq!(dist, 1);
Complementary metrics
Relative distance:
let dist = damlev.distance(s1, s2); let rel = damlev.rel_dist(s1, s2); let max_len = max(s1.len(), s2.len()); assert_eq!(rel, dist as f64 / max_len as f64);
Similarity:
let rel = damlev.rel_dist(s1, s2); let sim = damlev.similarity(s1, s2); assert_eq!(sim, 1.0 - rel);
Methods
impl<T: PartialEq + Copy + Ord> DamerauLevenshtein<T>
[src]
pub fn new() -> Self
[src]
Creates a new instance of DamerauLevenshtein struct with an internal state for the metric methods to reuse.
Example
use eddie::slice::DamerauLevenshtein; let damlev: DamerauLevenshtein<usize> = DamerauLevenshtein::new();
pub fn distance(&self, slice1: &[T], slice2: &[T]) -> usize
[src]
Distance metric. Returns a number of edits (character additions, deletions, substitutions, and transpositions) required to transform one slice into the other.
Example
let dist = damlev.distance(&[1, 2, 3, 4, 5], &[1, 3, 2, 4, 5]); assert_eq!(dist, 1);
pub fn rel_dist(&self, slice1: &[T], slice2: &[T]) -> f64
[src]
Relative distance metric. Returns a number of edits relative to the length of the longest slice, ranging from 0.0 (equality) to 1.0 (nothing in common).
Example
let dist = damlev.rel_dist(&[1, 2, 3, 4, 5], &[1, 3, 2, 4, 5]); assert!((dist - 0.2).abs() < 0.001);
pub fn similarity(&self, slice1: &[T], slice2: &[T]) -> f64
[src]
Similarity metric. Inversion of relative distance, ranging from 1.0 (equality) to 0.0 (nothing in common).
Example
let sim = damlev.similarity(&[1, 2, 3, 4, 5], &[1, 3, 2, 4, 5]); assert!((sim - 0.8).abs() < 0.001);
Auto Trait Implementations
impl<T> !RefUnwindSafe for DamerauLevenshtein<T>
impl<T> Send for DamerauLevenshtein<T> where
T: Send,
T: Send,
impl<T> !Sync for DamerauLevenshtein<T>
impl<T> Unpin for DamerauLevenshtein<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for DamerauLevenshtein<T> where
T: RefUnwindSafe + UnwindSafe,
T: RefUnwindSafe + UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,