Esempio n. 1
0
    def test_align_different_start(self):
        ref = annotations.LabelList(labels=[
            annotations.Label('b', 4, 9)
        ])

        hyp = annotations.LabelList(labels=[
            annotations.Label('b', 2, 8)
        ])

        result = alignment.InvariantSegmentAligner().align(ref, hyp)

        assert len(result) == 3

        segment = result[0]
        assert segment.start == 2
        assert segment.end == 4
        assert segment.ref == []
        assert segment.hyp == [annotations.Label('b', 2, 8)]

        segment = result[1]
        assert segment.start == 4
        assert segment.end == 8
        assert segment.ref == [annotations.Label('b', 4, 9)]
        assert segment.hyp == [annotations.Label('b', 2, 8)]

        segment = result[2]
        assert segment.start == 8
        assert segment.end == 9
        assert segment.ref == [annotations.Label('b', 4, 9)]
        assert segment.hyp == []
Esempio n. 2
0
    def test_align(self):
        ref = annotations.LabelList(labels=[
            annotations.Label('a', 0, 3),
            annotations.Label('b', 3, 6),
            annotations.Label('c', 7, 10)
        ])

        hyp = annotations.LabelList(labels=[
            annotations.Label('a', 0, 3),
            annotations.Label('b', 4, 8),
            annotations.Label('c', 8, 10)
        ])

        result = alignment.InvariantSegmentAligner().align(ref, hyp)

        assert len(result) == 6

        segment = result[0]
        assert segment.start == 0
        assert segment.end == 3
        assert segment.ref == [annotations.Label('a', 0, 3)]
        assert segment.hyp == [annotations.Label('a', 0, 3)]

        segment = result[1]
        assert segment.start == 3
        assert segment.end == 4
        assert segment.ref == [annotations.Label('b', 3, 6)]
        assert segment.hyp == []

        segment = result[2]
        assert segment.start == 4
        assert segment.end == 6
        assert segment.ref == [annotations.Label('b', 3, 6)]
        assert segment.hyp == [annotations.Label('b', 4, 8)]

        segment = result[3]
        assert segment.start == 6
        assert segment.end == 7
        assert segment.ref == []
        assert segment.hyp == [annotations.Label('b', 4, 8)]

        segment = result[4]
        assert segment.start == 7
        assert segment.end == 8
        assert segment.ref == [annotations.Label('c', 7, 10)]
        assert segment.hyp == [annotations.Label('b', 4, 8)]

        segment = result[5]
        assert segment.start == 8
        assert segment.end == 10
        assert segment.ref == [annotations.Label('c', 7, 10)]
        assert segment.hyp == [annotations.Label('c', 8, 10)]
Esempio n. 3
0
    def test_align_empty_hypothesis(self):
        ref = annotations.LabelList(labels=[
            annotations.Label('b', 4, 8)
        ])

        hyp = annotations.LabelList(labels=[
        ])

        result = alignment.InvariantSegmentAligner().align(ref, hyp)

        assert len(result) == 1

        segment = result[0]
        assert segment.start == 4
        assert segment.end == 8
        assert segment.ref == [annotations.Label('b', 4, 8)]
        assert segment.hyp == []
Esempio n. 4
0
    def test_align_with_empty_segments(self):
        ref = annotations.LabelList(labels=[
            annotations.Label('a', 0, 3),
            annotations.Label('b', 4, 6),
        ])

        hyp = annotations.LabelList(labels=[
            annotations.Label('a', 0, 3),
            annotations.Label('c', 5, 8),
        ])

        result = alignment.InvariantSegmentAligner().align(ref, hyp)

        assert len(result) == 5

        segment = result[0]
        assert segment.start == 0
        assert segment.end == 3
        assert segment.ref == [annotations.Label('a', 0, 3)]
        assert segment.hyp == [annotations.Label('a', 0, 3)]

        segment = result[1]
        assert segment.start == 3
        assert segment.end == 4
        assert segment.ref == []
        assert segment.hyp == []

        segment = result[2]
        assert segment.start == 4
        assert segment.end == 5
        assert segment.ref == [annotations.Label('b', 4, 6)]
        assert segment.hyp == []

        segment = result[3]
        assert segment.start == 5
        assert segment.end == 6
        assert segment.ref == [annotations.Label('b', 4, 6)]
        assert segment.hyp == [annotations.Label('c', 5, 8)]

        segment = result[4]
        assert segment.start == 6
        assert segment.end == 8
        assert segment.ref == []
        assert segment.hyp == [annotations.Label('c', 5, 8)]
Esempio n. 5
0
    def test_align_with_overlapping_labels(self):
        ref = annotations.LabelList(labels=[
            annotations.Label('a', 0, 3),
            annotations.Label('b', 3, 6),
            annotations.Label('bx', 4, 5),
            annotations.Label('c', 7, 10)
        ])

        hyp = annotations.LabelList(labels=[
            annotations.Label('a', 0, 3),
            annotations.Label('b', 4, 8),
            annotations.Label('c', 8, 10),
            annotations.Label('cx', 9, 11)
        ])

        result = alignment.InvariantSegmentAligner().align(ref, hyp)

        assert len(result) == 9

        segment = result[0]
        assert segment.start == 0
        assert segment.end == 3
        assert segment.ref == [annotations.Label('a', 0, 3)]
        assert segment.hyp == [annotations.Label('a', 0, 3)]

        segment = result[1]
        assert segment.start == 3
        assert segment.end == 4
        assert segment.ref == [annotations.Label('b', 3, 6)]
        assert segment.hyp == []

        segment = result[2]
        assert segment.start == 4
        assert segment.end == 5
        assert segment.ref == [annotations.Label('b', 3, 6), annotations.Label('bx', 4, 5)]
        assert segment.hyp == [annotations.Label('b', 4, 8)]

        segment = result[3]
        assert segment.start == 5
        assert segment.end == 6
        assert segment.ref == [annotations.Label('b', 3, 6)]
        assert segment.hyp == [annotations.Label('b', 4, 8)]

        segment = result[4]
        assert segment.start == 6
        assert segment.end == 7
        assert segment.ref == []
        assert segment.hyp == [annotations.Label('b', 4, 8)]

        segment = result[5]
        assert segment.start == 7
        assert segment.end == 8
        assert segment.ref == [annotations.Label('c', 7, 10)]
        assert segment.hyp == [annotations.Label('b', 4, 8)]

        segment = result[6]
        assert segment.start == 8
        assert segment.end == 9
        assert segment.ref == [annotations.Label('c', 7, 10)]
        assert segment.hyp == [annotations.Label('c', 8, 10)]

        segment = result[7]
        assert segment.start == 9
        assert segment.end == 10
        assert segment.ref == [annotations.Label('c', 7, 10)]
        assert segment.hyp == [annotations.Label('c', 8, 10), annotations.Label('cx', 9, 11)]

        segment = result[8]
        assert segment.start == 10
        assert segment.end == 11
        assert segment.ref == []
        assert segment.hyp == [annotations.Label('cx', 9, 11)]
Esempio n. 6
0
 def __init__(self, aligner=None):
     if aligner is None:
         self.aligner = alignment.InvariantSegmentAligner()
     else:
         self.aligner = aligner