class_docstr: https://www.academia.edu/200314/Generalized_Monge-Elkan_Method_for_Approximate_Text_String_Comparison
  http://www.cs.cmu.edu/~wcohen/postscript/kdd-2003-match-ws.pdf
  https://github.com/Yomguithereal/talisman/blob/master/src/metrics/monge-elkan.js
class_docstr_tok: ["https",":","\/\/www.academia.edu\/200314\/Generalized_Monge-Elkan_Method_for_Approximate_Text_String_Comparison","http",":","\/\/www.cs.cmu.edu\/~wcohen\/postscript\/kdd-2003-match-ws.pdf","https",":","\/\/github.com\/Yomguithereal\/talisman\/blob\/master\/src\/metrics\/monge-elkan.js"]
code: def __call__(self, *sequences: Sequence) -> float:
      quick_result = self.quick_answer(*sequences)
      if quick_result is not None:
          return quick_result
      sequences = self._get_sequences(*sequences)
  
      if self.symmetric:
          result = []
          for seqs in permutations(sequences):
              result.append(self._calc(*seqs))
          return sum(result) / len(result)
      else:
          return self._calc(*sequences)
  
imports: from __future__ import annotations
  from functools import reduce
  from itertools import islice, permutations, repeat
  from math import log
  from typing import Sequence
  from .base import Base, BaseSimilarity
  from .edit_based import DamerauLevenshtein
label_desc: Use image node_id 4 for calling the MongeElkan obj's underlying member method code with example usage: obj.__call__() and returns: quick_result, unknown, self