code: def build_model_filename(paths, short_name, command_args, extra_args):
      short_language, dataset = short_name.split("_", 1)
  
      # TODO: can avoid downloading the charlm at this point, since we
      # might not even be training
      pretrain_args = build_pretrain_args(
          short_language,
          dataset,
          command_args.charlm,
          command_args,
          extra_args,
      )
  
      dataset_args = DATASET_EXTRA_ARGS.get(short_name, [])
  
      train_args = ["--shorthand", short_name, "--mode", "train"]
      train_args = (
          train_args + pretrain_args + dataset_args + extra_args
      )
      if command_args.save_name is not None:
          train_args.extend(["--save_name", command_args.save_name])
      if command_args.save_dir is not None:
          train_args.extend(["--save_dir", command_args.save_dir])
      args = ner_tagger.parse_args(train_args)
      save_name = ner_tagger.model_file_name(args)
      return save_name
  
file_path: stanza/stanza/utils/training/run_ner.py
imports: import logging
  import os
  from stanza.models import ner_tagger
  from stanza.resources.common import DEFAULT_MODEL_DIR
  from stanza.utils.datasets.ner import prepare_ner_dataset
  from stanza.utils.training import common
  from stanza.utils.training.common import Mode, add_charlm_args, build_charlm_args, choose_charlm, find_wordvec_pretrain
  from stanza.resources.default_packages import default_charlms, default_pretrains, ner_charlms, ner_pretrains
label_desc: Use image node_id 3 for calling a global function with example usage: build_model_filename(paths, short_name, command_args, extra_args) and returns: save_name