<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_vocab(docs):
 """ Build a DataFrame containing all the words in the docs provided along with their POS tags etc <BLANKLINE> word pos tag dep ent_type ent_iob sentiment 0 ! PUNCT . punct O 0.0 1 Hey INTJ UH intj O 0.0 2 Man NOUN NN ROOT PERSON I 0.0 3 Mr. PROPN NNP compound O 0.0 4 Tangerine PROPN NNP compound PERSON B 0.0 """

    if isinstance(docs, spacy.tokens.doc.Doc):
        return get_vocab([docs])
    vocab = set()
    for doc in tqdm(docs):
        for tok in doc:
            vocab.add((tok.text, tok.pos_, tok.tag_, tok.dep_, tok.ent_type_, tok.ent_iob_, tok.sentiment))
    # TODO: add ent type info and other flags, e.g. like_url, like_email, etc
    return pd.DataFrame(sorted(vocab), columns='word pos tag dep ent_type ent_iob sentiment'.split())