code: def simple_lesk(context_sentence: str, ambiguous_word: str,
                  pos: str = None, lemma=True, stem=False, hyperhypo=True,
                  stop=True, context_is_lemmatized=False,
                  nbest=False, keepscore=False, normalizescore=False,
                  from_cache=True) -> "wn.Synset":
      
      # Ensure that ambiguous word is a lemma.
      ambiguous_word = lemmatize(ambiguous_word, pos=pos)
      # If ambiguous word not in WordNet return None
      if not wn.synsets(ambiguous_word):
          return None
      # Get the signatures for each synset.
      ss_sign = simple_signatures(ambiguous_word, pos, lemma, stem, hyperhypo, stop,
                                  from_cache=from_cache)
      # Disambiguate the sense in context.
      context_sentence = context_sentence.split() if context_is_lemmatized else lemmatize_sentence(context_sentence)
      return compare_overlaps(context_sentence, ss_sign, nbest=nbest,
                              keepscore=keepscore, normalizescore=normalizescore)
docs: Simple Lesk is somewhere in between using more than the
      original Lesk algorithm (1986) and using less signature
      words than adapted Lesk (Banerjee and Pederson, 2002)
  
      :param context_sentence: String, sentence or document.
      :param ambiguous_word: String, a single word.
      :param pos: String, one of 'a', 'r', 's', 'n', 'v', or None.
      :return: A Synset for the estimated best sense.