Beispiel #1
0
def test_issue_14():
    nlp = spacy.load("en_core_sci_sm")
    negex = Negex(nlp,
                  language="en_clinical",
                  chunk_prefix=["no", "cancer free"])
    negex.remove_patterns(following_negations="free")
    nlp.add_pipe(negex, last=True)
    print(negex.get_patterns())

    doc = nlp("The patient has a cancer free diagnosis")
    expected = [False, True]
    for i, e in enumerate(doc.ents):
        print(e.text, e._.negex)
        assert e._.negex == expected[i]

    nlp.remove_pipe("Negex")
    negex = Negex(nlp, language="en_clinical", chunk_prefix=["no", "free"])
    nlp.add_pipe(negex, last=True)
    doc = nlp("The patient has a cancer free diagnosis")
    expected = [False, False]
    for i, e in enumerate(doc.ents):
        print(e.text, e._.negex)
        assert e._.negex == expected[i]
Beispiel #2
0
def test_add_remove_patterns():
    nlp = spacy.load("en_core_web_sm")
    negex = Negex(nlp)
    patterns = negex.get_patterns()
    negex.add_patterns(
        pseudo_negations=["my favorite pattern"],
        termination=["these are", "great patterns"],
        preceding_negations=["wow a negation"],
        following_negations=["extra negation"],
    )
    patterns_after = negex.get_patterns()
    print(patterns_after)
    print(len(patterns_after["pseudo_patterns"]))
    assert len(patterns_after["pseudo_patterns"]) - 1 == len(
        patterns["pseudo_patterns"]
    )
    assert len(patterns_after["termination_patterns"]) - 2 == len(
        patterns["termination_patterns"]
    )
    assert len(patterns_after["preceding_patterns"]) - 1 == len(
        patterns["preceding_patterns"]
    )
    assert len(patterns_after["following_patterns"]) - 1 == len(
        patterns["following_patterns"]
    )

    negex.remove_patterns(
        termination=["these are", "great patterns"],
        pseudo_negations=["my favorite pattern"],
        preceding_negations="denied",
        following_negations=["unlikely"],
    )
    negex.remove_patterns(termination="but")
    negex.remove_patterns(
        preceding_negations="wow a negation", following_negations=["extra negation"]
    )
    patterns_after = negex.get_patterns()
    assert (
        len(patterns_after["termination_patterns"])
        == len(patterns["termination_patterns"]) - 1
    )
    assert (
        len(patterns_after["following_patterns"])
        == len(patterns["following_patterns"]) - 1
    )
    assert (
        len(patterns_after["preceding_patterns"])
        == len(patterns["preceding_patterns"]) - 1
    )
    assert len(patterns_after["pseudo_patterns"]) == len(patterns["pseudo_patterns"])