from typing import Tuple, List | |
from pytorch_ie.annotations import BinaryRelation, Span, LabeledMultiSpan | |
from pytorch_ie.core import Annotation | |
def decode_span_without_label(ann: Annotation) -> Tuple[Tuple[int, int], ...]: | |
if isinstance(ann, Span): | |
return (ann.start, ann.end), | |
elif isinstance(ann, LabeledMultiSpan): | |
return ann.slices | |
else: | |
raise ValueError("Annotation must be a Span or LabeledMultiSpan") | |
def to_binary_relation_without_argument_labels(ann: Annotation) -> Tuple[Tuple[Tuple[int, int], ...], Tuple[Tuple[int, int], ...], str]: | |
if not isinstance(ann, BinaryRelation): | |
raise ValueError("Annotation must be a BinaryRelation") | |
return ( | |
decode_span_without_label(ann.head), | |
decode_span_without_label(ann.tail), | |
ann.label, | |
) | |