natural language toolkit transformationbased learning c 20012023 nltk project marcus uneson marcus unesongmail com based on previous nltk2 version by christopher maloof edward loper steven bird url https www nltk org for license information see license txt returns a list of errors in string format returns a list of humanreadable strings indicating the errors in the given tagging of the corpus param trainsents the correct tagging of the corpus type trainsents listtuple param testsents the tagged corpus type testsents listtuple natural language toolkit transformation based learning c 2001 2023 nltk project marcus uneson marcus uneson gmail com based on previous nltk2 version by christopher maloof edward loper steven bird url https www nltk org for license information see license txt returns a list of errors in string format returns a list of human readable strings indicating the errors in the given tagging of the corpus param train_sents the correct tagging of the corpus type train_sents list tuple param test_sents the tagged corpus type test_sents list tuple
def error_list(train_sents, test_sents):
    
    hdr = ("%25s | %s | %s\n" + "-" * 26 + "+" + "-" * 24 + "+" + "-" * 26) % (
        "left context",
        "word/test->gold".center(22),
        "right context",
    )
    errors = [hdr]
    for (train_sent, test_sent) in zip(train_sents, test_sents):
        for wordnum, (word, train_pos) in enumerate(train_sent):
            test_pos = test_sent[wordnum][1]
            if train_pos != test_pos:
                left = " ".join("%s/%s" % w for w in train_sent[:wordnum])
                right = " ".join("%s/%s" % w for w in train_sent[wordnum + 1 :])
                mid = f"{word}/{test_pos}->{train_pos}"
                errors.append(f"{left[-25:]:>25} | {mid.center(22)} | {right[:25]}")

    return errors