          }
  
          if self.tagger:
              self.tagger.model.dump(str(path / 'pos' / 'model'))
          if self.parser:
              self.parser.model.dump(str(path / 'deps' / 'model'))
 
</s> remove             self.parser.model.end_training()
 </s> add  </s> remove             self.tagger.model.end_training()
 </s> add  </s> remove             self.entity.model.end_training()
 </s> add  </s> remove     def end_training(self, path=None):
        if path is None:
            path = self.path
        elif isinstance(path, basestring):
            path = pathlib.Path(path)
 </s> add     def save_to_directory(self, path):
        configs = {
            'pos': self.tagger.cfg if self.tagger else {},
            'deps': self.parser.cfg if self.parser else {},
            'ner': self.entity.cfg if self.entity else {},
        } </s> remove         strings_loc = path / 'vocab' / 'strings.json'
        with strings_loc.open('w', encoding='utf8') as file_:
            self.vocab.strings.dump(file_)
        self.vocab.dump(path / 'vocab' / 'lexemes.bin')

 </s> add     def end_training(self, path=None):
        self.setup_directory(path, **configs)
        
        strings_loc = path / 'vocab' / 'strings.json'
        with strings_loc.open('w', encoding='utf8') as file_:
            self.vocab.strings.dump(file_)
        self.vocab.dump(path / 'vocab' / 'lexemes.bin')
        # TODO: Word vectors?
          }
  
        self.setup_directory(path, **configs)
        
        strings_loc = path / 'vocab' / 'strings.json'
        with strings_loc.open('w', encoding='utf8') as file_:
            self.vocab.strings.dump(file_)
        self.vocab.dump(path / 'vocab' / 'lexemes.bin')
        # TODO: Word vectors?
          if self.tagger:
              self.tagger.model.dump(str(path / 'pos' / 'model'))
          if self.parser:
              self.parser.model.dump(str(path / 'deps' / 'model'))
keep add keep keep keep keep
 Refactor Language.end_training, making new save_to_directory method 
spacy/language.py