La tua funzione è sbagliata dato che restituisci tutta la lista che ti è stata passata (quindi non l'hai filtrata) appena incontri una parola che ti interessa. Puoi riscriverla così:
codice:
def return_tag(tokens_t):
    ret = []
    for t,part in tokens_t:
        if part==("NN") or part==("JJ") or part==("VB") or part ==("RB"):
            ret.append((t,part))
    return ret
Ti puoi risparmiare quell'if gigante mettendo i termini che ti interessano in un set:
codice:
def return_tag(tokens_t):
    interesting_types = set(["NN", "JJ", "VB", "RB")
    ret = []
    for t,part in tokens_t:
        if part in interesting_types:
            ret.append((t,part))
    return ret
Infine, quel for con l'if che accumula risultati è esattamente il pattern della list comprehension:
codice:
def return_tag(tokens_t):
    interesting_types = set(["NN", "JJ", "VB", "RB")
    return [(t,part) for t,part in tokens_t if part in interesting_types]