code: def get_strings_from_utterance(tokenized_utterance: List[Token]) -> Dict[str, List[int]]:
      
      string_linking_scores: Dict[str, List[int]] = defaultdict(list)
  
      for index, token in enumerate(tokenized_utterance):
          for string in ATIS_TRIGGER_DICT.get(token.text.lower(), []):
              string_linking_scores[string].append(index)
  
      token_bigrams = bigrams([token.text for token in tokenized_utterance])
      for index, token_bigram in enumerate(token_bigrams):
          for string in ATIS_TRIGGER_DICT.get(' '.join(token_bigram).lower(), []):
              string_linking_scores[string].extend([index,
                                                    index + 1])
  
      trigrams = ngrams([token.text for token in tokenized_utterance], 3)
      for index, trigram in enumerate(trigrams):
          if trigram[0] == 'st':
              natural_language_key = f'st. {trigram[2]}'.lower()
          else:
              natural_language_key = ' '.join(trigram).lower()
          for string in ATIS_TRIGGER_DICT.get(natural_language_key, []):
              string_linking_scores[string].extend([index,
                                                    index + 1,
                                                    index + 2])
      return string_linking_scores
docs: Based on the current utterance, return a dictionary where the keys are the strings in
      the database that map to lists of the token indices that they are linked to.