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)
    ]
Exemple #2
0
    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