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]