Exemplo n.º 1
0
def test_spans():
    # bioes tags
    sentence = Sentence("Zalando Research is located in Berlin .")
    sentence[0].add_tag("ner", "B-ORG")
    sentence[1].add_tag("ner", "E-ORG")
    sentence[5].add_tag("ner", "S-LOC")
    sentence._convert_span_labels("ner")

    spans: List[SpanLabel] = sentence.get_labels("ner")

    assert 2 == len(spans)
    assert "Zalando Research" == spans[0].span.text
    assert "ORG" == spans[0].value
    assert "Berlin" == spans[1].span.text
    assert "LOC" == spans[1].value

    # bio tags
    sentence = Sentence("Zalando Research is located in Berlin .")
    sentence[0].add_tag("ner", "B-ORG")
    sentence[1].add_tag("ner", "I-ORG")
    sentence[5].add_tag("ner", "B-LOC")
    sentence._convert_span_labels("ner")

    spans: List[SpanLabel] = sentence.get_labels("ner")

    assert "Zalando Research" == spans[0].span.text
    assert "ORG" == spans[0].value
    assert "Berlin" == spans[1].span.text
    assert "LOC" == spans[1].value

    # broken tags
    sentence = Sentence("Zalando Research is located in Berlin .")
    sentence[0].add_tag("ner", "I-ORG")
    sentence[1].add_tag("ner", "E-ORG")
    sentence[5].add_tag("ner", "I-LOC")
    sentence._convert_span_labels("ner")

    spans: List[SpanLabel] = sentence.get_labels("ner")

    assert "Zalando Research" == spans[0].span.text
    assert "ORG" == spans[0].value
    assert "Berlin" == spans[1].span.text
    assert "LOC" == spans[1].value

    # all tags
    sentence = Sentence("Zalando Research is located in Berlin .")
    sentence[0].add_tag("ner", "I-ORG")
    sentence[1].add_tag("ner", "E-ORG")
    sentence[2].add_tag("ner", "aux")
    sentence[3].add_tag("ner", "verb")
    sentence[4].add_tag("ner", "preposition")
    sentence[5].add_tag("ner", "I-LOC")
    sentence._convert_span_labels("ner")

    spans: List[SpanLabel] = sentence.get_labels("ner")
    assert 5 == len(spans)
    assert "Zalando Research" == spans[0].span.text
    assert "ORG" == spans[0].value
    assert "Berlin" == spans[4].span.text
    assert "LOC" == spans[4].value

    # all weird tags
    sentence = Sentence("Zalando Research is located in Berlin .")
    sentence[0].add_tag("ner", "I-ORG")
    sentence[1].add_tag("ner", "S-LOC")
    sentence[2].add_tag("ner", "aux")
    sentence[3].add_tag("ner", "B-relation")
    sentence[4].add_tag("ner", "E-preposition")
    sentence[5].add_tag("ner", "S-LOC")
    sentence._convert_span_labels("ner")

    spans: List[SpanLabel] = sentence.get_labels("ner")
    assert 5 == len(spans)
    assert "Zalando" == spans[0].span.text
    assert "ORG" == spans[0].value
    assert "Research" == spans[1].span.text
    assert "LOC" == spans[1].value
    assert "located in" == spans[3].span.text
    assert "relation" == spans[3].value

    sentence = Sentence(
        "A woman was charged on Friday with terrorist offences after three "
        "Irish Republican Army mortar bombs were found in a Belfast house , "
        "police said . "
    )
    sentence[11].add_tag("ner", "S-MISC")
    sentence[12].add_tag("ner", "B-MISC")
    sentence[13].add_tag("ner", "E-MISC")
    sentence._convert_span_labels("ner")

    spans: List[SpanLabel] = sentence.get_labels("ner")
    assert 2 == len(spans)
    assert "Irish" == spans[0].span.text
    assert "Republican Army" == spans[1].span.text

    sentence = Sentence("Zalando Research is located in Berlin .")

    # tags with confidence
    sentence[0].add_tag("ner", "B-ORG", 1.0)
    sentence[1].add_tag("ner", "E-ORG", 0.9)
    sentence[5].add_tag("ner", "S-LOC", 0.5)
    sentence._convert_span_labels("ner")

    spans: List[SpanLabel] = sentence.get_labels("ner")

    assert 2 == len(spans)
    assert "Zalando Research" == spans[0].span.text
    assert "ORG" == spans[0].value
    assert 0.95 == spans[0].score

    assert "Berlin" == spans[1].span.text
    assert "LOC" == spans[1].value
    assert 0.5 == spans[1].score