Read text and return lists of different parts of speech
For some more typing up front, you can make the parsing slightly easier.

This uses the fact that two variables can point to the same (even mutable) object:

def find_pos(tokens):
    tagged = nltk.pos_tag(tokens)
    # Define all lists (just like before), here with tuple unpacking:
    common_nouns, verbs, adjectives, pronouns, adverbs, proper_nouns, conjunctions, prepositions, interjections, modals, tagged_others, other = [
        [] for _ in range(12)]

    # Define a dictionary mapping from the positions to the lists:
    d = {'NN': common_nouns, 'NNS': common_nouns,
         'VB': verbs, 'VBD': verbs, 'VBG': verbs, 'VBN': verbs, 'VBP': verbs, 'VBZ': verbs,
         ...}

    # Use it like this:
    for token in tagged:
        d[token[1]].append(token)
    ...




Alternatively, do the calculations afterwards:

from collections import defaultdict


def find_pos(tokens):
    tagged = nltk.pos_tag(tokens)

    d = defaultdict(list)
    for token in tagged:
        d[token[1]].append(token)

    def t(*pos):
        return sum([d[x] for x in pos], [])

    return [t('NN', 'NNS', 'NNP', 'NNPS'),
            t('NN', 'NNS'),
            t('VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ'),
            ...]