code: def get_20newsgroups(num_samples):
      categories = [
          "alt.atheism",
          "talk.religion.misc",
          "comp.graphics",
          "sci.space",
      ]
      X, y = fetch_20newsgroups(
          subset="train", categories=categories, return_X_y=True
      )
      return (
          pd.DataFrame(data=X, columns=["description"])
          .assign(label=y)
          .sample(n=num_samples)
      )
  
imports: import math
  import os
  import lightning
  import pandas
  import torch
  import torch.nn.functional
  import torchtext.datasets
  from lightning.pytorch.callbacks import EarlyStopping, LearningRateMonitor, ModelCheckpoint
  from lightning.pytorch.cli import LightningCLI
  from sklearn.datasets import fetch_20newsgroups
  from sklearn.metrics import accuracy_score
  from sklearn.model_selection import train_test_split
  from torch import nn
  from torch.utils.data import DataLoader
  from torch.utils.data.dataset import random_split
  from torchdata.datapipes.iter import IterDataPipe
  from torchtext.data.functional import to_map_style_dataset
  from torchtext.datasets import AG_NEWS
  from transformers import BertModel, BertTokenizer
  import mlflow.pytorch
label_desc: Use image node_id 1 for calling a global function with example usage: get_20newsgroups(num_samples) and returns: pd