code: def split(self, filePath=None, numLabels=3, textPreprocess=False, dataDict=None,
              abbrCSV="", contrCSV="", ignoreCommon=100,
              removeStrings="[identifier deleted]", correctSpell=True):
      
      if filePath:
        dataDict = readCSV(filePath, numLabels=numLabels)
  
      if dataDict is None:
        raise Exception("No data given, or could not read CSV.")
  
      preprocessor = TextPreprocess(abbrCSV=abbrCSV, contrCSV=contrCSV)
      expandAbbr = (abbrCSV != "")
      expandContr = (contrCSV != "")
  
      for recordNum, record in dataDict.iteritems():
        comment, categories, uniqueID = record
        
        # Convert the categories to a string of their IDs
        categories = string.join([str(self.categoryToId[c]) for c in categories])
  
        if textPreprocess:
          tokens, _ = preprocessor.tokenizeAndFilter(
              comment, ignoreCommon, removeStrings, correctSpell, expandAbbr,
              expandContr)
        else:
          tokens = preprocessor.tokenize(comment)
  
        data = self._formatSequence(tokens, categories, recordNum, uniqueID)
  
        self.records.append(data)
        self.sequenceCount += 1
      
      return dataDict
docs: Split all the comments in a file into tokens, w/ or w/o preprocessing.
      Specifying both filePath and dataDict will prefer filePath.
  
      @param filePath        (str)    Path to csv file
      @param dataDict        (dict)   Data as returned by readCSV()
      @param numLabels       (int)    Number of columns of category labels.
      @param textPreprocess  (bool)   True will preprocess text while tokenizing.
      
      @return dataDict       (dict)   Data as read in from filePath.
  
      Please see TextPreprocess tokenize() for the other parameters; they're only
      used when textPreprocess is True.