def __init__(self, predicate, training_data):
     self.predicate = predicate
     self.predominant_types = map(
         lambda t: t.split('/')[-1], 
         CandidatesSelector.get_predominant_types(predicate, False)
     )
     self.model_filename = 'crfmodel-%s' % predicate
     self.features_train_filename = 'features_train'
     self.features_tag_filename = 'features_tag'
     try:
         open(models_cache_path % self.model_filename)
     except IOError:
         self.train(training_data)