jaccardSimilarity<T> function

double jaccardSimilarity<T>(
  1. Set<T> a,
  2. Set<T> b
)

Symmetric Jaccard similarity: |A ∩ B| / |A ∪ B|.

Returns 1.0 for identical (and identically-empty) sets, 0.0 for disjoint.

Implementation

double jaccardSimilarity<T>(Set<T> a, Set<T> b) {
  if (a.isEmpty && b.isEmpty) return 1.0;
  final union = a.union(b);
  if (union.isEmpty) return 0.0;
  return a.intersection(b).length / union.length;
}