jaccardSimilarity function

double jaccardSimilarity(
  1. String a,
  2. String b
)

Compute the Jaccard similarity between the word sets of a and b.

Returns a value between 0.0 and 1.0.

Implementation

double jaccardSimilarity(String a, String b) {
  final setA = a.toLowerCase().split(RegExp(r'\s+')).toSet();
  final setB = b.toLowerCase().split(RegExp(r'\s+')).toSet();
  if (setA.isEmpty && setB.isEmpty) return 1.0;

  final intersection = setA.intersection(setB).length;
  final union = setA.union(setB).length;
  if (union == 0) return 1.0;
  return intersection / union;
}