class_docstr: A class implementing the chatbot problem for the OpenSubtitles dataset.
  
  http://opus.nlpl.eu/OpenSubtitles-v2018.php
class_docstr_tok: ["A","class","implementing","the","chatbot","problem","for","the","OpenSubtitles","dataset",".","http",":","\/\/opus.nlpl.eu\/OpenSubtitles-v2018.php"]
docstr: Extract data and go to the next step.
  
  Args:
    train_mode: string, whether we are in train, dev or test mode
docstr_tok: ["Extract","data","and","go","to","the","next","step",".","Args",":","train_mode",":","string",",","whether","we","are","in","train",",","dev","or","test","mode"]
code: def extract_data(self, train_mode):
      """Extract data and go to the next step.
  
      Args:
        train_mode: string, whether we are in train, dev or test mode
      """
  
      if (
          self._zipped_data[-3:] == "zip"
          or self._zipped_data[-2:] == "gz"
      ):
          zip_file = zipfile.ZipFile(self._zipped_data, "r")
      else:
          print(
              "problem_log: "
              + self._zipped_data
              + " is not a .zip or .gz file, so I can't extract it."
          )
  
      zip_file.extractall(self._raw_data_dir)
      zip_file.close()
  
      # Next step is creating the source, target and vocab files.
      print(
          "problem_log: Creating "
          + train_mode
          + " files in "
          + self._data_dir
      )
      self.create_data(train_mode)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import collections
  import os
  import re
  import zipfile
  from tensor2tensor.data_generators import dialog_abstract
  from tensor2tensor.data_generators import text_encoder
  from tensor2tensor.utils import registry
label_desc: Use image node_id 3 for calling the DialogOpensubtitles64k2009 obj's underlying member method code with example usage: obj.extract_data(train_mode) without return types