docs: def lf_overlaps(L, normalize_by_coverage=False):
      """Return the **fraction of items each LF labels that are also labeled by at
       least one other LF.**
  
      Note that the maximum possible overlap fraction for an LF is the LF's
      coverage, unless `normalize_by_coverage=True`, in which case it is 1.
  
      Args:
          L: an n x m scipy.sparse matrix where L_{i,j} is the label given by the
              jth LF to the ith candidate
          normalize_by_coverage: Normalize by coverage of the LF, so that it
              returns the percent of LF labels that have overlaps.
      """
      overlaps = (L != 0).T @ _overlapped_data_points(L) / L.shape[0]
      if normalize_by_coverage:
          overlaps /= lf_coverages(L)
      return np.nan_to_num(overlaps)