code: def add_args(parser):
      PytorchTranslateTask.add_args(parser)
  
      """Add semi-supervised arguments to the parser."""
      parser.add_argument(
          "--train-mono-source-text-file",
          default="",
          help="Path for the text file containing monolingual source "
          "training examples.",
      )
      parser.add_argument(
          "--train-mono-target-text-file",
          default="",
          help="Path for the text file containing monolingual target "
          "training examples.",
      )
      parser.add_argument(
          "--monolingual-ratio",
          default=None,
          type=float,
          metavar="N",
          help="Upper-bounds the number of monolingual examples to N times "
          "the amount of parallel data.",
      )
      parser.add_argument(
          "--loss-weights-json",
          default="",
          help="JSON representation of `loss_weights`:"
          "[[num_epochs, {'model_key': weight, ...}], ...]",
      )
  
imports: import json
  from collections import OrderedDict
  from typing import Optional
  from fairseq import models
  from fairseq.data import BacktranslationDataset, LanguagePairDataset, RoundRobinZipDatasets, TransformEosDataset
  from fairseq.models import FairseqMultiModel
  from fairseq.tasks import register_task
  from pytorch_translate import beam_decode, constants, rnn
  from pytorch_translate.data import data, dictionary, utils, weighted_data
  from pytorch_translate.tasks.pytorch_translate_multi_task import PyTorchTranslateMultiTask
  from pytorch_translate.tasks.pytorch_translate_task import PytorchTranslateTask
label_desc: Use image node_id 2 for calling the PytorchTranslateSemiSupervised obj's underlying member method code with example usage: obj.add_args(parser) without return types