code: def blanc(
      key: ty.Sequence[ty.Set],
      response: ty.Sequence[ty.Set],
      fast=True,
  ) -> ty.Tuple[float, float, float]:
      r"""
      Return the BLANC `$(R, P, F)$` scores for a `#response` clustering given a `#key` clustering.
  
      ## Notes
  
        - Mention identifiers have to be comparable
        - To ensure the compliance with the reference implementation, the edge cases results are
          those from Recasens and Hovy (2011) rather than from the more recent Luo et al. (2014) when
          those two disagree. This has an effect for the N-6 testcase, where according to Luo et al.
          (2014), BLANC should be `$\frac{0+F_n}{2}$` since `$C_k=∅$` and `$C_r≠∅$`, but according to
          Recasens and Hovy (2011), BLANC should be `$F_n$`.
      """
      if fast:
          C_score, N_score = fast_detailed_blanc(key, response)
      else:
          C_score, N_score = detailed_blanc(key, response)
      if C_score is None:
          assert N_score is not None  # nosec:B101
          return N_score
      if N_score is None:
          assert C_score is not None  # nosec:B101
          return C_score
      return C_score, N_score
  
file_path: DeepKE/src/deepke/triple_extraction/ASP/metrics/blanc.py
imports: import math
  import typing
  import numpy
label_desc: Use image node_id 3 for calling a global function with example usage: blanc(key, response, fast) and returns: C_score,  N_score, N_score, C_score