def is_meaningful_token(token, remove_numbers=True, remove_urls=True, remove_emails=True):
    """
    Indicates whether the given token should be included in the list of processed words.
    That is, the word must not be a stopword, a punctuation mark, and optionally not be a number,
    URL, or email address.
    is_token_meaningful(token, remove_numbers, remove_urls, remove_emails)

    token: spaCy Span object
        The span object of the token/string to be processed
    remove_numbers: bool; optional (default = True)
        True if numbers/digits should be excluded from the list of tokens.
    remove_urls: bool; optional (default = True)
        True if urls should be excluded from the list of tokens.
    remove_emails: bool; optional (default = True)
        True if email addresses should be excluded from the list of tokens.
    
    Returns bool; True if the token should be included in the list of processed words
    """     
    
    if token.is_stop or token.is_punct:
        return False
    elif remove_numbers and token.like_num:
        return False
    elif remove_urls and token.like_url:
        return False
    elif remove_emails and token.like_email:
        return False
    else: 
        return True