input: Write a python function to extract topics from a given dialogue using NLTK's lemmatizer and pos_tagging.
  assert extract_topics("I am interested in machine learning and data science.") == ['machine', 'learning', 'data', 'science']
  assert extract_topics("Natural language processing and artificial intelligence are fascinating.") == ['Natural', 'language', 'processing', 'artificial', 'intelligence']
  assert extract_topics("I love reading books and watching movies.") == ['reading', 'books', 'watching', 'movies']
output: def extract_topics(dialogue):
      import nltk
      from nltk.corpus import stopwords
      from nltk.tokenize import word_tokenize
      from nltk.stem import WordNetLemmatizer
      from nltk import pos_tag
  
      # Download necessary NLTK data
      nltk.download('punkt')
      nltk.download('averaged_perceptron_tagger')
      nltk.download('wordnet')
      nltk.download('stopwords')
  
      # Initialize the lemmatizer
      lemmatizer = WordNetLemmatizer()
  
      # Tokenize the dialogue
      words = word_tokenize(dialogue)
  
      # POS tagging
      pos_tags = pos_tag(words)
  
      # Define stop words
      stop_words = set(stopwords.words('english'))
  
      # Extract topics based on POS tags
      topics = []
      for word, tag in pos_tags:
          if tag.startswith('NN') or tag.startswith('VB'):
              lemma = lemmatizer.lemmatize(word.lower())
              if lemma not in stop_words:
                  topics.append(word)
  
      return topics