starfuzz/similarity

A module providing similarity scoring algorithms. Similarity scores are normalized between 0.0 (completely different) and 1.0 (identical).

Values

pub fn cosine(a: List(a), b: List(a)) -> Float

Computes Cosine similarity of token frequency vectors (bag-of-words model). Returns a value between 0.0 and 1.0.

pub fn dice(a: List(a), b: List(a)) -> Float

Computes Sørensen-Dice similarity over token multisets. Returns a value between 0.0 and 1.0.

pub fn jaccard(a: List(a), b: List(a)) -> Float

Computes Jaccard similarity index over token multisets. Returns a value between 0.0 and 1.0.

pub fn jaro(a: String, b: String) -> Float

Computes the Jaro similarity score between two strings. Returns a value between 0.0 and 1.0.

pub fn jaro_winkler(a: String, b: String) -> Float

Computes the Jaro-Winkler similarity score between two strings.

Winkler’s optimization adds a prefix boost (up to 4 characters) to Jaro’s score if the strings start with the exact same prefix.

pub fn levenshtein(a: String, b: String) -> Float

Computes normalized Levenshtein similarity. Returns a value between 0.0 and 1.0.

Search Document