code: def compare_overlaps_greedy(context: list, synsets_signatures: dict) -> "wn.Synset":
      
  
      max_overlaps = 0; lesk_sense = None
      for ss in synsets_signatures:
          overlaps = set(synsets_signatures[ss]).intersection(context)
          if len(overlaps) > max_overlaps:
              lesk_sense = ss
              max_overlaps = len(overlaps)
  
      return lesk_sense
docs: Calculate overlaps between the context sentence and the synset_signatures
      and returns the synset with the highest overlap.
  
      Note: Greedy algorithm only keeps the best sense,
      see https://en.wikipedia.org/wiki/Greedy_algorithm
  
      Only used by original_lesk(). Keeping greedy algorithm for documentary sake,
      because original_lesks is greedy.
  
      :param context: List of strings, tokenized sentence or document.
      :param synsets_signatures: dict of Synsets and the set of their corresponding signatures.
      :return: The Synset with the highest number of overlaps with its signatures.