code: def try_to_guess_data_keys(
      self, column_names: List[str]
  ) -> Optional[Dict[str, str]]:
      primary_key_name = None
      primary_key_name_candidates = ["sentence", "text", "premise"]
      for name in column_names:
          if any(
              candidate in name
              for candidate in primary_key_name_candidates
          ):
              primary_key_name = name
              break
  
      secondary_key_name = None
      secondary_key_name_candidates = ["hypothesis"]
      for name in column_names:
          if any(
              candidate in name
              for candidate in secondary_key_name_candidates
          ):
              secondary_key_name = name
              break
  
      if primary_key_name is None:
          return None
      elif secondary_key_name is None:
          logger.info(
              "Could not infer the secondary key in the dataset, if it does contain one, please provide it manually."
          )
          return {"primary": primary_key_name}
      else:
          return {
              "primary": primary_key_name,
              "secondary": secondary_key_name,
          }
  
file_path: optimum/optimum/utils/preprocessing/text_classification.py
imports: import copy
  import logging
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
  from transformers import PreTrainedTokenizerBase
  from .base import TaskProcessor
label_desc: Use image node_id 3 for calling the TextClassificationProcessing obj's underlying member method code with example usage: obj.try_to_guess_data_keys(column_names) and returns: None, dict, dict