code: def process_df(
      df,
      sentence_column="SentenceID",
      word_column="Word",
      tag_column="Tag",
      verbose=1,
  ):
      """
      Extract words, tags, and sentences from dataframe
      """
  
      # get words and tags
      words = list(set(df[word_column].values))
      n_words = len(words)
      tags = list(set(df[tag_column].values))
      n_tags = len(tags)
      if verbose:
          print(
              "Number of sentences: ",
              len(df.groupby([sentence_column])),
          )
          print("Number of words in the dataset: ", n_words)
          print("Tags:", tags)
          print("Number of Labels: ", n_tags)
  
      # retrieve all sentences
      getter = SentenceGetter(
          df, word_column, tag_column, sentence_column
      )
      sentences = getter.sentences
      largest_sen = max(len(sen) for sen in sentences)
      if verbose:
          print("Longest sentence: {} words".format(largest_sen))
      data = [list(zip(*s)) for s in sentences]
      X = [list(e[0]) for e in data]
      y = [list(e[1]) for e in data]
      return (X, y)
  
imports: from ...None import utils
  from ...imports import *
  from ...preprocessor import Preprocessor
  from ..None import preprocessor
  from ..None import textutils
label_desc: Use image node_id 4 for calling a global function with example usage: process_df(df, sentence_column, word_column, tag_column, verbose) and returns: X,  y