code: def normal_tokenizer(
      text: str,
      remove_contractions: bool = True,
      stem=True,
      include_pronouns: bool = False,
  ) -> List[str]:
      """
      Returns normalized tokens for `text`
      """
      assert isinstance(text, str), "The only valid arg type is str."
      text = text.strip().lower()
      if not text:
          return []
  
      if remove_contractions:
          text = contractions.fix(text)
  
      tokens = word_tokenize(text)
  
      if stem:
          tokens = [STEMMER.stem(t) for t in tokens]
      stop_words = (
          _STOP_WORDS
          if not include_pronouns
          else _STOP_WORDS_WITH_PRONOUNS
      )
      tokens = [t for t in tokens if t not in stop_words]
  
      return tokens
  
imports: import aiohttp
  import asyncio
  from enum import Enum
  import json
  import math
  from nltk.corpus import stopwords
  from nltk.tokenize import word_tokenize
  from nltk.stem import PorterStemmer
  import os
  import random
  import string
  import time
  from typing import List, Tuple, Optional, Dict, Any, Set, Union
  from parlai.agents.ir_baseline.ir_baseline import score_match, MaxPriorityQueue
  from parlai.core.dict import DictionaryAgent
  from parlai.core.message import Message
  from parlai.core.metrics import F1Metric
  from parlai.core.torch_generator_agent import PPLMetric
  import parlai.utils.logging
  import projects.bb3.constants
  import projects.bb3.prompts
  from projects.bb3.agents.module import Module
label_desc: Use image node_id 1 for calling a global function with example usage: normal_tokenizer(text, remove_contractions, stem, include_pronouns) and returns: tokens, list