def _get_sentence_positions_to_span(doc: Document, start_token: int, end_token: int, wrt_span): _, _, sent_idx = wrt_span return [ sent_idx - doc.get_token_sent_idx(idx) for idx in range(start_token, end_token) ]
def _get_attention_features(self, doc: Document, sent: Sentence, t1_idx: int, t2_idx: int) -> dict: attention_features = {} for namespace, idx in zip(['head', 'dep'], [t1_idx, t2_idx]): position_features = self.token_position_fe.extract_features_from_doc( doc, sent.start_token, sent.end_token, (idx, idx + 1, doc.get_token_sent_idx(idx))) attention_features.update(namespaced(position_features, namespace)) attention_features.update( self._get_arc_features(doc, sent, t1_idx, t2_idx, self.attention_features_converters, "attention")) return attention_features