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ì:
Ti puoi risparmiare quell'if gigante mettendo i termini che ti interessano in un set: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
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") ret = [] for t,part in tokens_t: if part in interesting_types: ret.append((t,part)) return ret
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]

Rispondi quotando
