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
      charlm_args = build_pos_charlm_args(
          short_language, dataset, command_args.charlm
      )
      bert_args = common.choose_transformer(
          short_language, command_args, extra_args, warn=False
      )
  
      train_args = ["--shorthand", short_name, "--mode", "train"]
      # TODO: also, this downloads the wordvec, which we might not want to do yet
      train_args = (
          train_args
          + wordvec_args(short_language, dataset, extra_args)
          + charlm_args
          + bert_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 = tagger.parse_args(train_args)
      save_name = tagger.model_file_name(args)
      return save_name
  
file_path: stanza/stanza/utils/training/run_pos.py
imports: import logging
  import os
  from stanza.models import tagger
  from stanza.resources.default_packages import no_pretrain_languages, pos_pretrains, default_pretrains
  from stanza.utils.training import common
  from stanza.utils.training.common import Mode, add_charlm_args, build_pos_charlm_args, choose_pos_charlm, find_wordvec_pretrain
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