code: def process_text_embedding(
      self,
      sample_list: Dict[str, Any],
      embedding_attr: str = "text_embeddings",
  ) -> Tuple[torch.Tensor, torch.Tensor]:
      # Get "text" attribute in case of "text_embeddings" case
      # and "context" attribute in case of "context_embeddings"
      texts = getattr(sample_list, embedding_attr.split("_")[0])
  
      # Get embedding models
      text_embedding_model = getattr(self, embedding_attr)
  
      # TODO: Move this logic inside
      if isinstance(text_embedding_model, PreExtractedEmbedding):
          text_embedding_total = text_embedding_model(
              sample_list.question_id
          )
      else:
          (
              text_embedding_total,
              text_embedding_vec,
          ) = text_embedding_model(texts, sample_list.text_mask)
  
      return text_embedding_total, text_embedding_vec
  
imports: import copy
  from typing import Any, Dict, List, Optional, Tuple
  import omegaconf
  import torch
  from mmf.common.registry import registry
  from mmf.models.base_model import BaseModel
  from mmf.modules.embeddings import PreExtractedEmbedding, TextEmbedding, TwoBranchEmbedding
  from mmf.modules.layers import BranchCombineLayer, ClassifierLayer
  from mmf.utils.build import build_image_encoder
  from mmf.utils.general import filter_grads
  from omegaconf import DictConfig
label_desc: Use image node_id 16 for calling the MoVieMcan obj's underlying member method code with example usage: obj.process_text_embedding(sample_list, embedding_attr) and returns: text_embedding_total,  text_embedding_vec