class_docstr: Data Processor for SGD dialogues.
  
  More information at https://arxiv.org/abs/1909.05855
  
  ***Downloading the dataset***
      #   git clone https://github.com/google-research-datasets/dstc8-schema-guided-dialogue.git
  
  ***Data format***
  SGD data comes with a JSON schema file and dialogue files for each dataset split. 
  
  In the following we will show an example for a service entry in the schema file.
  * service_name
  * description
  * slots
      * name
      * description
      * is_categorical
      * possible values
  * intents
      * name
      * description
      * required_slots (not used)
      * is_transactional (not used)
      * optional_slots (not used)
      * result_slots (not used)
  
  
  In the following we will show an example for a dialogue. 
  * dialogue_id
  * services
  * turns
      * frames
          * actions
              * act
              * slot
              * values
          * service
          * slots
              * exclusive_end
              * slot
              * start
          * state
              * active_intent
              * requeste_slots
              * slot_values 
      * speaker - [USER, SYSTEM]
      * utterance
docstr: Preprocesses dialogues and saves to disk.
  Args:
      overwrite_dial_files: whether or not to overwrite saved file if already exists
docstr_tok: ["Preprocesses","dialogues","and","saves","to","disk",".","Args",":","overwrite_dial_files",":","whether","or","not","to","overwrite","saved","file","if","already","exists"]
code: def save_dialog_examples(self, overwrite_dial_files: bool):
      """
      Preprocesses dialogues and saves to disk.
      Args:
          overwrite_dial_files: whether or not to overwrite saved file if already exists
      """
      for dataset in ["train", "dev", "test"]:
          dial_file = self.dial_files[(self._task_name, dataset)]
          if not os.path.exists(dial_file) or overwrite_dial_files:
              logging.info(
                  f"Start generating the dialogue examples for {dataset} dataset."
              )
              if not os.path.exists(self._dialogues_example_dir):
                  os.makedirs(self._dialogues_example_dir)
              (
                  dial_examples,
                  slots_relation_list,
              ) = self._generate_dialog_examples(
                  dataset, self.schemas, self._subsample
              )
  
              with open(dial_file, "w", encoding="UTF-8") as f:
                  json.dump([i.data for i in dial_examples], f)
  
              if dataset == "train":
                  with open(self.slots_relation_file, "wb") as f:
                      pickle.dump(slots_relation_list, f)
                  logging.info(
                      f"The slot carry-over list for train set is stored at {self.slots_relation_file}"
                  )
  
              logging.info(
                  f"The dialogue examples for {dataset} dataset saved at {dial_file}"
              )
              logging.info(
                  f"Finish generating the dialogue examples for {dataset} dataset."
              )
  
imports: import collections
  import json
  import os
  import pickle
  import re
  from typing import List
  from nemo.collections.nlp.data.dialogue.data_processor.data_processor import DialogueDataProcessor
  from nemo.collections.nlp.data.dialogue.input_example.input_example import DialogueInputExample
  from nemo.collections.nlp.data.dialogue.sgd.schema import Schema
  from nemo.utils import logging
  from nemo.utils.get_rank import is_global_rank_zero
label_desc: Use image node_id 2 for calling the DialogueSGDDataProcessor obj's underlying member method code with example usage: obj.save_dialog_examples(overwrite_dial_files) without return types