def _get_token_distance(self, doc: Document, e1: Entity, e2: Entity): if 'entities_token_distance_in_classifier' not in self.classifier_converters: return {} return { 'entities_token_distance_in_classifier': self.classifier_converters['entities_token_distance_in_classifier'] [e1.token_distance_to(e2)] }
def _get_relation_features(doc, e1: Entity, e2: Entity, converters, name_postfix): features = {} feature_name = "rel_args_in_{}".format(name_postfix) converter = converters.get(feature_name, None) if converter is not None: features[feature_name] = converter[(e1.type, e2.type)] feature_name = "entities_token_distance_in_{}".format(name_postfix) converter = converters.get(feature_name, None) if converter is not None: features[feature_name] = converter[e1.token_distance_to(e2)] feature_name = "entities_token_log_distance_in_{}".format(name_postfix) converter = converters.get(feature_name, None) if converter is not None: features[feature_name] = converter[e1.token_distance_to(e2)] feature_name = "entities_sent_distance_in_{}".format(name_postfix) converter = converters.get(feature_name, None) if converter is not None: features[feature_name] = converter[ get_sentence_distance_between_entities(doc, e1, e2)] feature_name = "rel_dir_in_{}".format(name_postfix) converter = converters.get(feature_name, None) if converter is not None: features[feature_name] = converter[ RelExtFeatureExtractor._get_direction_feature(e1, e2)] for ent_num, ent in enumerate((e1, e2)): feature_name = "entities_types_in_{}_{}".format( name_postfix, ent_num) converter = converters.get(feature_name, None) if converter is not None: features[feature_name] = converter[ent.type] return features