def find_nouns(tagged_words, skip_words_in_nlp = 0):
    """
    Compile a list of nouns in tagged word list

    Note: treebankTagger works better than standard nltk.pos_words(). Tags can
    be compiled with
        treebank_tagger = nltk.data.load(
            'taggers/maxent_treebank_pos_tagger/english.pickle')
        tagged_words = treebank_tagger.tag(tokens)

    :param list tagged_words: Tagged word list from an NLTK tagger
    :param int skip_words_in_nlp: During noun search, if the initial word(s) of
        a sentence should not be considered, pass a value > 0. For example
        in a sentence "define word" where "define" is an expected trigger
        word, skipping it will avoid having it misclassified in the noun
        list.
    :return: List of nouns
    :rtype: list
    """

    nouns = list()
    current = False

    for word, pos in tagged_words[skip_words_in_nlp:]:
        if pos[0:2] != 'NN' and current:
            nouns.append(current)
            current = False

        if pos[0:2] != 'NN':
            continue

        if not current:
            current = word
        else:
            # If multiple NN* tags follow, combine the word back into a single noun
            current += " " + word

    if current:
        nouns.append(current)

    return nouns