code: def update(
      self,
      predicted,
      gold,
      mention_to_predicted,
      mention_to_gold,
      **kwargs,
  ):
      if self.metric == ceafe:
          pn, pd, rn, rd = self.metric(predicted, gold)
      else:
          pn, pd = self.metric(predicted, mention_to_gold)
          rn, rd = self.metric(gold, mention_to_predicted)
      self.p_num += pn
      self.p_den += pd
      self.r_num += rn
      self.r_den += rd
  
imports: import logging
  import numpy
  from collections import Counter, defaultdict
  from scipy.optimize import linear_sum_assignment
  from .blanc import blanc, tuple_to_metric
label_desc: Use image node_id 2 for calling the Evaluator obj's underlying member method code with example usage: obj.update(predicted, gold, mention_to_predicted, mention_to_gold) without return types