code: def ceafe(clusters, gold_clusters):
          
          clusters = [cluster for cluster in clusters if len(cluster) != 1]
          scores = np.zeros((len(gold_clusters), len(clusters)))
          for i, gold_cluster in enumerate(gold_clusters):
              for j, cluster in enumerate(clusters):
                  scores[i, j] = Scorer.phi4(gold_cluster, cluster)
          matching = linear_assignment(-scores)
          similarity = sum(scores[matching[:, 0], matching[:, 1]])
          return similarity, len(clusters), similarity, len(gold_clusters)
docs: Computes the  Constrained EntityAlignment F-Measure (CEAF) for evaluating coreference.
          Gold and predicted mentions are aligned into clusterings which maximise a metric - in
          this case, the F measure between gold and predicted clusters.
  
          <https://www.semanticscholar.org/paper/On-Coreference-Resolution-Performance-Metrics-Luo/de133c1f22d0dfe12539e25dda70f28672459b99>